2019_BUAAOO_第四单元总结

一、作业架构设计

两次作业都采用了相似的架构,因此放在一起来说明。

  • 将UmlClass,UmlInterface,UmlState等封装成对应的MyUmlxxx类,类中除了储存对应的Id,name,parentId等信息外,还会储存查询要用到的所有信息
  • 为所有MyUmlxxx类建立对应的Container类,Container中储存所有MyUmlxxx对象,对与建立每个对象之间的关系的操作都要经过Container来实现,这样可以方便管理
  • 对于不同的Uml图,建立对应的类,类中放有相应的Container

第二次作业有效性检查实现:

UML002:在MyUmlClass类中直接存有所有的UmlAttribute和UmlAssociationEnd的name,因此直接用来比较即可。

UML008:对于UmlClass而言,直接向上找父类,若是找到的所有类中含有同样的id,则认为此类循环继承。对于UmlInterface的情况也是类似,但是由于UmlInterface允许多继承,因此所有UmlInterface的父类都要查询一次。

UML009:查找每个类的所有实现接口,然后看是否有重复。

两次作业的类图展示:

 

 

 二、总结自己在四个单元中架构设计及OO方法理解的演进  

第一单元:第一单元的代码基本都是按照面向过程的思想来设计的,虽然有考虑面向对象设计的想法,可是写着写着最后又变成面向过程了,这一单元主要是对面向对象的初步接触与尝试。

第二单元:本单元开始设计多线程,开始了解一些面向对象的设计模式,比如生产者——消费者模式,这个单元的代码开始变得面向对象了,只是一些问题仍然没有在事先设计时考虑周到,导致代码中许多类的功能过于复杂和集中。

第三单元:根据JML语言来实现相应功能。通过前两个单元的训练,再加上JML语言规范,尽量地避免了前两次作业中的不足,基本完成了本单元的要求。

第四单元:通过将所有UmlElement进行封装来实现。本单元的架构是比较成功的一次架构,各个类的功能都不集中,在第二次作业添加功能时非常方便,代码的复用性和可拓展性也较为良好。

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

第一单元:测试是直接通过看代码理解别人的思路,然后根据思路找出问题。

第二单元:本单元由于是多线程,通过直接看代码很难理解,因此只能通过多线程调试来测试。

第三单元:主要是通过JUnit生成测试代码进行测试。

第四单元:第四单元主要是分模块测试,类图、顺序图、时序图分开测试,分别找出问题所在。

四、总结自己的课程收获

1、学会使用面向对象思维解决问题

2、多线程的实现

3、根据JML语言实现代码

4、理解UML模型

5、JUnit测试

6、一些设计模式

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

1、希望理论课和实践课间隔时间更长一点,不要上午理论课下午实践课,这样很难有时间去吸收消化理论知识,经常都是在实践课上现学现用。

2、希望指导书的要求能够更加明确。比如最后一次作业的指导书,有很多地方的说明都很模糊,甚至有些矛盾,最后还是要通过讨论区来解决。

3、希望能将课上实验的题目开放。

posted @ 2019-06-24 20:40  since_AUG  阅读(171)  评论(0编辑  收藏  举报