BUAA_OO_第四单元总结
面向对象第四单元总结
一、总结本单元作业的架构设计
第一次作业
这一次的作业在MyUmllinteraction中进行解析因为这回作业并没有超500行,就没有把它另开一个类解析出来相应的类接口以及操作后存进MyClass,MyInterface,MyOperation中,并且在MyClass,MyInterface中记录了相应的父类。当读取到Association和InterfaceRealization的时候,在每个类中设置了一个关联列表,将被关联的对象的Id填见进去就行了,接口也是同理。
第二次作业
第二次作业加了时序图和状态图,我采取的也是和第一次作业相同的解析方法,解析到了相应的元素创建相应的类或是将元素加进类中

时序图的类包括MyLifeline和MyInteraction。状态图的类包括MyFinalState、MyPseudostate、MyRegion、MyState、MyStateMachine以及MyTransition。
应该打包的
第三次作业
第三次因为加了一个规格判断,导致超了500行,所以新创了一个check类。并且将解析的部分也分出来,创建了一个analysis类。

其他架构与第四次一样。只是改了存储的方式,因为接口可以重复,不能用HashMap要用ArrayList来存。
二、总结在四个单元中架构设计及OO方法理解的演进
第一个单元
第一个单元应该说是最痛苦的一个单元,几乎是从零开始写因为没做pre,连提交都不会,基本的架构都是学第一次实验课上的架构,将每个因子拆开,但是这样应付第一次作业还可以,但是第二次作业加了括号之后,很难处理,不得不选择重构。但是当时对于面向对象的思想不是很理解,导致第二次作业完全是面向过程编程,只用了一个类。但是经过同学的帮助,了解了面向对象的思想。要分层,要抽象出来,不能混在一起,要将功能拆分。经过一个星期的学习之后,在第三次作业的时候,分了很多个类,其中一个是用来格式检查,也是在那个时候,我的OO应该说是步入正轨。
第二个单元
这个单元学了多线程,架构的设计也是模仿实验课上的架构,细节方面进行了调整。这个单元需要注意的就是对于锁的使用,什么时候该加锁,该加锁,各个线程之间的执行顺序,共享侯乘列表谁获取,以及最终如何终止的问题。
经过第一个单元的学习,我能够较好地将结构剖析出来。分析电梯的各个部分
这个单元对于OO的理解就是一些设计模式,策略模式,工厂模式等等。
第三个单元
第三个单元的架构基本不用自己考虑,自己照着翻译就行。但是但是,这样极易tle,自己要去考虑复杂度的问题,凡事On^2的复杂度的话,基本就要tle了。所以在这个单元我对于OO的方法理解就是一些容器的选择上,像优先队列的使用。
第四个单元
这个单元层次化非常清楚,基本分析一下功能,就能知道相应的类应该怎么样去设计。这个单元OO方法理解是UML的理解,各个成员的意义以及一些联系,以及将功能拆分,封装,一个类只干一件事的思想。高内聚低耦合。
三、总结在四个单元中测试理解与实践的演进
第一个单元因为连完成都困难,基本上没有测试,只是自己构造了几个认为会错的数据。其次就是用一些同学的数据。但是第二个单元对OO有了个初步的理解之后,测试能够针对自己的设计思路去构造一些针对性的数据。第三个单元因为不复杂,基本理解思路之后形式验证就够了,但是需要考虑的就是那个复杂度的问题。第四个单元基本上就是使用StarUml去构造相应的UML图去测试自己写的薄弱环节。但是还是感觉前提是要对要求理解清楚,否则构造的数据也不能较好地debug。
四、总结自己的课程收获
经过这一个学期的OO学期,应该说是痛并快乐着,痛是因为太难了,每个星期太累了。快乐是因为,我认为我可能完不成的时候,每次想要放弃的时候,我挺下来了,没有想到自己能够坚持写完所有作业。因为在过去的数据结构学习中,我自己非常容易退缩,怕麻烦,不想写。但是我在OO课中也感受到了,但是经过同学的帮助,以及自己的坚持,还是咬牙将那些东西学会。比如大一没有学会的算法,大二还是把它重新学习回来了。
其次就是OO课程的学习对于我的码力有了一个质的提升,我没有想到我能够一晚上瞧一千多行的代码,手抽筋的感觉,这是我原来想都不敢想的。再一个就是对于代码阅读能力的提升,因为OO经常要写用到一些算法,所以自己会在网上去找一些别人写的算法,将它看懂学会。
OO对于我的思维方式也有一个很好的帮助。让我能够将很多事物抽象出来,分层次,并将其联系起来,搭个架构。就比如在干一件事情的时候,我会将他分成几部分,每一部分该干什么,有什么联系。而且往往这种思维方式会事半功倍。
具体来说的话,第一个单元懂得了类的使用,以及一些语法,正则表达式。第二个单元就是设计模式,以及多线程的理解。第三个单元是对于jml的相关理解,具体语法以及相关图的算法的复习。第四个单元就是对于uml整个架构的理解,以及各个元素之间的关系。
总的来说,OO的一个整个学期的学习,对于一个编程菜鸟来说,应该说是炼狱体验,但是熬过来了,能力也就提升了。同时也非常感谢这个机会,让我的代码能力有了一个较大的提升。
五、三个具体改进建议
1、pre的重要性希望强调再多一点,因为我当时看pre说不算分,我就没管了。谁知道这之间影响了整个OO的学习。
2、希望能够对一些学习困难的同学,提供一些帮助,类似于难点搜集,进行统一解惑。或是组织线下或是线上的交流,可以是同学之间,也可以是和助教之间。来共同完成一周的任务。
3、希望实验和作业再紧密一些,给点提示。因为新手直接上手java还是非常困难的。我每次写完实验,都不知道对不对,也不知道答案是啥,又投入到一周的任务中了。有的时候,感觉实验和作业脱节了。

浙公网安备 33010602011771号