BUAA-OO-Unit4-单元总结

BUAA-OO-Unit4-单元总结

一、本单元作业的架构设计

1、1 第一次作业架构

  这次作业主要为类图分析。

  我的类图相关架构如下:

- main
  - Main
  - MyImplementation
  - AssociatedClass
  - MyClass
  - MyInterface
  - MyOperation

  其中,Main函数为主函数,MyImplementation函数为实现Userapi接口的类。MyClassMyInterfaceMyOperation各是封装了UmlClassUmlInterfaceUmlOperation的类,主要维护的是他们之间的图关系以及实现每一个类的功能。AssocaitedClass是一个接口,MyClassMyInterface都是继承这个接口,因此这两个类的相同特性就可以直接用该接口约束了。

  架构是比较简单清晰的,可能比较重要的就是读取的顺序,以及存放的容器。

  因此,我把读取顺序分成三个阶段:

第一阶段 第二阶段 第三阶段
UmlClass、UmlInterface、UmlAssociationEnd UmlAttribute、UmlOperation、UmlGeneralization、UmlInterfaceRealization、UmlAssociation UmlParameter

1、2 第二次作业架构

- main
  - Main
  - MyImplementation
  - AssociatedClass
  - MyClass
  - MyInterface
  - MyOperation
  - MyInteraction
  - MyLifeline
  - MyRegion
  - MyState
  - MyStateMachine
  - MyTrainsition
  - StateType

  第一次作业类图的结构没改。主要增加的是对顺序图和状态图的处理和查询等操作。其中,顺序图的类有:MyInteractionMyLifeline,状态图的类有:MyRegionMyStateMyStateMachineMyTrainsitionStateType

  其中StateType用来区分多种类型的Type。其余都是常规的封装类。

  这次,由于状态图和顺序图的层次的增多,我把读取顺序分成五个阶段:

第一阶段 第二阶段 第三阶段 第四阶段 第五阶段
UmlClass、UmlInterface、UmlAssociationEnd
UmStateMachine
UmlInteraction
UmlAttribute、UmlOperation、UmlGeneralization、UmlInterfaceRealization、UmlAssociation UmlParameter
UmlState UmlPseudoState UmlFinalState
UmlLifeline UmlEndPoint
UmlTransition UmlMessage UmlEvent

1、3 第三次作业架构

- main
  - Main
  - MyImplementation
  - ClassOrInterface
  - MyClass
  - MyInterface
  - MyOperation
  - MyInteraction
  - MyLifeline
  - MyRegion
  - MyState
  - MyStateMachine
  - MyTrainsition
  - StateType
  - CheckUml

  第三次作业沿用前两次作业的架构。主要增加的是CheckUml类用来处理Uml图的检测操作。除此之外,只把AssociatedClass改名为ClassOrInterface,更能体现接口的作用。

  其中StateType用来区分多种类型的Type。其余都是常规的封装类。

  读取顺序不变。CheckUml中就是实现那些类。

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

  oo课程每一个单元都是有专门的一个主题的,所以每一个课程它的处理方式都不太一样。

  第一单元:(这个阶段不仅是我刚接触面向对象,更是刚开始接触java语言。但是由于寒假有做pre,以及刚开学其他课程的可以压力都不大,因此能够理解的不错。)第一单元是个人感觉最体现面向对象的特点的单元了。表达式、项等“对象”的定义的十分明显。同时也学习了简单的递归下降法,因此架构就很清晰,适合面向对象入门。

  第二单元:多线程是程序设计中很常见的问题。这个单元的接触能够让我们对多线程有比较基础的理解。但是个人认为,这不太“面向对象”。本单元的架构思维就是生产消费模型,建立两个线程之间的通讯关系。虽然不是面向对象,但是确实是软件设计的基础所在(尤其是多线程编程)。

  第三单元:强调规格化,这个单元是我认为最简单的一部分了(因为只要读懂了规格,那么就能够很好地完成任务。)当然,这个单元不仅要考虑规格,还要考虑性能的因素,就比较需要多一点的操作,如建一个并查集类,或者利用缓存机制实现快速查询。

  第四单元:这个单元比较像第一单元和第三单元的结合。因为已经有Uml图的分析器了,那么我们只需要封装这些类,并且将这些类的内在关联表示成“图”,设计更加灵活多变,但是我觉得自己这个单元并没有在面向对象方法上进一步学习到新知识,只是对第一单元的面向对象方法和第三单元的规格化设计的一个巩固。

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

  大部分的评测几乎都是互帮互助完成的。我负责了编写第二单元的数据生成器,其实就是随机生成出的样例,不过可以通过调节各种参数使得数据增强或减弱。对拍机几乎都是利用bash脚本或者命令行脚本进行操作,比如diff。

四、课程收获

  在整个课程的学习过程中,虽然艰辛但是确实收获到了很多。

  1、对java语言的熟悉。

  2、对面向对象基础的掌握。

  3、对多线程编程的了解。

  4、对git的运用。

  5、对规格化的理解。

  6、明白如何搭一个简单的评测机。

五、三个具体的改进建议

  1、第三单元较为简单和重复。如果老师课程进度赶得上,可以考虑适当减少第三单元的迭代次数,并适当增加第一单元的迭代次数。

  2、pre中可以适当增加多线程的预习。

  3、研讨课的主题在后期较为难契合同学们的学习需要。(也可能是跟后期线上上课有关系)

posted @ 2022-06-27 21:10  CoolColoury  阅读(33)  评论(0编辑  收藏  举报