oo面向对象第二单元总结

oo第二单元小结
1.三次作业思路
在第一次作业中,笔者用的是轮询方式来进行操作。
总体思路在于建立三个类,控制输入类(main),电梯类(电梯线程Elev),人员信息类(Person)
在作业给出的类包中,有关于人员信息类,但是笔者在使用过程中,增加了一项关于判断人员上下电梯的状态state,因此选择了新建一个包。
整个程序的运行流程是,控制输入流输入人员信息,进入电梯序列中,当电梯输入流结束时,进行电梯中人员的判断,当电梯序列中所有人都送出去后,电梯线程结束。在电梯的调度中,选择了捎带的调度方式,具体实现方式为,把序列中第一位乘客作为主请求,在实现主请求的过程中,若经过的楼层有人上电梯,或电梯中的其他人要下电梯,则将目标放出。
在第二次作业中,基本与第一次作业没有太大的变化,稍微修改了一些时间,就很轻松的通过了。
在第三次作业中,给出了三个电梯,对于每个电梯的调度依旧采用的时捎带请求的实现方式。重点在于解决多线程的冲突上,以及实现换乘问题上。为了解决换乘问题,笔者增加了一个调度器Controller来实现换乘,举例:当人1完成A电梯后,将人1在B电梯的序列请求激活,继续进行B电梯的操作。
2.类图
因为第一次电梯与第二次电梯基本没有差别,所以从第二次作业开始放图。
第二次电梯:

第三次电梯:


3.bug分析
在第一次作业中,主要未通过是因为对于多线程并不是特别了解
在第二次作业中,并未发现bug
在第三次作业中,因为调度算法并不是特别优秀,所以造成了超时而出bug
4.bug与改进
在第一次作业中,因为对于整体多线程的编程并不是特别了解,造成了最后还是没能通过的情况。
在第二次作业中,在第一次的基础上进行了修改,并利用空闲的时间完善了第一次作业,就很容易通过了。
在第三次作业中,在电梯的换乘中加入了调度器,主要处理了换乘问题。在强侧中因为算法不够精炼而被炸掉,做出了一定的优化后通过了。
5.心得体会。
Java从单线程到多线程是一种思维的大转变,虽然多线程的思考量多了,但是整体的代码量变少了,相比于第一单元的计算器求导,还是和谐的多了。对于课上的内容,感觉是给了一定的思路,但是在整体的思维方式上还是更多靠与同学交流来完善的。

posted @ 2019-04-24 15:12  皮卡丘爱吃橙子  阅读(200)  评论(0编辑  收藏  举报