UML-第四单元总结
作者:互联网
BUAA_OO
第四单元
一、分析三次作业架构设计
第一次
-
第一次作业主要是新建了了
MyClass
、MyInterface
、MyOperation
,并且考虑到MyClass
和MyInterface
有一些共同的属性,故新建了MyElement
接口 -
第四单元的第一次作业一开始的时候还不知道该如何下手,反复看指导书并询问同学后才搞明白要干些什么。。。
-
这次只涉及到类图的查询,
MyClass
里包括类的各种属性、操作以及它的子类、父类、实现的接口,MyInterface
中包括接口的属性、操作以及子接口、父接口、实现的类,MyOperation
里包括参数以及referenceType
相关的一些内容 -
课下测试中在判断两个
ArrayList
相等是老出错,其实这个问题我在第一单元就遇到过,但是时间太久远了,忘了怎么判断了,所以花了很长时间,在这里我分享一个泛型的比较方法 -
public <T extends Comparable<T>> boolean isEquals(List<T> list1, List<T> list2) { if (list1 == null && list2 == null) { return true; } //Only one of them is null else if (list1 == null || list2 == null) { return false; } else if (list1.size() != list2.size()) { return false; } //copying to avoid rearranging original lists ArrayList<T> list3 = new ArrayList<>(list1); ArrayList<T> list4 = new ArrayList<>(list2); Collections.sort(list3); Collections.sort(list4); return list3.equals(list4); }
第二次作业
- 这次作业新增了顺序图以及状态图的内容
- 这次我将解析部分单独列了一个类出来,当然很大一部分还是因为
checkstyle
。。。 - 课下
bug
出现的原因主要还是关键状态的判断,花了一段时间去理解
第三次作业
- 这次作业是要检验
UML
图是否符合规范 - 我的
bug
主要在于R009
的理解上,我居然是当两个Transition
的所有的event
的name
都相同时才进行判断是否合法,应该是当两个Transition
有一个event
相同时就进行判断
二、总结自己在四个单元中架构设计思维及OO方法理解的演进
第一单元
- 第一单元是表达式化简,每次做的的表达式都更加复杂
- 这一单元我是采用的递归下降解析的方法,这个思路的来源还是第一次上机实验代码
- 一开始接触面向对象,其实一开始是毫无头绪的,这一单元做得比较焦急,重复地修改架构,并且有些
bug
难以发现 - 相比于
pre
时,对于OOP
有了进一步的理解
第二单元
- 这一单元是多线程编程,是我认为最痛苦地一单元
- 多线程编程一开始从未接触过,所以做起来很痛苦,又由于对
look
策略不理解,所以导致了很多的bug
,十分惨重 - 架构的话用到的是流水线架构以及生产者-消费者模型
- 熟悉了多线程编程
第三单元
- 这一单元是
JML
规格化设计 - 要实现的是模拟一个社交网络,并可以进行发信息、建群等
- 留给我们实现的比较少,基本就是按着
JML
实现即可,需要主义的就是性能方面的问题 - 理解规格化设计的重要性
第四单元
- 这一单元是
UML
- 主要就是对
UML
中的元素进行解析,并且支持所要求的指令查询 - 这一单元最需要注意的就是
checkstyle
三、总结自己在四个单元中测试理解与实践的演进
第一单元
- 主要是自己构造不同的样例,边界数据检验,并与小伙伴对拍,发现了很多
bug
第二单元
- 尝试使用评测机构造样例对拍,发现了一些轮询、死锁等
bug
- 深刻体会到了测试的重要性,并且认识到测试是验证程序正确性的重要环节
第三单元
- 使用评测机构造样例对拍,发现了一些
JML
阅读不仔细的bug
- 使用
Junit
进行覆盖性测试
第四单元
- 使用评测机构造样例对拍,发现了很多
bug
- 掌握更多的测试工具链,对于之后的工作很有帮助
四、总结自己的课程收获
- 代码风格方面,相比于之前的代码,现在的代码更加易于理解和修改
- 知识方面,掌握了
java
语法,流水线架构、生产者-消费者模型、主从架构等多线程架构以及一些单例模式、工程模式等,以及对于日后的工作很有帮助 - 在作业实现以及测试过程中,体会到了迭代开发、结对编程的好处,对于开发、自动化测试的环节更加理解
五、立足于自己的体会给课程提三个具体的改进建议
- 在
pre
中适当引进一下多线程的知识 - 稍微增加一下中测的难度φ(* ̄0 ̄)ψ(`∇´)ψ
- 对于第三单元可以稍微缩短一下课时
标签:list2,ArrayList,list1,bug,UML,多线程,第四,单元 来源: https://www.cnblogs.com/fei5607/p/16423001.html