作者:xz7777 | 来源:互联网 | 2023-08-30 14:37
第五次作业类图:度量图:UML时序图:第五次作业中的电梯和调度器都用到了线程机制,然后在run方法中用到了很多的if-else,所以导致了嵌套比较深。由于这是第一次
第五次作业类图:
度量图:
UML时序图:
第五次作业中的电梯和调度器都用到了线程机制,然后在run方法中用到了很多的if-else,所以导致了嵌套比较深。由于这是第一次接触写文件和多线程,在没有合理安排时间下,这是过了提交时间后我才写出来的,所以被评为无效作业了,也就没了公测和互测,写完后自己也不断地对其进行调试完善。虽然这次作业没能有效,但是我通过这次作业初步的了解多线程的使用和多线程之间的同步问题,以及对文件进行基本的创建和写入操作。
第六次作业类图:
第六次作业度量图:
UML时序图:
由于上次作业的无效,我给这次作业空出了更多的时间去完成,结果还是令我满意的,虽然后面在提交截至时心血来潮把run方法里分成多个方法去调用,这样让代码看起来没那么多,但是忘了文件转移后应该返回监控对象于是就出了能跟踪但是没把原来的监控对象换成新对象并导致触发器一直被触发的bug。互测上匹配到的代码除了输入上有点小问题其他地方都做的很好,他的测试线程也写得很详细,相关的测试方法也都一并给出。在代码风格以及方法调用上是一个非常有借鉴意义的代码!
第七次作业类图:
度量图:
UML时序图:
第七次作业中虽然给的GUI有着500多行很吓人,但是他的接口等方面做得都比较完善,这让我使用起来也比较方便,这次作业中我发现了自己在出租车抢单窗口结束后抢单出租车的测距上出现的问题,我程序中每部出租车都有一个Poing【】队列来存出租车运行路径,我测距的依据是各个抢单出租车当前所存的队列长度来进行判断的,但我没注意到这时候出租车没有被分配请求所以Point【】队列为空,这导致在多部出租车进行抢单时,程序就会卡在分配出租车的方法里,导致后续的指令也无法进行调度。还有就是由于未知原因我的程序无法同时读入多行请求,中间我通过修改scanner类的使用方法成功读入多行一次但后面又不行了,现在还是一头雾水。互测代码使用了一些不符合懂我原则的设计,这给我在阅读代码时带来了很大的困难,但最后还是发现了对方对数组边界未进行约束,而可能出现越界crash。
心得与体会
这三次作业都很难,多线程之间的同步,资源的占用,输出文件的实时交互等等,这些都需要很细心地去思考和设计,在写作业时的考量中以及实验课上的作业中我也收获了协调多线程之间资源占用的方法。不足之处还是自己在代码设计的一些细节上还会疏忽大意,希望自己以后的作业中能尽量规避。