OO第四单元总结

架构设计:

第十三次作业:

 OO第四单元总结_第1张图片

  第十三次作业是只要实现类图的一些统计功能,我是通过一个Graph类来进行具体的实现,然后OperationInfo,AttributeInfo,InterfaceInfo,ClassInfo来储存具体的操作,属性,接口,类的信息。

 

第十四次作业:

 OO第四单元总结_第2张图片

  第十四次作业中的Solver类代替了上一次作业中Graph类的工作,本次除了类图之外又新加了状态图和顺序图,顺序图的处理也是在Solver中进行,新增了InterationInfo,MessageInfo,LifeLineInfo来储存具体的顺序图,消息,生命线信息。而状态图的相关统计具体实现则是通过一个Graph类实现,新增的StateInfo,StaInfo,TraInfo分别存储的是状态图,状态和迁移的基本信息。

 

第十五次作业:

OO第四单元总结_第3张图片

  这次作业相较上次作业是多了一个查错。为了减少Solver类的负荷,新增了一个Read类来进行输入到Solver能处理的形式的转换和一个Check类来检查UML图是否有问题。然后类图元素多了一个End类,是因为R001的时候关联末端视作属性,因此多加了这么一个类。新加了一个Bcj类是用来处理R003和R004中的问题。

 

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

  第一单元求导单元,第一次进行这种迭代式开发,每次一次新作业都要重构一遍。这一单元主要就是理解工厂模式吧,因为在次之前的编程都是一main到底的,而现在有了类,接口,继承,实现等概念。这样可以将很多有相似性的东西进行抽象,方便增添和修改。

  第二单元电梯单元,这一次在迭代式开放的过程中比较顺畅,基本上没有大篇幅的修改代码,而是在原来的基础上进行修改,并且正确性也还可以,可惜的是性能平平。这一单元主要还是理解多线程吧,多线程在刚开始学习的时候不是很能理解这种并行的操作,在三次作业过程中才有了大致的了解。

  第三单元JML单元,乍见之时觉得这一单元相比前两个单元要简单很多,逻辑都已经写好了,只要“翻译”成java就行了。但事实上并没有那么简单。特别是每一次迭代开放的过程中可能要对原来的代码进行修改,即使原来的规格并没有改变,但为了满足新的规格而必须进行修改。其次,还有许多算法上的学习,也算是个难点吧。

  第四单元是UML单元,这一单元在迭代开发的过程中我也基本没有修改之前的代码。这一单元的代码量相比于前三单元多了不少,而且有很多“隐藏点”需要自己琢磨。这一单元的很多错误都是理解有问题导致的。

 

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

  第一单元是求导单元,这一单元可以通过随机生成数据并且通过python中库里求导函数的结果相对比就可以进行检查。第二单元也是给出了测试结果正确性的标准,通过随机生成的数据得到的结果进行正确性标准检查就可以进行测试。第三单元,第四单元是通过Junit对方法进行测试,从而达到对整个程序的测试。

 

课程收获:

       首先是架构上的收获就是尽量每个对象都有一个自己的类,这样方便检查错误,也很好增加和修改代码,然后多一些抽象可以使代码更简洁易懂。然后是测试方面,代码一定要多进行测试,以及尽量把每种情况都要考虑周全。最重要的这个课我觉得还是学习能力上的收获,OO课有很多让我们自主学习和讨论的地方,让人受益匪浅。

 

三个具体的建议:

1.希望能即时知道每周的实验结果。

2.希望有较为系统化的自动化测试教学。

3.每个单元建议多一些提示,比如第一单元的第三次作业,电梯的调度,JML中的算法感觉虽然都有大佬有分享,但感觉不是很系统。

 

线上OO的体会:

       感觉自己自律太差了,很多时候都只是以完成为目标,没有想着向优秀的作业发起冲击。就每周都是这样勉强完成了,也错过了很多可以学习的机会,觉得这学期还是很可惜的。但是OO课在完成和修改BUG的过程中也有很多收获,OO课整体还是蛮让人难忘的。

 

你可能感兴趣的:(OO第四单元总结)