BUAA OO 第四单元作业总结及课程总结

BUAA OO 第四单元作业总结及课程总结

一、本单元架构设计

本单元作业内容为对UML进行建模解析,从而完成后续查询。需要我们完成对UML图中信息的解析存储,是更加纯粹的面向对象设计。

第十三次作业

本单元第一次作业只针对类图进行解析,在官方已给的包中已有部分可直接用的元素,在此基础上增加一些官方包中存储信息不够的类,例如ClassInterface之类,以便更好地存储UML信息。

第十四次作业

第二次作业增加了状态图和顺序图的查询,类似于上一次作业,把三种类型的图各自存储,便于解析查询。

第十五次作业

此次作业架构和上一次完全相同,只是增加了对UML中存在的错误进行检查的方法,故不再放出类图。

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

第一单元--表达式求导

第一单元的前两次作业是最让人头疼的,在初步解除面向对象方法时并没有对架构设计有一个清晰的想法,在借助了训练和试验后豁然开朗,对架构有了清晰的认识,在学习面向对象过程中是一次大的飞跃,知道了继承和多态在解析表达式中的重要作用,完成了对整体架构的设计,也正因此,在第三次作业中基本没有改变第二次的架构就能完成。

第二单元--电梯

这个单元主要学习了多线程开发方式,加入了线程并发冲突的各种模型,整体架构也是以其中的“生产者消费者”模型来构建,在架构上并不需要特别设计,主要是处理多线程并发时出现的一些不可描述的错误。

第三单元--JML

这单元不需要架构设计,只要理解规格并将其实现,并且保证一定的复杂度即可,出错也主要在方法的时间复杂度上,虽说需要我们完成的任务体现面向对象思维并不多,但整体的社交网络就是一个面向对象很好的实例。

第四单元--UML

最后一单元相较前面单元的作业是更加纯粹的面向对象,实现了对UML的解析和查询,对架构的设计其实题目已经大致框定了,要做的设计知识解耦和降低复杂度。

面向对象方法不仅仅是为了代码复用,而更多的是为了封装代码,对整体设计进行解耦,降低复杂度,将大的任务拆分成小的部分来完成。

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

第一单元

在第一单元中使用了Python进行数据生成,配合 Sympy库对程序运行结果进行检验,但针对于一些临界情况还是不能很好的生成数据,还需要手动生成。

第二单元

在第二单元完成主要功能的测试比较简单,依靠Python生成的数据即可,但一些极端的数据较难想到。

第三单元

在第三单元使用了Junit单元测试和黑盒测试,针对每次作业的核心算法构造出相应的数据点进行性能测试,但是忽略了部分看起来不复杂但时间复杂度较高的方法。

第四单元

在第四单元仍使用了Junit进行测试,但数据的构造较为麻烦,故没有特意构造数据。

四、课程收获

  • 学习了面向对象这一新的编程思想,理解了面向对象的特点及好处。
  • 学习了JAVA多线程开发,学会了处理线程并发导致的冲突。
  • 学会了规格的表示,能读懂并自己书写部分规格。
  • 应用了多种测试手段,丰富了测试的能力。

五、改进建议

在博客周提前发布一些可选的预习任务或者资料,让同学们提前了解下一单元的内容

减轻互测的强度和次数,部分人不想耗费过多时间,而部分人多次hack甚至恶意hack,在同一组时搞心态

实验增加结果反馈

posted @ 2022-06-29 13:42  OutlierXv  阅读(11)  评论(0编辑  收藏  举报