面向对象第四单元总结

面向对象第三单元总结

目录

  • 总结本单元作业的架构设计
  • 总结自己在四个单元中架构设计思维及OO方法理解的演进
  • 总结自己在四个单元中测试理解与实践的演进
  • 总结自己的课程收获
  • 立足于自己的体会给课程提三个具体的改进建议

框架设计

  • hw13
    查询指令(仅限类图)

      - 类数量
      - 类的子类数量
      - 类的操作数量
      - 类的操作可见性
      - 类的操作的耦合度
      - 类的属性的耦合度
      - 类实现的全部接口
      - 类的继承深度
    
    • 新建myelement-package
      • 包含MyClass,MyInterface,MyOperation类,分别记录UMLClass,UMLInterface,UMLOperation类的附加信息
    • MyImplementation
      • 使用hashMap存储class,generation,uterface,association,operation等信息以及相关关系(如operation与class 的归属关系,重名类的关系等)
    • 分三次读入元素
      • 第一遍 ——— UML_CLASS、UML_INTERFACE
      • 第二遍 ——— UML_ATTRIBUTE、UML_OPERATION、UML_ASSOCIATION、UML_GENERALIZATION、UML_INTERFACE_REALIZATION
      • 第三遍 ——— UML_ASSOCIATION_END、UML_PARAMETER
  • hw14
    查询指令(新增顺序图和状态图)

      状态图
      - 指定状态机(statemachine)查询状态数量
      - 判断指定状态是否为状态机中的关键状态
      - 两个给定状态间引发状态迁移的所有触发事件
      顺序图
      - 顺序图参与对象数量(包含lifeline与endpoint)
      - 查找对象的创建者
      - lost和found消息数量查询
    
    • 新建state-package
      • MyStateMachine,MyState,MyTransition分别用来记录UML对应元素的附加信息
      • MyCircle处理状态图相关问题
    • 新建collaboration-package
      • MyInteraction,MyLifeline用来记录UML对应元素的附加信息
    • 分三次读入元素
      • 第一遍 ——— UML_CLASS、UML_INTERFACE 、 UML_REGION 、 UML_STATE_MACHINE 、 UML_INTERACTION
      • 第二遍 ——— UML_ATTRIBUTE、UML_OPERATION、UML_ASSOCIATION、UML_GENERALIZATION、UML_INTERFACE_REALIZATION 、 UML_STATE 、 UML_PSEUDOSTATE 、 UML_FINAL_STATE 、 UML_LIFELINE 、 UML_ENDPOINT
      • 第三遍 ——— UML_ASSOCIATION_END、UML_PARAMETER 、 UML_EVENT 、 UML_OPAQUE_BEHAVIOR 、 UML_MESSAGE 、 UML_TRANSITION
  • hw15
    模型有效性检查
    hw15集中在模型有效性检查,其顺序执行,发生在查询指令之前,若检测到违反规则,立刻抛出异常并退出

      - R001:查询类图部分元素的name字段是否为空
      - R002:重名成员判断
      - R003:循环继承
      - R004:重复继承
      - R005:接口属性的可见性
      - R006:Lifeline所represent的属性是否与其在同一个collaboration
      - R007:delete后的lifeline不能收到消息
    
    • 新建nine-package解决R009检查问题
      • CircleGeneration记录循环继承情况,建立对应的有向图
      • Node结点类,记录结点Myclass 、 Myinterface及其余附加信息
    • 分三次读入元素
      • 第一遍 ——— UML_CLASS、UML_INTERFACE 、 UML_REGION 、 UML_STATE_MACHINE 、 UML_INTERACTION
      • 第二遍 ——— UML_ATTRIBUTE、UML_OPERATION、UML_ASSOCIATION、UML_GENERALIZATION、UML_INTERFACE_REALIZATION 、 UML_STATE 、 UML_PSEUDOSTATE 、 UML_FINAL_STATE 、 UML_LIFELINE 、 UML_ENDPOINT
      • 第三遍 ——— UML_ASSOCIATION_END、UML_PARAMETER 、 UML_EVENT 、 UML_OPAQUE_BEHAVIOR 、 UML_MESSAGE 、 UML_TRANSITION

设计思维及oo方法

  • 课程一共分为四个单元
    • 多项式计算
    • 多线程初识,电梯系统模拟
    • JML规格要求下的代码书写
    • UML图解析
      通过四个单元的学习,我对面向对象思想有了更深的理解,从最开始的面向对象与面向过程杂糅到后来逐渐理解面向对象的意义以及如何做到面向对象,抓好模型中的各个作用体元素,将他们合理封装起来,会更有利于我们功能的拓展、获得一个更加清晰的框架。

测试理解与实践

  • 在最开始的第一单元——多项式计算时,基本依靠手搓数据,可能出现一些考虑不全面导致不能完全覆盖所有情况,这也使第一单元出现了一些很简单的bug但手动构造的数据完全未涉及的情况;
  • 第二单元是电梯多线程,在这一单元开始写动手写数据生成机,采用的是完全随机的方式,虽然可能无法做到情况的全覆盖,但也帮助我发现了很多bug;
  • 第三单元和第四单元主要采用和同学对拍的形式进行测试,对个别要求可能会直接采用手搓数据的方式进行情况全覆盖的测试;
  • 在oo课程中,进一步明白了测试的重要性,而怎样进行测试这一问题也贯穿整个oo课程,在构造测试数据的同时也可以进一步加深我们对作业要求的理解,换一个角度思考有时也能帮我们找到没有考虑完全的一些情况,测试应该是必不可少的一个环节,其与任务的基本实现是相辅相成的。

课程收获

  • 心态
    • 通过一学期的学习,我慢慢习惯每周掉入相同的oo循环,从最开始的焦虑不安到越来越从容,我的心态有了显著的进步,每周都是新的挑战,oo让我习惯于循环面对新的挑战,我想这对我之后的学习工作都有很大的帮助,同时经过一学期的历练,我的编程能力也有明显的提高;
  • 测试
    • 最开始手搓数据-随机构造数据-随机/全覆盖数据类型+对拍,一学期下来我充分认识到测试的重要性,也学习到了很多测试方法与测试思想;
  • 多线程、JML和UML图
    • 在课程中初步了解了多线程、JML和UML图的知识,在此基础上完成一些应用于实现;
  • 面向对象思想
    • 通过12次代码作业与4次博客总结,oo思想从理论渗透到实践当中,我对其有了更深的理解与感悟;

改进建议

  • 一些架构设计的理论不能很好地运用到实际当中,虽然每个单元的Training可能会有这些思想的案例体现,但感觉每一个单元可以将这一部分更好地显式化,每个单元给出样例并深度讲解一个架构模型,进一步加深认识 与实践的结合;
  • 适当提高中测数据的覆盖率;
  • 在预习课程中加入多线程的预习部分;
posted @ 2022-06-29 13:29  摘星771  阅读(16)  评论(0编辑  收藏  举报