面向对象第四单元总结


面向对象第三单元总结

目录

  • 总结本单元作业的架构设计
  • 总结自己在四个单元中架构设计思维及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课程,在构造测试数据的同时也可以进一步加深我们对作业要求的理解,换一个角度思考有时也能帮我们找到没有考虑完全的一些情况,测试应该是必不可少的一个环节,其与任务的基本实现是相辅相成的。

课程收获

  • 心态
  • 测试
  • 多线程
  • JML和UML图
  • 面向对象思想

改进建议

  • 一些架构设计的理论不能很好地运用到实际当中,虽然每个单元的Training可能会有这些思想的案例体现,但感觉每一个单元可以将这一部分更好地显式化,每个单元给出样例并深度讲解一个架构模型,进一步加深认识 与实践的结合;
  • 适当提高中测数据的覆盖率;
  • 在预习课程中加入多线程的预习部分;

原创文章,作者:jamestackk,如若转载,请注明出处:https://blog.ytso.com/270707.html

(0)
上一篇 2022年6月29日
下一篇 2022年6月29日

相关推荐

发表回复

登录后才能评论