OO第二单元小结

一、度量分析程序结构

1. UML类图分析

1.1 第一次作业UML类图

 

1.2 第二次作业UML类图 

1.3 第三次作业UML类图 

1.4 分析结构

  在多线程的第二单元里,我三次作业代码的代码结构前两次十分相似,最后一次有了一些进步,在电梯内部声明定义了一个控制模块用来和容器交互。我觉得我对于多线程的理解到现在为止也不算太好,进程之间的等待和通知还需进一步理解。

 

2. MetricsLoaded代码分析

2.1 第一次作业

2.2 第二次作业

2.3 第三次作业 

2.4 代码圈复杂度分析

  第一次和第二次代码结构相似,电梯类内部的run函数复杂度很高,因为当时实现的时候,把电梯所有的调度,转向,上下乘客全部写在了一起,所以v(G)就会很高。

  在第三次作业中,将调度分离,写在了一个调度器类里,复杂度就随之下降了。

  第一次和第二次作业较高的圈复杂度也意味着更高的维护复杂度,所以在第三次作业增加电梯时就进行了重构- -

3. Statistics代码分析

3.1 第一次作业 

3.2 第二次作业 

3.3 第三次作业 

3.4 代码量分析

   三次作业的代码量在逐渐增长,在第一单元的三次作业中,我几乎没有编写注释,这给日后的维护带来了很大的麻烦,我会在以后的作业中注意这个问题。

 

二、漏洞分析

1 第一次作业

  在这次作业中,出现的问题是在主线程(输入线程)中采用了轮询的方式查看电梯线程是否结束,这样的方法导致了电梯线程可能在下客完毕之后,未关门之前就被主程序结束。

2 第二次作业

  在这次作业中,出现的问题和第一次非常像,也用了相同的办法处理。

3 第三次作业

  在这次作业中,又出现了关不上门的情况,多电梯之后,代码变得比较复杂,之前在主程序里的判断由于我加锁方式复杂,不太奏效,最终采取了室友的方法,在电梯内部进行进程终结。

 

三、互测方法

  手玩数据点  

 

四、总结

  通过这个单元的学习,我艰难地完成了多线程编程的入门,这些在多线程中新出现的概念,比如同步、锁、原子操作,理解容易,运用起来非常困难。在这个单元踩了许多坑,也学到了一些知识。学到了怎样把一个不线程安全的类如ArrayList,通过包装使其变的线程安全。我的多线程编程能力还十分不足,应该多阅读高质量代码以求进步。  

 

转载于:https://www.cnblogs.com/Yang-OO-Blogs/p/10753977.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值