BluZer In solitude, where we are least alone
OO第四单元总结

(1)第四单元两次作业的架构设计  

第一次作业:

第一次作业是解析UML类图,首先需要对输入进行处理,在构造函数里判断元素类型然后进行存储,大部分用的是HashMap。

指令中输出实现的接口我用的是深度遍历,然后容易出错的是空指针异常,在很多地方都需要HashMap的get()方法,最后还是有一个地方忘记判断导致强测出现问题。

第二次作业:

第二次作业相对难度较大,需要去理解很多元素类型以及它们之间的关系。新建类图,状态图和顺序图的类,然后再实例化为三个对象,对输入的元素类型判断后即可选择不同的对象进行操作。

UML008有效性检查时,我选择直接递归遍历继承关系,继承存储是以子类id为key,对应直接父类的集合,因为时间卡的不严,我就采用了这种简单暴力的方式,遍历同时可以考虑UML009重复继承问题。对于重复实现问题,我是在上次类实现的接口方法里面操作的,重要的是处理重复实现需要在重复继承之前。在强测时出现一个bug,就是我把处理重复实现放在三个有效性检查函数之前,如果有循环继承的话那就可能陷入无限循环,所以需要在检查UML008之后再处理重复实现,之后还需要检查UML008,因为我把重复继承的处理合并在循环继承的处理函数中。对于状态图中后继状态数的计算,同样是递归遍历,需要注意的是,遍历过的点再次经过时不能再往下遍历,否则就是无限循环遍历了。

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

第一单元表达式求导时对架构设计没什么概念,能过中测都很满足了,在测试上下的功夫也不够,由于自身知识匮乏,加上懒惰,导致第一单元开局不好,特别最后一次作业很有难度,直接无从下手了。当然刚开始并不是面向对象编程,而只想能完成作业,在理解上还不是很到位。

第二单元电梯一开始就是多线程,相比第一单元难度较小,按照模式来基本不会有大问题,主要是处理好线程安全,再对电梯调度进行优化,我自己做的优化是比较简略的,没有考虑太多。这单元根据指导书的提示,写得逐渐开始面向对象了,而且,基本知识也有了,开始学习比较进阶的方法来实践。

第三单元是关于JML,根据其填写相对应的函数,开始接触单元测试,不过当时感觉有点麻烦就没有过多地去尝试,应该很好用,虽然课程结束,但我有必要去补补怎么去用那单元测试。

第四单元是关于UML,模式和第三单元差不多都是实现接口,重在理解UML元素之间的关系。

(3)四个单元中测试理解与实践的演进

在写代码前就要想一些边界数据以及一些容易出错的点,测试时还是需要对特殊情况考虑。

(4)课程收获

由于课程内容改革,所以这学期体验良好,学到的东西也很多,相比较于往年,今年作业的难度是下降了,所以压力自然就小了。Java语言还是很好用的,以后还需要再去理解与实践。

(5)给课程提三个具体改进建议

1,在自己测试不充分的情况下,一个小bug可能会导致强测炸的很惨,不知道少扣点分合不合理。。。

2,实验课每次体验很糟糕,主要感觉没什么收获。

3,刚开始太难,心里会很恐慌,心态容易炸。

posted on 2019-06-23 22:02  BluZer  阅读(102)  评论(0)    收藏  举报