OO第八次作业
Posted Aaa_14
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OO第八次作业相关的知识,希望对你有一定的参考价值。
(1)从多线程的协同和同步控制方面,分析和总结自己三次作业来的设计策略及其变化。
首先,第五次作业从单线程过渡到了多线程,这是一个难度的飞跃。我几乎用了一天的时间才理清该怎么写,但最后写出来的却是一个不完整的多线程。因为我没有模拟真实时间,所以捎带和同质根本判断不出来,只能跑一些简单的比如(FR,1,UP)。第六次作业我大概知道该怎么写了,但是在监控对象是目录的情况下却卡住了,用了一天的时间才把目录弄明白。第七次作业与第五次作业大同小异,这次我模拟了真实时间,感觉效果还不错。
(2)基于度量来分析自己的程序结构
第五次作业:四个类,Elevator、Scheduler、Requeue、Request类,分别有3、3、7、5个属性,分别有7、6、8、7个方法,分别有77,399,174,47行。第六次作业:4个类,Main,Monitor,Safefile,Summary类,分别有0、14、0、4个属性,分别有0、10、16、6个方法,分别有64、250、120、43行。第七次作业:五个类,Dispatch、Input、Main、Request、Taxi类,分别有2、2、0、5、11个属性,分别有4、2、0、6、17个方法,分别有82、76、58、79、285行。
类图(以第六次作业为例):
经典的OO度量(以第七次作业为例):
至于设计缺陷以及不足我已经在(1)中说明了。
(3)分析自己程序的bug
第五次作业:未真实模拟时间,未使用继承机制,无法处理捎带以及同质指令。
第六次作业:未发现bug。
第七次作业:地图文件不存在时会crash,地图文件中空格无法处理,时间精度有问题。
(4)分析自己发现别人程序bug所采用的策略
认真分析公测结果。
(5) 心得体会
我明白了如何设计多线程的程序,以及如何边输入边输出,如何处理请求队列和调度器的关系。要把输入单独作为一个线程而不是写在main里。我明白了对文件的各种操作,以及如何设计线程安全的类,重写方法并把所有的方法加上synchronized。以及用深度优先搜索求出目录下的所有文件,以及用广度优先搜索求出最短路径,我明白了如何在多个类中共享对象,就是把变量作为构造方法的参数传进去。至于线程安全,我基本上把run中所有代码直接synchronized了。
以上是关于OO第八次作业的主要内容,如果未能解决你的问题,请参考以下文章