OO第二单元总结

一、设计思想

第一次作业:基于ALS的调度算法,采用生产者-消费者模式,实现单部电梯的简单捎带。

第二次作业:在第一次电梯的基础上,由单部电梯扩展为多部电梯,每部电梯自己从请求队列中获取请求,各自独立调度、独立运行。

第三次作业:在第二次电梯的基础上,电梯的容量、停靠层数互不相同,对于每一条输入的乘客请求,先解析其是否需要换乘,需要的话则将其拆分为两个请求,第二个请求为第一个请求的后续换乘请求,当第一个请求完成时,则将后续请求放进待执行请求队列。

二、程序分析

(一)程序结构分析

第一次作业:

类图:

OO第二单元总结_第1张图片

 

 复杂度:

OO第二单元总结_第2张图片

OO第二单元总结_第3张图片

耦合度:OO第二单元总结_第4张图片

第二次作业:

类图:

OO第二单元总结_第5张图片

 

 复杂度:OO第二单元总结_第6张图片

OO第二单元总结_第7张图片

耦合度:

OO第二单元总结_第8张图片

第三次作业:

类图:

OO第二单元总结_第9张图片

 

 复杂度:

OO第二单元总结_第10张图片

 

 OO第二单元总结_第11张图片

 

OO第二单元总结_第12张图片

OO第二单元总结_第13张图片

耦合度:

 

 OO第二单元总结_第14张图片

(二)BUG分析

由于第一、二次作业用while(...){sleep()}进行暴力轮询,第三次的CPU时间直接爆炸了,应该严格使用wait notify。

第三次作业由于每种电梯规格不同,在run()里面大量重复造轮子,导致代码看起来非常冗杂。

三、总结

代码要尽可能简洁规范。

前面埋下的雷没有及时清除,之后迟早会爆(

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