OO第四单元总结

OO第四单元总结

前言

​随着第四单元解析uml的两次作业的完结,本学期的oo课程落下帷幕。从最开始的oo思想,到多线程程序设计,到规格化设计,到最后的uml建模语言,可以说每个单元的学习,都让我收获颇丰。本单元的练习,旨在学习、理解并简单解析uml模型。第一次作业是对uml的类图进行查询;第二次作业,在其基础上,增加了顺序图和状态图。这两次作业让我对uml语言有了更深的认识。

一、作业架构设计

第一次作业

因为只有一个类图,我就直接一个类把图存储、计算都解决了。

对UmlElement的type进行分类,将需要的数据用hashmap存起来,

查找的时候直接通过UmlClass的id进行数据获取。

由于使用了switch,加上较长的case,进行分类(包括参数的direction和UmlElememt的type),

因而部分方法复杂度有些高,但实际上代码还是很清晰的。

第二次作业

主要有四个类,MyUmlGeneralInteraction类对UmlElement进行初步整理,

并分发给MyUmlModel, MyUmlCollaboration, MyUmlStateMachine,

三个类分别进行类图、顺序图、状态图的存储、计算。

MyUmlGeneralInteraction类,通过调用这三个类的方法,实现了所有的交互接口。

类图的部分,几乎完全重用了第一次作业的代码。

二、架构设计与oo方法理解的演进

第一次作业中,完全没有考虑过架构问题;

第二次作业开始,就开始用层次化的方法处理数据:表达式、项、因子;

在第二单元中,开始了解到了设计模式,更多的考虑了架构

在电梯问题中,电梯线程、请求器线程和共享对象调度器(队列)的设计,就有比较好的考虑架构问题。

第三、四单元中,频繁的使用接口实现、继承重用的方式,去满足规格或需求的要求。

对于架构设计的问题,其实每次写程序都有考虑很久,感觉自己还是不太能够从容的边想边写的完成一个很好的架构。还需要熟悉一些经典的设计模式,同时多读、多写一些代码。

三、测试理解与实践的演进

最开始是,自己手工分类各种易错的数据,进行测试;

到第二单元,多线程程序的测试有一定的偶然性,因而开始使用大量随机数据进行测试,与其他同学程序输出结果进行对比;

第三单元,学习了规格化设计jml语言。学习了通过junit进行单元测试,还尝试了JMLunit测试代码实现是否符合规格要求。

第四单元,涉及各种查询指令,对这些查询指令的方法,用junit进行了单元测试。

四、课程收获

1、面向对象程序设计思想,层次化、代码重用;

2、多线程程序设计:线程安全问题,线程同步与互斥、共享对象访问控制;

3、规格化设计:jml语言的学习,规格化设计的优势,各种相关软件的使用;

4、能较好的考虑架构问题;

5、uml建模语言:学习了uml模型;

6、熟悉使用了java语言;

五、课程建议

1、可以精选出开源代码,让同学们课下学习。甚至可以选择非常有代表性的,课上集体讲解面向对象的思想在其中具体发挥了什么样的作用,给程序带来了什么样的好处,利于同学更好的理解、运用。

2、优化评分规则,给发挥失常的同学机会(例如去掉一个最高分和最低分)。

3、设计并组织互帮互助服务(可有偿)。

原文地址:https://www.cnblogs.com/DengTC/p/11077387.html