OO第四单元总结

本单元作业的架构设计

这个单元写代码的时候在面向过程的方便和面向对象的清晰架构中反复横跳,导致最后写出来的东西乱七八糟。

第一次作业

第一次作业只涉及到了UML的类图。定义了 MyClassMyInterfaceMyOperation三个类,储存Attribute等信息。我的想法是将一条条信息即一个个UmlElement分类存放起来,希望达到树形的数据结构,即Class下有Attribute Operation等。但是实际写的时候发现这样有两个缺点,首先是数据的初始化变得很不方便,比如Operation定义时parent不一定被定义,需要多次遍历Element才能不出现NullPointerError,从类图中也可以看到MyClass中使用到了MyOperation,结构还是比较复杂的;其次是Attribute等作为对象的属性时,调用和修改就没有那么方便。

在存储类与类的关系上,我使用了HashMap,存储点到点的继承、实现关系(看上去挺方便的但是为第三次作业的翻车埋下伏笔)还有做不太好的地方是MyClass没有对UmlClass进行继承或存储。

 

 

第二次作业

第二次作业增加了状态图与顺序图,实现的思路与第一次作业类似(奇怪的代码又增加了)

这两张图中的元素比较少,关系也比较简单清晰,就没有自定义类,不过理清楚不同元素之间的关系还是有点复杂的。

 

 

第三次作业

这次作业成功在前两次历史遗留的基础上翻了车。有效性检查这里感觉还挺麻烦的...

主要问题出在R003和R004上。R003需要输出所有在环上的点但是并不需要确定每个点在哪个环上,所以对于每个点,只需要找到一个点满足这两个点能互相到达那么这个点一定在答案集合里且在答案集合里的点都满足这个条件。

在检查UML009的时候图中已经没有循环继承的情况出现了,所以从每个点开始对图进行一次遍历即可,如果走到了已经走过的点说明起点出现了重复继承。

翻车原因是实现的时候漏了一些代码...以及没有考虑到A extends B, B 这样的情况。

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

在四个单元的学习中,越来越能Get到OO的思想,也学到了不同的架构设计方式。

从一开始费劲地试图把不同对象抽象出来,到后来能够比较快的想好整体架构,OO让我思维转变为从整体到局部,写代码之前想的越全面,后续遇到的问题就会越少,也不能从一开始就纠结于细节的实现。我的感受是OO的关键词是抽象:选取对象的关键特质作为属性,将属性和方法组织在类中;抽象类之间的关系等等。高内聚意味着合理的数据结构,低耦合意味着可以对各个单元进行单元测试,这样比测试一整个程序要简单很多。

后两天个单元使用的是课程组提供的架构,阅读官方代码包也让我学到了很多。

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

主要的测试方法就是生成数据+正确性检查。

生成数据

  • python随机生成

    能够检查出一些比较蠢的错误,但是由于随机不能保证全面覆盖,需要对数据生成做一些限制或记录覆盖范围以达到尽可能地完备。第三单元的时候如果不做限制就会出现很多Exception,不能达到很好的测试效果。

  • 特殊情况手造数据

    考虑到特殊情况很难在随机中体现,需要手造数据对边缘情况极端情况进行测试(毕竟强测最容易WA的就是这儿了) 我对问题的考虑没有那么的全面,所以就经常发生没有考虑到也无法cover的bug。

正确性检查

  • 第一单元与python输出结果比较检查

  • 对拍

单元检查

这个方法在第三第四单元中有比较好的作用,可以对方法进行逐一测试,以验证在不同情况下的正确性。

在四个单元中,我的测试其实一直做的不够充分,有事情比较多的原因也有盲目自信..尤其是第四单元。不过在这四个单元的测试中也学到了很多,从一开始的啥也不会到慢慢的能够自己生成数据进行检查,从ctrl c + ctrl v 到cmd到bat...

课程收获

具体改进建议

  • 讨论区的方式不太高效,没有引用回复很难在楼中楼里快速找到问题和回答,导致经常会有重复的问题;除了改进评论区的布局方式以外也可以多做一些规范,比如第四单元就可以一个exception一个帖子这种。

  • 实验课有时候感觉对课内没有特别大的帮助,比如最后一次实验课,但是电梯单元的实验就让我对多线程有了更清晰的理解。

  • 感觉公测ddl可以适当往后移一点,互测时间缩短一点,毕竟后来大家都对hack没啥兴趣了

  • 似乎这门课有的人越学越容易,有的人觉得越学越难,或许可以对有困难的同学提供一些帮助,不然就会陷入不会写就更不想写的恶性循环。比如可以公开一部分官方实现或者优秀作业,我个人非常想看到大佬们是如何优美地实现功能,感觉这样可以有更多的思考和进步。

 

在OO中学到了很多,希望OO越来越好!

posted @ 2021-06-23 13:31  nie-s  阅读(60)  评论(1)    收藏  举报