oo第八次作业

一、第五次作业分析


(1)设计策略及其变化

  第五次作业是多线程电梯,这也是第一次接触多线程,我采用的是ppt中的设计方法,将前两次的请求队列变成一个作为共享资源的托盘类,调度器不断扫描请求队列向满足电梯队列中增加请求,同时三个电梯线程根据分配到的指令运动并且不断更新自己的状态。托盘类也进行了线程安全设计,将其中的所有方法都进行上锁,保证了数据同步。这次作业不仅需要对多线程的理解,而且我在前两次的作业的电梯运动设计上不能很好的满足这次的要求,所以进行了重构,实现了电梯一层一层运动,每到一层检测该层是否有要执行的指令,之后的设计也变得方便许多。

 

(2)程序结构分析

度量:

类图:

时序图:

 

二、第六次作业分析

(1)设计策略及其变化

这次作业的指导书给我的感觉和大多数同学的是一样的,就是不太明白指导书的意思,花了好多时间在理解指导书和issue的问题上,这次作业重点强调了线程安全的设计,建立了线程安全的文件类,我的这次作业的设计是对于每一个指令都建立一个监视线程,监视线程每隔1秒扫描一次监视范围并和之前的快照比对,如果触发器触发,执行响应的操作。和上一次多线程电梯不同的是,这一次作业对线程安全要求更高,自己在编写代码的过程中有意识地注意到这一问题。

 

(2)程序结构分析

度量:

类图:

时序图:

三、第七次作业分析

(1)设计策略及其变化

第七次作业出租车调度,这次的设计思路较为明确,出租车信息作为共享对象,出租车线程和调度器线程通过访问共享对象实现并发运行,调度器线程设置一个3秒抢单窗口,通过扫描所有出租车的状态信息进行选择,之后再将任务分配给符合条件的出租车。

(2)程序结构分析

度量:

 类图:

时序图:

 

四、分析自己的bug

(1)第五次作业

  第五次作业在处理主指令同层的捎带指令上被报了一个bug,以及输入处理上存在一些问题。

(2)第六次作业

  在对文件夹的监视上有一些问题,出现了crash的情况。

(3)第七次作业

  输出经过路径的时间时我的设计有一个小问题,就是第一个点我多了200ms导致和到达乘客位置的时间不符。

(4)总结

  这三次作业的大体设计没有出现太大问题,主要还是自己测试程序没有全面导致一些细节的地方出现错误,以后应该多花一点时间在测试和readme的完善上面。

 

五、发现别人的程序的bug所采用的策略

  我分到的这三次作业代码都很完善,基本没有什么功能性bug,在输入输出上有一两个小bug,我在测试别人程序时先用之前测试自己程序时构造的一些样例测试,然后通读对方的程序,看看有什么逻辑上的问题,可以根据他的代码来构造有针对性的样例,这样更容易发现对方的bug。

 

六、心得体会

  这三次作业下来,对线程安全的了解进一步加深,在设计之前要重点分析线程的交互情况以及共享对象的设置,要有一个清晰正确的设计思路才能进行编程,还有就是要积极和同学交流,和同学一起讨论有助于对指导书的理解并且对自己的设计思路有一定完善。

 

posted @ 2018-05-02 14:32  jun_xiao  阅读(131)  评论(0编辑  收藏  举报