oo第二单元作业总结

第二单元oo作业总结

第一次作业

1、设计策略

将电梯与请求输入作为两个线程,在调用时直接将请求队列作为二者的共享对象,减少了线程数。在电梯调度上,可以使用先来先服务算法,每到一层判断是否可捎带,满足条件就捎带。

2、基于度量分析

(1)作业类图如下

oo第二单元作业总结_第1张图片

(2)依赖关系如下

oo第二单元作业总结_第2张图片

 

 

 

其中,Requestqueue类中的方法getQueue复杂度较高,因为它用于判断是否需要捎带,条件较多,与电梯类关联也比较大。

(3)UML协作图如下

oo第二单元作业总结_第3张图片

第二次作业

1、设计策略

在第一次作业基础上,优化了电梯运行,使用LOOK算法。同时在main中利用循环按需生成电梯线程。

2、基于度量分析

(1)作业类图如下

oo第二单元作业总结_第4张图片

(2)依赖性分析如下

oo第二单元作业总结_第5张图片

 

 

 

其中RequestQueue类中的checkdir方法复杂度较高。因为这个方法是look算法的关键,用于检测当前方向上是否还有未被响应的需求。如果有需求则继续行进,否则掉头。需要对需求队列进行遍历,故复杂度高。

(3)UML协作图如下

oo第二单元作业总结_第6张图片

第三次作业

1、设计策略

在第二次作业的基础上,添加了电梯工厂类,用于按需生成不同型号的电梯。

2、架构设计

扩展性不够好,如果增加需求,或许会需要大规模改动代码。

(1)单一责任原则

这一部分做的不太好,因为虽然有Elefactory这个类,但是在生成固定的A\B\C三个电梯时,仍需在Main类里一个个敲参数参数,使得类的功能不够独立。

(2)开放封闭原则

这一部分的问题在于,如果需要增减不同规格的电梯,除了需要更改Elefactory类,还需要在与电梯无关的RequestQueue类里更改相关条件。

(3)里氏替换原则

三个电梯子类与电梯父类基本可以满足需求。

(4)依赖倒置原则

电梯类的方法抽象性不佳,导致这一原则未能得到较好满足。

(5)接口分离原则

代码中没有接口。

3、基于度量分析

(1)作业类图如下

oo第二单元作业总结_第7张图片

(2)依赖性分析如下

oo第二单元作业总结_第8张图片

 

 

 仍是RequestQueue类中的checkdir方法复杂度较高。原因同上。

(3)UML协作图如下

oo第二单元作业总结_第9张图片

单元总结

本单元作业参考了github上的往年代码,出现查重率高的问题。回顾本单元,虽然确实每次都能按时提交作业,但在线程安全、算法设计等方面,由于缺乏自己的思考与探索,很多地方认识不到位,我也感到非常遗憾和懊悔。在本单元结束以后,我也将继续通过课外学习加深自己对本单元知识的认识与理解。这种以完成作业为导向的学习并不可取,每次作业都是锻炼自己能力的一个机会,敷衍作业实际上是对自己的不负责任。下个单元我将吸取教训,多一些自己独立的思考。

你可能感兴趣的:(oo第二单元作业总结)