OO第四单元总结

一、设计架构

1.第一次作业

类图

emm由于没有存之前版本的代码,类图找不到了。

我记得当时好像快到ddl了,我做的时候就有点赶,没有想太多就直接开始写代码了,最终的结果就是把所有的方法都放到了一个类里...也就是说我整个只有Main和MyUmlInteraction两个类,类里非常的臃肿。这么写倒是好写,甚至有些地方还比自行构建树或者图的同学好写一点,比如找接口的父类对于我来说就不用遍历图了,只需要一遍遍的遍历整个list(复杂度好高...)。当然这样写的弊端更加明显,那就是后面肯定要重构了T_T

2.第二次作业

类图

...原因同上类图也没了,不过第三次和第二次相比差不多,就多了几个检查方法,所以可以参考一下第三次作业的类图。

由于上次作业的原因,这次作业我的工作量其实很大,我记得整个我写第二次用了8个小时作业,其中重构第一次就占了快6个小时...这次我的思路是建立MyClass管理其自身的方法属性和继承实现关系,在其他需要进行类似数据管理的地方也类似的处理,最终我是建了10个这样类似的类,管理好自己的数据,再根据作业要求要实现的方法的需要,在适当的时候将这些数据return出来。果然这样一写除了构造方法会繁琐一些,其他方法都显得条理清晰,引起舒适。

3.第三次作业

类图

其实第三次和第二次差别不是很大,我做的改变就只是在MyUmlGeneralInteraction类中加了几个检查方法,另外由于文件的行数超过500行了,我有点偷懒的把一些方法移到了另一个Method类里,并加上了static属性。

二、四个单元中架构设计及OO方法理解的演进

1.第一单元

说实话,其实第一单元给我留下的心理阴影挺大的。主要还是由于每次作业基本都重构了一遍,到了第三次是真的心累...

这个单元可以说是我们之前的面向过程式编程到面向对象式编程的一个过度,在这个单元,我开始尝试这种新的编程思想。最开始有一种“这不就是c语言里的结构体吗”的感觉,后来发现差别还是挺大的。也在这个单元学了类之间的继承、实现接口等基本语法与概念。

2.第二单元

在这个单元我们主要学习的是多线程的使用,我觉得这个概念刚开始学的时候还是会懵一阵的(反正我第一次作业写的是挺懵的...),但是慢慢习惯了就好了。这一单元我深刻的吸取了上个单元的教训,在第一次作业就开始思考迭代的事情,之后两次作业没有一次重构,虽然性能可能没有那么好,不过第一次经历这种每次在自己的程序上迭代一些新的功能的感觉还是挺不错的。

3.第三单元

这个单元我们学习的重点是JML规格,后面两次迭代还对性能有了一些要求,这个单元的特点就是,如果有哪个细节没做好,极其容易血崩,反正我这学期有两次没进互测,全是这单元,还是挺郁闷的。我对这单元的感受是,第一次难点在JML,第二、三次的难点在性能,其中第二次主要体现在数据的存储和管理上,第三次主要体现在具体某个方法的实现上。

4.第四单元

这个单元我们学习了UML,整体感觉还好,类图之前也有讲过,状态图顺序图也不是很难理解。不过感觉作业的代码量有些大,(也有可能是因为我重构了一次),另外,这个单元也让我们复习了一遍类、接口、继承、实现等基本概念和关系。

三、四个单元中测试理解与实践的演进

在第一单元和第二单元,我主要采取的是手搓数据测试的方法,关键的要点就是尽量多的照顾到所有情况,尤其是一些边界数据需要着重测试。这种测试方法优点就是比较自由(懒),可以有针对性的测试一些数据,缺点自然就是测试不够全面,数据没有覆盖到全部问题域。

第三单元我们学习使用了JUnit,我也针对作业进行了这样的单元测试,感觉体验一般,配置环境和写测试代码还是挺费劲的,而且也不好覆盖到全部的情况。另外,在这个单元我还尝试自己构造程序生成数据,效果也没有我想象中那么好。

最后一个单元由于时间有点紧张了,我并没有投入太多的时间到测试上,也就是自己构造了几个类图生成了数据,万幸没有出什么大错。

四、课程收获

这个学期的oo课程终于要结束了,这个学期两大专业课oo和os,oo是一周一个ddl,但每做三次可以有一周写博客缓一下,os是不间断的2周一个ddl,感觉两者对学生造成的心理创伤(不是)差不多吧。在这学期的oo课程中,我的一大收获就是对代码的迭代的认识,在之前的课程中,一份代码管一次作业,不管怎么实现,完成任务就行了,对代码可迭代这方面的要求基本没有,即使是上学期的计组,虽然是一直写一份cpu的代码,但其实大家写的区别也不大,基本就是按老师的路子来,在可迭代这方面也没有下什么功夫,但是这学期的oo一上来第一个单元就给我了一个这方面的教训,从此我开始关注我的代码这方面的属性。

另外一个收获就是代码风格,课程组特别给我们选择了一个CheckStyle检查代码的风格,这方面也是我以前不太关注的地方。现在想想我上学期计组的代码,其实代码风格就不是很好,可读性很差。在本学期的oo课程中,每次作业都要经过CheckStyle的检查,还把检查结果放在结果的最上面,你不改就难受,算是把我之前大妈风格上不好的习惯扳过来了。

还有就是一些设计模式的学习,我一下能想到的就包括消费者-生产者模式、工厂模式、单例模式等等,这些模式都是前人总结出的一些很精辟的设计思想,每一个都有着精巧的设计,在这学期里也让我大开眼界。

五、对课程的建议

1.中测难度可以加大一些,比如第三单元,至少要覆盖到所有方法吧...

2.实验课的成绩希望能够及时知晓,不然搞的慌慌的...

3.多线程部分可以再关联到一次作业,感觉就一个单元涉及不太牢靠

六、线上学习oo课程的体会

在课程方面,我觉得线上学习确实有一些弊端,我们的oo课程在周二下午12节课,而我下午34节又有其他的需要直播观看的课程,这就导致老师的讨论题常常无法即使参与,往往上完后面的课也就没有心思再去回看同学们的讨论了,现在想来这是一大损失。

在作业方面,我觉得线上学习与正常的课堂学习区别不大,代码在哪码不是码呀。当然,硬说有区别还是有的,那就是对自律性要求更多一点,要是每次都拖到ddl再写我想作业的效果也会打一些折扣吧。

最后的最后,在此感谢这学期里老师们和助教们的出,可以看出每次的视频课程、每次的指导书都是你们花了大心思去做的,OO虽然困难,但也让我有了很大的收获,谢谢你们的付出!

原文地址:https://www.cnblogs.com/12138abc/p/13166509.html