OO第四单元总结
第四单元作业架构设计
本次作业我思路为通过创建MyUmlClassModelInteraction等三个图类,然后再在图中创建interface、Mystate、Myclass等基础类,在初始化过程中,将elements分好类,让后存储到相应的类中,以便查询使用。MyUmlGeneralInteraction作为最顶层的类,只需要调用三个uml图类中相应的方法即可。
·在MyUmlClassModelInteraction中,基础元素为Myclass以及interface,扫描elements是,会创建相应的类,其他的elements都会作为元素加入到Myclass或者interface中。
·在MyUmlCollaborationInteraction、MyUmlStateChartInteraction中,同理也会创建相应的基础元素,然后向其中添加数据。
查询时,只需根据题意在以及形成的数据结构中进行查询并返回正确内容即可。
在Mychecker中,将图类作为构造函数的参数传入,即可通过一定的算法实现检查。
架构设计及OO方法理解的演进
在第一单元的架构设计中,我仍然使用面向过程的思维做题,并且只考虑到功能的实现而没有考虑代码的可扩展性,因此导致了重构。
在随后的几次单元中,我逐渐接受并理解了面向对象教学的目的,编写的Java程序也从当时的只为了实现功能而写到考虑代码的可维护性、从只会简单的将不同的数据类型拆分成不同class到之后考虑功能、代码逻辑、层次化设计之后更严谨地划分对象。
把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,最后只需要将相关方法进行填充,这样的话代码的逻辑性、可维护性都得到了很大提高。
测试理解与实践的演进
我在作业中测试主要还是依靠人工构造。在一、二、四中,人工构造数据有一定用处,但是在第三单元,对测试的要求大大提高了,我尝试使用python自动化生成一些数据并和同学对拍,但还是由于针对性不强导致出现不能进互测的情况。
由此可见,自动化测试的强度也是十分重要的一个点。
课程收获
在寒假的pre练习中,我第一次接触的Java编程语言,熟悉了相应的语法,为后续的学习打下了基础。
在第一单元的实验中,我第一次接触到面向对象编程,而且三次作业的迭代有一定强度,我在重构中了解了java的继承、封装等特性,并且测试中对于wrong format的要求,体现了程序的严谨性,此外在这次作业中我对正则表达式的使用也更熟悉了。
在第二单元的实验中,我第一次接触到多线程编程,了解了线程安全和进程同步的问题,接触了一些电梯算法以及生产资、消费者模式。在本单元,实验要求较为具象,因此代码的编写和迭代都没有上一单元痛苦。
在第三单元的实验中,我第一次接触到JML建模语言,其在保证程序的正确性、可靠性方面十分突出。
在第四单元的实验中,我第一次接触到UML建模语言。由于指导书十分抽象,需要翻看源码,这次作业锻炼了我的代码阅读能力。同时我也对UML三种图的理解更加深化了。
在多次Java作业中,我也了解了很多实用性很强的Java语法。
改进建议
1.课程中不断强调测试的重要性,但是除了一点简单的Junit之外没有实际上的教导也没有提供较完善的学习路径,希望能够加上这一部分。
2.第四次作业指导书过于抽象,在讨论区有人分享Umlelement的各种分类和其功能,若能将对Umlelement的部分说明加入指导书中应能在不改变教学要求的情况下降低一定压力。
3.研讨课主要是通过ppt进行分享,如果有人能在实操中进行讲解就好了。
线上学习oo课程的体会
得益于老师和助教们的努力保障,我感觉OO的线上学习除了不能在课堂上面对面互动以外没有收到疫情的太大影响,该学的知识都在教学中得到了体现,熬夜debug更是难忘的经历。