面向对象第三单元总结
目录
- 总结本单元作业的架构设计
- 总结自己在四个单元中架构设计思维及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
- 新建myelement-package
-
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
- 新建state-package
-
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
- 新建nine-package解决R009检查问题
设计思维及oo方法
- 课程一共分为四个单元
- 多项式计算
- 多线程初识,电梯系统模拟
- JML规格要求下的代码书写
- UML图解析
测试理解与实践
- 在最开始的第一单元——多项式计算时,基本依靠手搓数据,可能出现一些考虑不全面导致不能完全覆盖所有情况,这也使第一单元出现了一些很简单的bug但手动构造的数据完全未涉及的情况;
- 第二单元是电梯多线程,在这一单元开始写动手写数据生成机,采用的是完全随机的方式,虽然可能无法做到情况的全覆盖,但也帮助我发现了很多bug;
- 第三单元和第四单元主要采用和同学对拍的形式进行测试,对个别要求可能会直接采用手搓数据的方式进行情况全覆盖的测试;
- 在oo课程中,进一步明白了测试的重要性,而怎样进行测试这一问题也贯穿整个oo课程,在构造测试数据的同时也可以进一步加深我们对作业要求的理解,换一个角度思考有时也能帮我们找到没有考虑完全的一些情况,测试应该是必不可少的一个环节,其与任务的基本实现是相辅相成的。
课程收获
- 心态
- 测试
- 多线程
- JML和UML图
- 面向对象思想
改进建议
- 一些架构设计的理论不能很好地运用到实际当中,虽然每个单元的Training可能会有这些思想的案例体现,但感觉每一个单元可以将这一部分更好地显式化,每个单元给出样例并深度讲解一个架构模型,进一步加深认识 与实践的结合;
- 适当提高中测数据的覆盖率;
- 在预习课程中加入多线程的预习部分;
原创文章,作者:jamestackk,如若转载,请注明出处:https://blog.ytso.com/270707.html