码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象第二单元总结

时间:2020-04-18 23:04:18      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:资源   线程   过程   添加   创建   bug   面向   单元   面向对象   

面向对象第二单元总结

设计策略

调度器

负责协调输入线程和电梯线程,维护等待乘客的队列,负责给电梯分配任务,负责分析乘客应该在哪层换乘。电梯可以从队列中获取乘客的信息,输入部分也可以向队列中添加乘客的信息。调度器要保证两个部分是线程安全的。

电梯

维护自己从调度器获取的等待乘客的队列,可以从调度器获取乘客的信息。不关心怎样接人效率高、不关心有没有载人、不关心载的人在几层下。电梯需要知道的只是要往几层跑以及到一层时要不要开门。

输入部分

负责向调度器提供乘客请求的信息

乘客

工具人,没有自己的思想,电梯到了就上,让在哪层换乘就在哪层换乘,到达目的楼层就离开电梯。

可扩展性分析

  • 在设计上采取了工厂模式来进行电梯类对象的创建,可扩展性比较好
  • 电梯、调度器和输入是分别进行工作的,对于某一类的扩展不会影响到其他类的工作
  • 在电梯调度上主要采取了随机分配的方法,对于多个电梯对象的情况下可能会出现问题
  • 在换乘问题上是针对特定情况下进行的换乘方案,可扩展性比较差

程序结构分析

第五次作业

UML

技术图片

复杂度分析

技术图片

第六次作业

UML

技术图片

复杂度分析

技术图片

第七次作业

UML

技术图片

复杂度分析

技术图片

自己程序的bug

由于在调度电梯的时候我采取的方式是随机分配,即所有电梯竞争一个资源,所以有可能出现一个电梯竞争到了所有的资源,而其他电梯还空着的情况,从而造成RTE。

寻找他人bug的策略

记录下自己的测试样例,尤其是自己调试过程中出错的样例,然后对他人的代码进行测试。

心得体会

在这一单元的学习过程中,我学会了java多线程的使用方法,并且了解了java项目的一些基本架构。

线程安全方面,一是注意临界资源使用的同步,二是注意避免死锁,临界区应该尽量的短,不用同步时立即释放锁,尽力避免锁内拿锁。

设计方面,应该分离各部分功能,使得更改要求时不至于全部更改,注意对一个类功能的抽象,建立完后审视,那些是这个,类必须具有的方法,那些是这个类可有可无的方法,对类进行瘦身,才能在后来更好的继承,增加功能总比增删功能要简单些也不容易出错。

面向对象第二单元总结

标签:资源   线程   过程   添加   创建   bug   面向   单元   面向对象   

原文地址:https://www.cnblogs.com/spookydreamr/p/12728378.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!