其他分享
首页 > 其他分享> > Object-oriented_第四单元总结

Object-oriented_第四单元总结

作者:互联网

Object-oriented_第四单元总结

本博客为面向对象课程第四单元的作业总结。

本单元致力于实现UML解析器,深入理解UML类图。

本单元作业架构设计

在本单元中,三次作业逐次迭代。我本单元作业主要思想是采取“分层”,将UML类图装化为不同层次的元素,逐一处理。

作业主要思想

以这作业整体为例,元素层次结构举例说明如下:

第一层第二层第三层
Class, Interface Attribute, Operation Parameter
StateMachine State Transition
Interaction Lifeline Message

通过元素层次的划分,对UML结构的处理变得明晰许多,总体类图如下:

UML类图

对于第一次作业的类图的解析,实现了MyCLass,MyInterface, MyOperation三个类,在这三个类中,分别定义了其相对应的方法。类图的整体元素并不复杂,但过程比较繁琐,需要耐心与细节注意。

在第二次作业中,增添了对于时序图与状态图的解析,增添元素或代码行数相对第一次作业较少,但也有部分特殊情况需要考虑与处理。我在该次作业新建了MyState和MyLifeline等类,具体思路与第一次类似,面向各个方法进行撰写与测试。

在第三次作业中,新增了对于UML错误的解析,新增代码量与第一次作业差不多,但思想都基本相通,即面向对象的层次,来进行作业架构的设计。

这几次作业的难点没有像第三单元一样,将作业重点放在性能上,难点主要是一是UML元素的理解,二是特殊情况的判断,即以出现不想对应的UML元素为例,这些情况大多通过构造边界情况能够进行测试出来,我的测试主要面向各个方法,在第二次作业中由于漏掉了上述难点之中的一种情况,而出现了一个bug,其他地方没有出现bug。

四个单元架构设计与方法理解演进

第一单元中,是我架构面向对象化的形成时期,通过对于多项式的层次化解析,对各个部分单独封装,涵盖表达式类,因子类,项类等。我认为是课程中面向对象的特性最强的一次作业。

第二单元中,通过对于多线程的理解与训练,我的架构主要从层次化转向交互化,注重分析各个部分的交互与线程安全。同时,通过不同调度策略的训练,也使我懂得了安全与性能间的辩证关系,良好的测试是关键。

第三单元中,通过JML,我懂得了规格的语法,懂得如何使用规格对方法进行精确的描述。本单元架构比较固定,重点落在代码内在关联的实现与算法的追求。

第四单元中,通过UML类图,进一步强化了我面向对象的编程方法以及层次化分析的能力,通过多个层次构成的架构的稳健性,代码相对出了较少问题,架构设计的思想进一步提升。

四个单元中测试理解与实践演进

第一单元中,我主要使用了测评机黑箱测试与手动构建边缘测试样例,其中,基于测评机的黑箱测试可以针对正确性进行测试。然而这难以覆盖格式判断以及超时造成的错误。因此,被需要引入手动构建的边缘测试样例。在实际操作中,也证明了边缘测试方法在本次作业中寻找bug更加有效。本单元的测试训练,使我基本上掌握了测试的技巧与方法。

第二单元中,我采取了阅读代码与自动测评机的模式,由于多线程的不确定性,我结合测评机进行评测,同时,在阅读代码时,易于找出线程不安全的样例,这是可以构造针对性的数据进行测试。此外,对于死锁测试问题,阅读代码也是很好的方式,因为及时对锁进行跟踪,判断wait()相应的notify,以及主要当涉及多个锁嵌套的情况时,出现的虚假唤醒而造成的相互死锁的问题,这类死锁问题正是第二单元应当注意的重点所在。我的测试能力有了进一步提升。

第三单元中,我主要使用了基于JUnit测试,自动数据生成器以及阅读代码的方法。例如, 作为白盒测试,JUnit测试使我懂得了基于规格的测试中,我们应该基于七个性质:一致性、顺序性、区间性、依赖性、存在性、基数性和时间性来开展测试。本单元的学习使我的测试手段更多样化与丰富。

第四单元中,我主要使用了手动构建边缘用例以及与对拍的方法。其中,由于UML类图的查询功能以方法为结构给出,具有给强的结构性,因此能够便捷地利用手动测试逐一测试。同时,对于比较庞大的UML类图,对拍的方式检查正确性,也是一个良好方案。在本单元的学习中,我的测试能够更加行之有效,测试体系逐步完善。

课程收获

本学期的面向对象课程使我深刻掌握了面向对象的编程思想,通过对于四个单元的学习,每个单元各有挑战,使我在层次、线程、规格、模型化的思想上有了大幅提升,同时使我代码的可靠性、交互性以及可扩展性进一步增强,收获了许多Java语言的编程能力。

在我未来的学习过程与工作中,也会将学习到的面向对象的思想运用到其中。总而言之,面向对象课程是我上过本科课程中专业能力全面提升最大的一门课程,最后感谢助教与老师的辛苦付出,希望这门课程的建设越来越好。

改进建议

  1. 在第三单元加入JML的撰写,可能达到对JML理解的更好效果。同时我认为第三单元JML的难度是可以达到标准的,对算法因素的强调也使的面向对象课程的每次作业各有特点。

  2. 单元开始之前的训练作用十分有效,因此可以对训练部分进行赋分,以推动同学们通过训练部分进行本单元课程的预习,达到良好的学习效果。

  3. 互测结束后,可以对其他同学进行架构评分,以促进代码的阅读和架构设计的学习。

标签:Object,作业,类图,oriented,面向对象,测试,UML,单元
来源: https://www.cnblogs.com/dslighfdsl/p/14934717.html