OO第四单元总结
架构设计
第十三次作业需要完成的是一个类图分析器,要分析一个类或者接口,就要分析其属性、方法和与其他类或接口的关系。由于官方代码略复杂,通过实现自己的Uml类将每个element都转化为包含自己需要的属性的类,并以id为key存在HashMap中,根据element的type在遍历所有项时按照类、属性、方法、参数、继承关系、接口、接口实现、关联的顺序建图,便于之后实现UmlInteraction接口中对类图各种信息查询的方法。
架构总结
第一单元作为初步学习OO时的单元,实现了多项式求导,面向对象的编程并没有很好地体现出来,也没有设计架构的过程,完全按照面向过程的思路去完成作业。
第二单元电梯调度,实现了多线程,是个很有意思的单元,架构也很简单,电梯跟调度器各司其职,感受到了面向对象编程的代码的简洁好看。
第三单元JML规格和第四单元UML,都给出了官方架构,对架构的设计并无要求,主要是算法跟数据结构。
测试总结
自己的测试水平十分弱鸡,停留在编数据加已有数据硬找bug,之后学习了Junit感觉略繁琐,对自己而言原始的测试方法效率高一些。
课程收获总结
学习oo的过程中程序开始有架构了,且变长了(可能是自己代码写得过于繁琐的缘故)。
面向对象思维将问题抽象出来了,写程序的思路更加清晰。
学会了checkstyle,养成了良好的编程习惯,比如能复用的代码部分多写成方法(在代码过长的时候分个方法出来)。
java多线程的学习过程很有趣,出现了很多令人捧腹的bug。
奇怪的写代码能力提升了。
改进建议
第一单元对我来说过于难了,从面向对象的角度出发一时很难下手,字符串处理也让我抓头。
三四单元似乎比较侧重考察算法,没有感受到面向对象的魅力。
实验课没有反馈,一学期下来感觉没做过实验,有几次实验代码阅读量有点大。
学习体会
oo的线上学习给予的自由度很高,让人在学习的过程中感到放松和惬意,只是理论课跟研讨课没有线下的那种氛围吧。线上学习似乎同学们跟课程组的交流更多了,感觉老师助教们都十分有趣,学习节奏十分轻快,但有几次作业还是让我抓头,555。很多同学可能都很惋惜一个学期的oo学习就要结束了,不过我没关系,我还有补给站,最大的学习体会就是我要加油。