OO第四单元总结与课程总结

这学期OO课程终于在此告一段落。下面我对第四单元以及整个课程做一个简单的总结。

(一)第一次作业:

上图是我这次作业的类图。这次作业从逻辑上来说比较简单。总的来说是根据输入的UML语言,存储其中类图的数据,理清其中的联系,并根据要求实现一些查询指令。这个单元的难点在于一些细节不好把控,而且对于数据的构造也是相对比较麻烦的,对正确性的检查成为这次作业很大的难点。

而从实现的方法而言,我认为有几个方法是比较不好实现的。接口的多继承和重名对象的处理。前者我利用了dfs来遍历,后者我对姓名以及id做了多对一,以及一对多的映射。

至于对数据的存储,我认为也是比较麻烦的一部分,存储的简易程度与代码的复杂度在一定程度上成正相关。我存储的数据的方式比较乱,导致在写代码时出现了许许多多的问题。

(二)第二次作业:

这次作业的类图如上图所示,相较于第一次的作业,我对里面特殊的算法,方法做了一些封装,从而使得使用起来更加方便。

这次作业增加了顺序图和状态图的构建与查询。顺序图相对来说比较简单一点。而对于状态图,其中的初始状态Pseudostate,结束态FinalState和一般态State的细节是十分模糊而且复杂的,初始态的数目,初始态的转移。这些问题,因为没有在指导书中明确说明,导致产生了一些歧义。

这次作业最难的部分我认为就是对于类图有效性检查的问题,我最后写得也不是很好,强测也出了一些问题。

架构设计及OO方法理解

第一单元 :作为入门的一个单元,是对于多项式求导问题的解决。我认为这个难度梯度安排的是蛮好的,层层递进。而且也让我初步了解了如何面向对象去编写一个程序。当然在自己编写代码的时候,并没有写得很好,对于OO方法的理解,也是十分肤浅的。

第二单元 :第二个单元是针对于多线程编程,用电梯作为一个练习的对象。这个单元架构中包含五个线程,分别为输入、控制器、电梯0、电梯1和电梯2。如果能很清晰的区分每个线程所负责的工作,实现功能还是比较简单的。

第三单元 :第三个单元是根绝JML语言进行对类和方法的编写。这样的方法可以极好的保证代码的正确性。这个单元的难点,一是对于代码正确性的检查,二是对于有一些算法的编写。这次作业让我对于图以及最短路径算法有了更深刻的认识。

第四单元 :UML的学习让我更清楚地认识到了自己代码的结构,通过对UML的分析,也让我更深入的了解了架构设计的重要。至于代码编写方面感觉做的并不是很好。

测试总结

第一单元测多项式的时候,我就是按照不同多项式的分类,对于每种多项式进行分别测试,大部分bug都在输入的处理上。这也体现的代码的逻辑性越强,其实bug出现的越少,因为求导其实是十分有逻辑的,因此很难出现很角落性的bug。

第二单元电梯的时候,测试的时候,也是自己编写测试数据。当时对于测试还是比较困惑的,因为不知如何控制输入的时间。好在后来解决了这个问题。

第三单元JML的时候,引入了JUnit,以方法为单元进行测试,最后的效果也是很好的。

课程收获

增强了debug能力。

更加熟悉了对Java语言的使用。

对测试自己代码的正确性的方法有了一些扩展。

学习了继承、多线程、相关知识。

学习了JML和UML。

让我对面向对象的编程思想更加了解。

改进建议

我认为对后两个单元的一些内容描述的有些不清楚。

我认为上机的形式可以更加宽松一点,比如当堂没有完成的可以让同学们课下在完成,我认为也能起到相同的效果。

对于测试的一些方法,我认为可以再课堂上着重讲解一下。

posted on 2019-06-24 10:14  17373245  阅读(138)  评论(0编辑  收藏  举报