OO第四次总结&学期总结

一、第四单元架构设计

这两次的作业是对UML类图、顺序图、状态图的解析。

第一次作业只是对UML类图的解析,并实现一些基本的查询操作,第二次作业引入顺序图状态图,增加了对顺序图状态图的查询操作,还实现了对类图的有效性检查操作。

这两次作业在架构设计方面我没做好。我只是简单的利用HashMap对一些需要的查询进行存储。对架构色剂没有清楚的理解,这种设计对后面的第二次作业的程序扩展造成了巨大的阻碍,而且对程序可读性也很差,做的确实不好。

第一次的作业需要对UML类图按照层次进行封装,包括类、接口、操作、关系;

第二次的作业可以在第一次的架构基础上进行扩展实现

二、四个单元中架构设计及OO方法理解的演进

第一单元作业是对多项式进行化简求导,主要的注意力主要放在了对正则表达式的识别处理上,我设计了表达式对象、项对象、因子对象,都各自实现了求导操作。这个单元的作业的坑点在于各种多项式错误的识别处理。这单元对于架构设计并没有过多注意,页不清楚好的架构设计对于程序可扩展性,可读性,debug有怎样的益处

第二单元是电梯系列,分别是傻瓜电梯(先进先服务策略,并且不顺路捎带)、智能电梯(第一次的基础上实现顺路捎带)、多部智能电梯调度;第一次的作业没有注意架构设计,没有实现电梯对象,就利用调度器从请求队列中按顺序取请求,进行输出。第二次作业建立了调度器对象和电梯对象,设计了三个线程:输入线程、调度器线程、电梯线程,两种请求队列(第一种是输入线程项线程放入请求,调度器从中取请求,其实就是第一次电梯作业的队列(用户请求队列),还有一个是电梯捎带请求时将原请求插入队列,然后执行完捎带的请求就将原请求又取出来继续执行(命名为电梯请求队列))。调度器线程不断地扫描请求队列与电梯状态对比看是否符合捎带,如果符合就把这个请求插到电梯请求队列,如果队列为空调度器线程等待。电梯线程从电梯请求队列取出请求执行,如果队列为空电梯线程就等待。第三次电梯作业是实现三部有顺路捎带功能的电梯,这三部电梯的某些性质不一样(运动速度、停靠楼层、最大容纳人数)。这次作业可以不用重构,但是电梯类需要改一下,添加一些属性:运动速度、停靠楼层、最大容纳人数。其他的设计与第二次电梯作业一样。为了能满足换乘请求,输入线程在插入请求时,将不能直达的请求拆分成几个分段请求,执行完一段请求,就将下一段请求加入请求队列由调度器进行调度执行。

第三单元作业比较简单,是按照JML规格语言写程序,比较简单。这单元的作业架构设计做的较好,使得程序扩展很方便,JML规格语言给了一个通用标准的方式来表达对类和方法的详细设计。这单元的难点在于对无向图(带权或者不带权)的存储以及对最短路径的查询算法。

最后一单元就是要将各种元素(例如类图中:类、接口、关系…)进行抽象,并完成各种查询操作。

三、测试理解与实践

第一单元的测试:利用自己在测试自己的程序过程中遇到的异常情况进行测试数据设计,就是对一些边界情况进行测试。

第二单元的bug出现多是因为各种程序上的小毛病导致线程可能无法结束,出现死循环的情况,这种情况需要对程序的架构设计较为清楚,用设置断点等的方法进行debug

第三单元按照规格写代码,使用Junit进行测试。

第四单元,对不同的查询操作分别设计不同的测试场景,例如接口实现查询操作,实现场景应包括(接口间的继承、一个类实现多个接口、接口多重继承、父类子类之间的继承)。这样很容易找出自己程序的问题。

四、课程收获

熟练了java语言,,并对面向对象有了清楚的理解;

对程序的架构设计的优点有更深入的了解和认识;

对程序测试方法有了更多的了解

编程能力和debug能力的提升

五、建议

中测难度可以适当加强,强测中也会经常出现同质bug,希望可以对强测数据进行改进

猜你喜欢

转载自www.cnblogs.com/mujiangtao1234/p/11076572.html