第四单元及课程总结

2021/6/25 23:30:23

本文主要是介绍第四单元及课程总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第四单元及课程总结

第四单元架构设计

第一次作业

类图:

本单元作业是实现一个类图解析器,一开始没有好好审题,以为只能实现MyUmlInteraction一个类,于是就构造了一堆HashMap来确定每个UML元素的一一对应关系,十分混乱和复杂。后来才想到将各种UML元素分门别类,在MyClass和MyInter(后改为MyInterface)中储存例如相关联的类(assoClass)、父类(fatherClass)等属性,每次加入新元素时进行一次登记,很好地简化了本次作业要求实现的一些复杂方法。也是通过这次作业真正理解到了一点点面向对象封装的特性。

本次作业没注意到jar包作为命令行工具的作用,导致自己不得不一遍又一遍地看mdj文件的代码,对比各个元素的Id和parentId,不过也由此熟悉了UML语言。

第二次作业

类图:

由于讨论区里第四单元指导书比较详细介绍了UML时序图和UML状态图,再加上第一次作业的基础,第二次作业相对轻松。使用了MyRegion管理各个MyState和UMLTransition,也装入了一些涉及状态的查找和遍历算法。

第三次作业

类图:

这次作业没有添加新的类,只是再MyUMLInteraction中添加一些检查方法,但完成要相对棘手一些,主要是对各个检查方法的要求不太理解,涉及的图算法也比较多。主要使用了广度优先遍历处理。

本单元作业完成还算比较满意,遗憾的是我始终无法找到简化代码量的方法,导致简化代码前MyUMLInteraction类中的代码达到惊人的一千多行!最终导致自己的代码风格分非常低。

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

第一单元涉及面向对象中类的使用,可能是由于对java和OO过于陌生,抑或是对正则表达式理解不清,在第一次作业就翻了跟头。一开始对OO没什么概念,第一次作业只创建了一个类一main到底,导致在第二、三次作业重构异常艰辛。

第二单元涉及多线程编程,对我来说这一单元的难点不在电梯的科学调度而是多线程的逻辑实现。通过这一单元对多线程程序有了了解。

到了后两个单元才开始真正认识到OO,第三单元主要关于JML的实现,通过作业已有的代码对接口的实现有了一些理解,作业完成起来难度不是很大,主要难点在于程序的正确性测试(使用Junit)

最后一单元认识了UML语言,也是在这个单元里自己对OO有了比较深刻的理解,通过构造自己的类管理数据,使得每个元素能够在程序中得到合理的储存和使用。

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

前两个单元都没用找到比较实用的测试方法,只能通过在终端窗口中直接观察输出结果进行验证。直到第三单元认识到了Junit开始尝试自己写测试代码,使测试简便了许多。

总结自己的课程收获

首先是系统地掌握了Java语言,在巨量代码下,也对一些设计模式有了认识。

其次是认识了多线程编程,虽然在OS课上才算是真正理解了线程的概念,但OO课的第二单元还是让自己熟悉了多线程的程序设计。

然后是认识了规格化语言JML和建模工具UML,体会到了软件的测试不仅仅是对照终端的输出内容和正确结果,对软件开发有了初步理解。

最最重要的是,经过一学期的锻炼,养成了今日事,今日毕的习惯(虽然OO作业都基本不太可能一天内完成),每个星期一布置作业就火速跑到GitLab上下载指导书,每天都在对OO作业的“恐惧”中度过,一想到还有作业没完成和周日晚10点的死亡DDL,就想立马回宿舍打开笔记本继续奋战。希望这个好习惯能够继续保留。

总的来说,OO课的体验艰辛而充实,既学到了许多内容,也收获了难忘的大学体验。

立足于自己的体会给课程提三个具体改进建议

  1. 先导内容不太够,可能是上学期没有选java课,导致从寒假开始不得不从头学习java语言,完成第一单元作业时非常吃力,虽然寒假作业里很好地从java基本语法到正则表达式进行了介绍,但是感觉还是和第一单元介绍的内容有一定距离,也许课程可以给一些实用的资料之类帮助同学理解,而不是让学生自己在网上寻找解决方法。

  2. 指导书内容不够人性化,部分内容可以写得更加直观易懂些,尤其时在第四单元第二次作业,对getTransitionTrigger方法描述得不够导致大量同学对指导书出现误读,建议同时发布更多样例加助理解。

  3. 每次实验课后可以给出当次实验的正确答案,以免做完实验一头雾水。

    希望OO课未来越来越好!



这篇关于第四单元及课程总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程