OO第二次总结

Only through the blood of finger , Can play out in the world alongside.

  • OO的课程转眼就过了一半,最近的这三次作业里我们练习了多线程的设计与编码,无论是难度还是所花的时间都大大上升了。虽然经历了痛苦,但也有很大收获。

作业分析

第五次作业

类图

  • 与之前最大的差别就是电梯类写成了自动机,调度器通过修改三个电梯的状态,每台电梯自己是一个线程,于是会自己跑,从而实现多线程的调度。

度量图

  • 从度量图中可以看出,这一次作业写的还是很丑的,一个是嵌套比较深,由于是自动机写法,有比较多的if-else,再一个就是传参的过程中由于传了一个比较大的对象,这样写还是不太安全,下次要改进。

时序图

分析

  • 第五次作业是多线程的电梯,这一次是第一次写多线程,最关键的地方在于多个线程同时调用公共资源时,也就是托盘上的请求时,要注意线程的安全,我是使用synchronize来解决这个问题的。
  • 公测与互测
    自己的bug:输出时没有把空格过滤。算是没有看讨论区吃的亏,在输出request时自己以为输出原来的输入即可,没有输出过滤后的。
    对方的bug:无。

第六次作业

类图

  • 对于每一个监控指令建一个monitor线程来监控,一旦发现文件有触发条件则用detail以及summary来输出。

度量图

  • 这一次依旧有代码嵌套太多以及由于使用深搜导致块深度过大的原因,可以再多尝试不同的写法来提高自己的编码能力。

时序图

分析

  • 第六次作业写的是文件检测系统,比较难的地方在于,监控文件夹时,由于有很多文件,所以要采用搜索的办法,要将各种文件的属性给存起来然后再进行判断。
  • 公测与互测
    自己的bug:
    1.recover非法组合时由于打错了打成了recober没有检测出来,僵硬。
    2.(自己不认为是bug的地方)在提供给测试者测试线程时,写了一个sleep,本意是让测试者在后面写,不过测试者认为测试线程是可以自己改的,所以就他在sleep前写会出现别的线程还没有处理完的情况,就会出错。
    3.忘记使用UTF-8了,僵硬。
    对方的bug:renamed和path-changed在文件很多的情况,会出现检测不到的bug。

第七次作业

类图

  • 值得注意的地方是,有三种线程同时与queue有关:
    user类实时跟新queue种的请求;
    controller类通过请求来更新queue中taxi类的状态;
    taxi类通过queue来调整自己的状态。

度量图

  • 这一次较上两次有了进步,不过嵌套还是太多,说明写的还是太过于冗长了,还要继续改进。

时序图

分析

  • 第七次作业写的是出租车调度系统,这一次主要练习的是设计,也就是将出租车,调度器,请求对象给分好,设计好他们之间的关系然后再写,这样写会好很多。
  • 公测与互测
    自己的bug:
    1.读取的地图没有忽略空格。
    2.没有按照设计的标准中的准我原则与接口设计。
    对方的bug:无。

心得体会

  • 不足:
    在设计过程中细节考虑的还是不够到位,还需要在未来的设计之中多花时间思考细节。
    代码编写的还不够简介,以后要多在编码技巧上花功夫,来提高自己的写代码能力
  • 继续保持:
    对于功能的测试自己还算测的比较多,所以功能性的bug基本没有。
    在作业时间的把握上也还行,基本没有肝过,把写作业的时间分散到了平时。
    这两点还要再未来继续保持下去。
原文地址:https://www.cnblogs.com/reynolds/p/8977897.html