OO 第四单元总结 && 学期总结

OO 第四单元总结 && 学期总结

一、第四单元架构设计

在本单元中,我采用层次化设计的思想,建立了三个包:classdiagram、sequencediagram、statediagram,分别用于处理类图、顺序图和状态图。

在每个包中,我对部分 UML 元素进行扩展,以满足作业需求。例如,建立 MyClass 类,用于扩展 UmlClass,其中存储了该类的父类、子类、实现的接口等信息。

第三次作业的代码结构如下:

  • MacinClass
  • MyImplementation
  • Classify(将读入的元素分类,以备后续建立类图、顺序图和状态图)
  • classdiagram (package)
    • ClassDiagram
    • MyAssociation
    • MyClass
    • MyInterface
    • MyOperation
  • sequencediagram (package)
    • SequenceDiagram
    • MyInteration
    • MyLifeline
  • statediagram (package)
    • StateDiagram
    • MyRegion
    • MyState
    • MyStateMachime
    • MyTransition
  • tools (package)
    • Tools (工具类,实现工具函数,例如判断字段是否为空)

二、架构设计思维以及 OO 方法理解的演进

1、架构设计

四个单元的演进

在第一单元中,我第一次有了架构设计的思想,初步接触了层次化设计的概念,体会到了良好的架构在迭代开发中的重要性。

在第二单元中,我学习了多线程,在架构设计时着重考虑并发的安全性和效率,同时也学习了多种设计模式,对架构设计有了一个更深入的理解。

在第三单元中,我学习了规格化设计和契约式编程,明白了契约式编程在团队协作中的重要性。

在第四单元中,我学习了 UML 模型,初步了解了模型化设计。

架构设计的理解

OO 的架构设计过程其实就是一个分工协作的过程,符合我们日常生活的思想。当我们需要做一件事情,我们首先考虑完成这件事需要哪些物品,每个物品需要持有哪些属性、拥有哪些功能,这些功能又如何协作以共同完成这件事。例如我们要造一台计算机,那么我们需要有内存、CPU等功能部件,这些功能部件就是对象。内存持有的属性有当前读写的地址与数据等,CPU 持有的属性有 PC、当前执行的指令等,内存负责存取数据,CPU 负责执行指令,各种功能部件分工协作以实现计算机需要的功能。而对于内存,它又由 MOS 管组成,这些 MOS 管就是更底层的对象,这些更底层的对象分工协作实现了内存的功能。

2、OO 方法

OO 的一个重要思想就是封装与解耦。

封装的一个作用就是隐藏数据,我不想让别人访问的我就隐藏起来,我想让别人访问的我就对外暴露一个接口,同时,封装还起到隐藏内部实现细节的作用,外部调用者仅需知道这个对象提供了一个什么功能,而不需要关心功能的内部实现细节,很大程度上简化了编程。

解耦的一个重要作用就是增强代码的可维护性和可扩展性。

三、测试理解与实践的演进

  • 在第一单元中,我第一次独立地写出了完整的评测机。
  • 在第二单元中,我采用面向对象的设计思想,使评测机与作业同时实现迭代开发。
  • 第三单元的自动测试我主要关注测试数据的覆盖率,写出了具有100%覆盖率的评测机。
  • 第四单元我主要采用手动构造数据的方式进行测试。

四、课程收获

  • 熟悉了 Java 语言
  • 形成了架构设计的思维
  • 学习了面向对象方法
  • 学会了递归下降的方法
  • 对多线程编程有了初步的了解
  • 学习了 JML 和 UML 语言
  • 学会了很多工具的使用,例如 git、markdown

五、课程改进建议

  • 适当增加预习课程的内容,使同学们在正式课程开始之前更熟悉 Java。
  • 单元结束后可以公布该单元作业参考代码,便于同学们学习。
  • 第一单元可以修改输出格式要求或性能分计算公式而保证表达式表示方式的一致性。第一单元许多同学为了性能分而把 x**2 输出成 x*x,个人感觉这破坏了数学公式的美观。
posted @ 2022-06-29 11:07  wphos  阅读(34)  评论(0编辑  收藏  举报