2021 OO第四单元总结
总结本单元作业的架构设计
这三次作业是层层递进的,因此直接分析第三次作业的架构设计。
为了实现类图查询的各个指令,我创建了MyClass类,由于Class和Interface大体一致,因此我用了这一个类来存储Class和Interface,该类里面存储了id,name,attributes,interfaceRealizations,generalizations,这些是来完成对类图查询的,其次里面还有associationEnds存储的关联对端,完成ROO1的判断,以及classOrInterface,存储原始的class或interface,以便在检查相应规则时返回对应数据。
为了实现状态图的各个指令,我创建了MyState,MyStateMachine,MyTransition类。
为了实现顺序图的各个指令,我创建了Mylifeline和MyInteraction两个类。
状态图和顺序图实现逻辑和类图查询一致,甚至更加简单,因此不再赘述。
最后就是各个有效性检查,由于前面存储了相应数据,因此实现起来非常简单,在前面有效的存储相应数据和一些适当的处理,在有效性检查时几乎相当于在做查询工作,除了有几个规则需要用dfs,其他很快就能完成。
总结自己四个单元中架构设计及OO方法理解的演进
第一单元
第一单元是多项式求导,由于在寒假的时候并没有意识到提前学Java的重要性,寒假的pre几乎都摸了,因此在开学的时候没有任何准备就面对了第一次作业,在第一次作业中,只能依靠面向过程的方法,在一个类中就完成了代码,但由于化简有点问题导致错了三个点,而后两次作业也是挣扎着在一两个两三个类中完成了代码,没有任何架构可言,代码风格极其糟糕,可读性也非常差。
第二单元
在第二单元中痛定思痛,不再像第一单元那样把所有的东西都杂糅在一个类里面,而是进行了拆分,因此效果也比较好,代码的可读性也上升了,也有了一定的架构(至少看起来比第一单元赏心悦目不少)。
第三单元
第三单元我个人认为自己没有什么架构可言,因为我几乎都是根据官方规格实现了相应的接口,也没有什么自己的想法,不过通过第三单元的学习让我认识到了JML这门语言的优点,对这么语言有了一定的了解。
第四单元
第四单元是UML,在这一单元中,我没有急着去写代码,而是一步步分析,从输入到输出,去分析输入的数据中,什么要保存下来,什么要经过处理,分析输出的时候要用到什么数据,在输入时进行如何的处理能够简化输出时的处理,在思考了这些后,我才开始写代码,这一单元中的架构就要清晰不少,完成的效果也还是不错。
总结自己在四个单元中测试理解与实践的演进
在第一单元中尝试自己构造了一些极端的数据来进行测试,例如第三次作业多括号嵌套的数据,在第二单元中,由于多线程的特殊性,自己也没什么经验,所以没有进行测试,第三四单元都是手造了一些数据加上程序随机生成了一些数据,来进行测试。测试环节个人认为自己做得不够好,没有花费太多的时间在测试上面,所以测试的效果也并不好。
总结自己的课程收获
这学期的OO可以说是在痛苦中挣扎成长,在经历一次次作业之后,让我痛苦的同时也收获了许多,代码的架构更加清晰,把复杂问题化简的能力得到了培养,编程的思路更加清晰,不再是之前那种看着题就开始写,导致没有考虑完全而写出许多bug,这门课同时也培养了我自学的能力以及debug的能力。总的来说,虽然OO课的经历是有些痛苦的,但是确实培养了我的能力,给我带来了提升。
立足于自己的体会给课程提三个具体改进建议
- 建议寒假期间的pre改为强制性,同时可以多给一点Java相关的教程,这样之前没有接触过Java的同学在面对第一次作业才不会显得无力。
- 博客作业能否增加反馈,至今不知道博客作业得了多少分。
- 感觉第四单元的教程略有简略?第四单元第一次作业我花了很长时间才明白要干什么,怎么做。

浙公网安备 33010602011771号