UML类图解析 -- OO Unit 4

UML类图解析 -- OO Unit 4


1. 架构分析

1.1
第一次作业的难度主要在于理解UML模型的各种类型以及理解互相之间的关系。在拿到代码后的一段时间内,我并未快速的掌握代码的逻辑与组织结构。甚至花了不少时间在一些不必要的源码上。这可能时由于代码阅读过少,没有形成阅读关键点的意识。但一旦理解了之后,第一单元的任务其实并不困难,只需要按照从属关系设计好相应的类和方法即可。由于我使用的HashMap作为数据结构,在遍历上略显的麻烦。下面附上类图。
UML类图解析 -- OO Unit 4_第1张图片

简单来说,我构造了MyElement, 各种元素继承MyElement。各元素之间有相应的组合关系,在UMLinteraction里,会将读到的element作分类,并生成相应的MyElement,完成数据结构。至于方法就使用了一般的增加,查找,删除,改变的思路进行维护。

1.2
第二次作业相对轻松,只需要在第一次的基础上增加方法即可,由于增加了两种全新的UML图:状态图和时序图。还是按照相同的思路,将各元素之间的从属关系厘清,构造相应的数据结构即可。在状态图中,用转移链接两个状态;在时序图中,用lifeline代表对象,对象之间通过massage交流。下面展示类图。

1.3
第三次作业是保证UML的有效性,由于没有完全理解对端结点,导致R001出现了bug,此外,在限定初始状态的转移时,我错误的使用了后继结点数目,这样也带来了bug。总体来讲,前4个规则较为复杂,尤其是循环继承,需要使用递归标记的方法,由于复杂度较高,导致有一个bug并为修复。下面展示部分类图。
UML类图解析 -- OO Unit 4_第2张图片
我将某些规则检查放在相应类中,比如初末状态,属性公开等,这样Interaction类只需要调用容器中相应对象的方法即可。
总的来说,这三次作业并不是很难,但是细节之处考验代码的理解。

2.架构设计与方法的演进

在第一单元,我使用的是面向过程式的设计思路,构造了一个庞大冗杂的main类,通过不断加方法来完善功能。虽然设计快,但是维护起来十分困难,可拓展新也不高。在第二单元,通过生产者-消费者模式,我设计了三个主要的类,即为电梯、乘客、调度器,从而每一个类只需要完成自己的方法,维护自己的成员。第三次作业中,我学习到了如何使用JUnit进行覆盖完备的单元测试,在迭代中用测试驱动开发。第四单元,我加深了对数据的组织,类的层次的掌握,设计了交互关系更复杂的类,面向对象的思想进一步加强。

3. 测试理解与实践演进

第一单元,我使用python进行随即数据生成测试;第二单元同样使用网络上的资源生成随机数据并进行对拍,同时用jprofile查看多线程的执行细节;第三单元,我学习了Junit单元测试,并且在每一次迭代中逐步完善测试;第四单元,通过绘制UML图,通过官方jar包解析来测试。

4. 课程收获

在长达四个多月,16次作业的持续作战中,我感受过bug频出的无力,也感受过hack成功的喜悦,但更多的是深夜赶ddl的紧张。通过如此丰富而刺激的代码训练,我的代码能力得到了提高,对java的熟练度大大增加,并且了解掌握了面向对象的程序设计思维。虽然和讨论区dalao信手拈来高级算法不能相提并论,但是我还是学到了更多设计上面的知识,例如工厂模式,单例模式,消费者-生产者模式等等。在研讨课上,几乎每次都能学到新的设计技巧,收获很多。

5. 建议

5.1 建议oo的指导书能够更加详细,特别是设计到范围、方式的表述上,希望可以结合举例讲解要求。
5.2 建议oo的实验课能有答案与回顾,方便改错。
5.3 建议oo的ddl别那么紧,当然也许是我的问题。

6.线上体会

不是很好,个人原因,没有充分的交流,如果下学期还有类似的课,希望能多参与讨论区。自制力不强,希望能找到秒杀作业的动力而不是临阵磨枪,以上。

你可能感兴趣的:(UML类图解析 -- OO Unit 4)