OO第四单元总结

Posted 膝盖受损

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OO第四单元总结相关的知识,希望对你有一定的参考价值。

OO第四单元总结

作业的架构设计

第一次作业

第一次作业其实反而是三次作业中最难的一次,因为刚发下来的官方包中文件实在是太多了,不知道从哪里下手,而且因为第一次接触UML图,很多概念还不理解,第一次作业的大量时间用在理解作业到底要我干什么上了。理解了之后就比较好实现了。

为了更好地实现各种查询操作,我对于Class,Interface,Operation重新写了对应的类,从而使得查询更加方便。

查询操作中比较麻烦的是需要考虑继承和实现关系的查询,因此我采用了bfs的方法来遍历查询。

image

第二次作业

第二次作业难度就简单多了,大部分的查询在读入遍历的时候就可以完成。唯一一个比较难的,是要考虑间接转移的查询,同样的使用bfs搜就可以实现了。

这次的作业在第一次作业的基础上迭代开发,针对Lifeline,State等建立了对应的类,使得能够更方便地查询。

image

第三次作业

这次作业主要是为了实现正确性检查,除了R002-R004这三个需要用上图论的算法,其它的检查,在遍历的时候进行保存和记录基本上就可以完成操作。而针对R002-R004又同样的可以使用bfs来实现,因为时间几乎没有限制,因此采用最直接的循环暴力搜即可完成。

这次作业的架构和上次几乎一样,除了增加一个专门用于检查的类来防止爆500行之外,以及在少量类内部加了容器和缓冲值来记录检查结果。

image

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

第一单元

第一单元真的很痛苦,除了第一次作业比较简单之外,后面的两次作业真的是让人又焦虑又难受。刚开始上来,我并没有什么java编程的经理,只是写了寒假的预习任务,对java仅仅只是语法了解,但是对于面向对象的编程思维的了解几乎是零。因此在第一次作业中,我还是按照面向过程的方法写了,这导致我在第二次作业全部重构。第二次作业我是开始真正了解什么是面向对象,逐渐理解如何面向对象编程,虽然写出来的架构非常丑陋,但是总算是开始面向对象了。

最后参照指导书完成了表达式,到项,再到因子的分解。

img

第二单元

第二单元是多线程,架构主要都是采用了生产者-消费者模式来完成。难点主要是如何避免死锁。在这里我已经感觉自己比较熟悉面向对象的编程方法了,在写代码的时候很自然的就分成了几个类,也实现了高内聚,低耦合,是我比较满意的一个单元。

2-UML

2-UML

第三单元

第三单元是天使,真的很简单,感受到了编程的快乐。第三单元官方已经给出了架构,照着填代码就好了。难点主要是在于考察了一些图论的算法吧,然后自己数据结构图论学的也是不咋样,在这一单元中加深了学习,感觉自己又可以了。

第四单元

老实说,这一单元并没有老师助教说的那么简单,我觉得还挺痛苦的。架构在上面已经分析过了就不再赘述了。然后这也是最后一单元了,这一单元作业,在写代码之前,我会思考怎么设计架构可以更好地迭代开发,类和类之间的关系也更清楚了,比起第一单元确实已经上了不止一个层次,不仅掌握了初级的面向对象编程,还有向更深方向发展的趋势。

总结自己在四个单元中测试理解与实践的演进

第一单元

第一单元测试主要是随机测试测测有没有明显的bug,以及自己手动构造边缘数据来测试。

第二单元

第二单元的多线程,很痛苦,输出又长又多,看起来很痛苦,测试起来也很痛苦。依然采用自动生成数据和手动构造数据。

第三单元

第三单元虽然官方推荐使用Junit,但是我发现它不咋好用,于是我还是采用了原始的方法来进行测试,加上这一单元其实比较简单,因此我没有采用自动生成数据。

第四单元

这一单元撞上烤漆了,我基本上就没有怎么测试,很惭愧,在测试了边缘数据没有错之后我就没怎么管了。

总而言之,我四个单元学会的测试方法就是:单独函数单独方法测试,边缘测试,和综合性测试。比较遗憾的就是,我一直没有自己写一个评测机。

课程收获

课程收获一:这个课真的好难啊,好痛苦啊。

首先,这个课让我熟练掌握了一门语言,并且我确定我已经我掌握了面向对象的编程方法,这个收获作为OO这门课的收获,就已经是达成了最基本的要求吧。

其次,我意识到了架构的重要性,高内聚,低耦合的思想已经刻入DNA了,现在编程之前都会思考自己的架构能不能经得起多次的迭代开发。

然后就是每个单元学到的一些相关知识,比如多线程编程,JML语言,UML模型之类的,扩大了我的知识面。

改进建议

  • 关于四个单元作业的建议

首先,关于第一单元,我认为第一次作业和第二次作业的难度相差太多了,第二次作业直接懵了,根本不知道怎么写,这非常不合适,那一周我特别焦虑,感到周围的同学也都很焦虑。

其次,建议第三单元和第四单元的顺序调换一下,因为第四单元撞上烤漆了,而第四单元也并没有大家说的那么简单,还是有一定难度的。

然后关于指导书,我相信其实每年的OO指导书都是大致相似的吧,那么有很多模糊的定义和说法完全能够改正,而不是等指导书出了之后大家在讨论区问来问去,这样效率又低,我们也不能时刻关心讨论区问了什么问题。

  • 关于实验

实验缺少反馈的渠道和机制,每次上机交上去就完了,自己不知道结果也不知道成绩,感觉上机就有点没什么用处了。

最后还是很感谢课程组一年来的努力,感谢每一位助教的付出和努力。最后,恭喜OO完结撒花。

以上是关于OO第四单元总结的主要内容,如果未能解决你的问题,请参考以下文章

OO第四单元——基于UML的UML解析器总结&OO课程总结

OO第四单元及课程总结

BUAA_OO 第四单元总结——UML

OO第四单元总结

oo 第四单元UML&课程总结

OO第四单元暨课程总结