第八次oo做业

做业五

做业五是当前最后一次电梯做业,也是咱们第一次接触到多线程编程,输入方式也由以前的一次性输入变为了实时输入,其中涉及到大量的同步和冲突,其中学习多线程的使用也花了大量的时间,但总的来讲为之后的做业打下了基础。git

类图

代码分析


从上述分析来看,这次做业仍然存在God类,究其缘由主要是由于第一次接触多线程,使用不熟练,致使对电梯使用多线程时不敢将太多逻辑置于电梯类中,从而致使了大量逻辑代码都留在了调度类中,但调度类中的方法较之于以前已经更加详细具体了,方法之间已经尽可能作到了高内聚低耦合。编程

总结

因为从第一次作电梯做业开始,我就是使用的模拟的方式,因此程序总体的逻辑上没有进行大的修改,但因为这次多线程的使用,尤为是多台电梯之间捎带和请求分配之间的问题,依然存在着不小的问题,因此到最后提交时,依然存在着bug————调度类中逻辑较为复杂,并且因为多线程控制不到位,对于请求队列没有彻底实现线程安全,致使会出现多个电梯同时分到同一个请求的状况发生。但因为修改量的巨大,因此未能完成修改,而测试者也将为完成的修改形成的bug找了出来。

除此以外,这次做业的时间控制也不够精确,这次做业没有考虑到程序执行带来的大量偏差,直接采用了sleep(3000)的方式,致使随着程序的运行,偏差会愈来愈大,以致于超过偏差限度。
但这次做业也第一次采用了构建一个State类的方式,将经常使用到的状态量定义为常量,极大的提升了代码总体的可阅读性。
安全

做业六

做业六是要求实现一个简单的ifttt,将咱们所学内容与实际运用结合了起来,但因为对于文件操做的不熟练,在编写代码时也遇到了不小的问题。多线程

类图

代码分析


这次做业代码量和风格的控制较于第五次做业有了较大的提高,同时对于多线程也可以较为熟练的运用了,这次做业的自由度较之于以前的做业也有所提升,故readme的书写也应该被逐渐重视起来。

这次做业被找出了一个bug,但严格意义上来讲并不能算是bug————在编写代码的时候发现一个问题,若是对于两个除了名称其他彻底相同的文件,如a,b,若是在两次扫描周期中咱们将b重命名为c,将a重命名为b,对于程序来讲其实并很差判断其到底是上述操做仍是直接将a重命名为了c,因此我在readme中定义若是发现有重命名,并且有多个符合要求的文件,那么我会随机选一个视为修改,对于其余的,例如路径移动也是同理。但测试者可能由于没有仔细阅读个人readme,因此报了几个bug,所有都是由于这个缘由。同时我测试的同窗也考虑到了相似的事情,但他的readme中定义方式为对于上述这种状况,不能在同一个周期内同时操做两个除了文件名其他属性均相同的文件。代码中实现方式为将上一次扫描中没有出现的文件做为修改后的文件,能够说彻底杜绝了这种状况的发生。在最后考虑到本身在readme中定义的是出现了某种状况应该怎么解释,而不是如何避免出现这种容易致使矛盾的操做,因此我最后也赞成留下一个bug。

总的来讲,这次做业是比较熟练地使用了多线程编程,但仍有一些没有考虑充分的地方,在之后的做业中也能够多注意一下这一块。
eclipse

做业七

类图

此次做业是第一次出租车做业,相对于以前的几个线程,这次直接将出租车数量提升到了100个,对于此我是采用了开了100个出租车线程来解决,但同时也带来了内存占用巨大的结果,也有同窗采用伪多线程的方式(如我测试的同窗),采用循环来执行这100个出租车。对于此种方式我认为也算是一种解决问题的方式,但也难以锻炼本身多线程编程的能力,尤为是对于线程安全的控制,因此在之后的做业中我依然会采用100个出租车线程的方式。
学习

代码分析


这次做业的代码风格算是这么屡次做业以来最好的一次,加之这次也较为强调代码规范问题,因此总体来看代码基本能实现一看就懂的程度了。

但这次做业也是最不甘心的一次,可是多是由于eclipse的bug,我最后一次提交时,本地显示已经提交了,但git上并无提交,因此最后互测的时候交的是一个错误的版本,致使了这次做业的bug都是本来可以避免的。同时因为这次做业最开始没有发现本身的代码没有成功上传,因此在互测时测试者发现的bug在我这彻底不能复现,甚至让我怀疑对方是在恶意找bug,不过好在最后发现及时(就没来得及进行代码层面之外的交流了)但也给我提醒了之后在上传了代码之后最好可以再下载一遍以确认是否正确。

这次做业作得比较好的一点(虽然最后代码没传上去)是时间控制,我一直都采用的系统时间,没有进行假时间的操做,因此这次在State类中我能够说是本身定义了一系列新的时间方法,例如sleep时首先将当前时间进行计算,计算出真实的须要sleep的时间后再执行,能够说这次做业在时间上的偏差是严格限制在了偏差范围之类的。
测试

心得体会

这几回做业都是多线程做业,随着几回做业的进行,我对于多线程的运用也逐渐熟悉了起来,同时代码风格和规范也获得了不小的提高,像以前做业中的每次新的做业基本都要重写一遍代码的状况能够说基本也不会再出现了。但愿本身在后面的学习中可以获得更大的提高。线程

相关文章
相关标签/搜索