OO_UML解析_单元总结

 

概述:

       本单元的任务是解析UML类图、顺序图、状态图,完成相应的查询。UML图中的各种元素大致构成一棵树,每个节点都有自己的各种属性信息,不同的节点通过一定的关系来连接,本单元根据已有的连接,采用合适的数据结构来组织各个元素,完成增删查等操作。

 

一、总结本单元两次作业的架构设计

1、第13次作业架构设计

本次作业主要是完成类图的解析,类图中的元素(UmlElement)有

 

元素名

作用

UmlClass

UmlOperation

操作,可根据parentId找到对应的类

UmlAttribute

属性,可根据parentId找到对应的类

UmlParameter

参数,可根据parentId找到对应的操作

UmlInterface

接口

UmlInterfaceRealization

类实现接口

UmlGeneralization

继承,类继承类、接口继承接口

UmlAssociation

关联关系

UmlAssociationEnd

关联的端点,可根据referance找到相应的类或接口

 

第13次作业的架构设计如图:

 

      Myclass重新实现了class,让class中包含了更多有用的信息。类中有自己所实现的所有接口(interface)、类自己的所有操作(operate)、类中的所有属性(attribute)、类的父类,以及各种对类的查询操作。

MyInterface中重新实现了interface,接口中有自己继承的所有的接口,以及各种对接口的查询操作。

MyOperate中重新实现了operate,操作中有自己的所有的参数和参数的类型,以及各种对操作的查询操作。

本次作业的查询主要是针对类和接口的,可以从自己构建的这棵树的顶部往下查找,保存中间结果,使得二次查找节约时间。

 

2、第14次作业架构设计

本次作业主要是完成顺序图和状态图的解析及类图的三个规则验证,新增加的元素有

 

元素名

作用

UmlInteraction

顺序图

UmlLifeline

参与对象

UmlMessage

消息

UmlTransition

消息传递

UmlStateMachine

状态机

UmlRegion

状态机中region,每个状态机只有一层region

UmlPseudostate

起始状态

UmlState

普通状态

UmlFinalState

终止状态

 

第14次作业的架构设计如图: 

 状态图:

MyMachine重新实现machine,代表一个状态机,状态机中存放着自己的regions,以及各种对状态机的查询操作。

MyRegion重新实现region,region中存放着自己的各种状态(state),以及各种对region的查询操作。

MyState重新实现state,其中存放着自己的各个后继状态,记忆各种对state的查询操作。

对状态机的所有查询都可以通过MyMachine自顶向下的查到。

 

顺序图:

MyInteraction重新实现interaction,其中存放着该顺序图中所有的lifeline和message,和各种对该顺序图的各种查询操作。

MyLifeline重新实现了lifeline,其中存放着该对象的所有incoming消息,和各种对该对象的查询操作。

Mymessage重新实现了message,其中存放着该maessage的两个端点的对象,方便查询操作。

对顺序图的所有查询都可以通过MyInteraction自顶向下查到。

 

二、总结自己在四个单元中架构设计及OO方法理解的演进 

       第一单元多项式求导,我的架构主要是考虑将读取处理字符串与求导这两种功能相分离,每种功能单独实现了一个类。第一单元前两次作业过程化思想比较严重,感觉并没有实现真正的面向对象。第一单元第三次作业,由于变得复杂了,所以,将不同类型的对象进行单独的封装才能更清晰简单的实现,故第三次作业让我真正的理解和实现了面向对象语言。

 

       第二单元多线程电梯,本单元的架构设计为将电梯和调度器单独封装为类,每个类实现自己的功能,从而将复杂的问题简单化。每部电梯为一个线程,内部实现了自己的开关门、上下客方法和运行逻辑;由调度器实现调度策略,根据调度策略,将在不同楼层的不同乘客在适当的时间分配给某一部电梯。本单元第三次作业将三部电梯三个线程,实现了两层调度器,更好的理解了现实生活中的电梯调度场景及线程安全问题。

 

       第三单元JML语言,从少到多最后实现了一个地铁系统。第一次作业实现了一个简单的容器,容器的增删查需要用不同的数据结构来提高效率;第二次作业实现了一张图,图中的距离查找要用到图论中的算法,例如迪杰斯特拉或floyd;第三次作业是实现一个地铁系统,整个系统用一张图来存储,地铁中的每个站点表示为图中的一个点,根据不同的查询需求初始化不同的图,之后在图上进行搜索。这次作业让我复习了图论,也理解了好好的设计整体架构比早早写代码更重要的道理。

 

       第四单元UML图解析,UML图中的每个元素构成了一棵树,本单元复习了数据结构中的树,复习了建树和树上查找,更好的理解了UML模型。

 

       第三单元和第四单元虽然整个系统很庞大,但是需要我们实现的不多,大部分是由助教们实现的。助教们实现的系统架构有层次,逻辑清晰,值得我们学习。

 

三、总结自己在四个单元中测试理解与实践的演进

       一开始的测试总是希望能够做到全面,每个角度都考虑到不放过,后来发现作业中涉及的情况太多,根本不可能做到全面覆盖的测试。之后学会了在架构上多花时间,争取让自己的代码少些bug,而不是通过测试来修正bug。在测试的时候,虽然做不到全覆盖,但也要尽可能全面的测试,特别是针对自己的代码,要能够对代码中的每个分支都测到,通过各方面来保证正确性。

 

四、总结自己的课程收获

       通过学习本课程我学会了java这种面向对象语言,理解了面向对象语言与过程式语言的区别,理解了多线程调度的高效率与高风险,学会了JML语言,理解了UML模型。这门课让我增强了短时间内理解需求并实现相应代码的能力,提高了我的抗压能力和心理素质,收获颇丰。

 

五、立足于自己的体会给课程提三个具体改进建议

1、希望能够高工的同学开放bug修复窗口,不然很有可能这次的bug修复不了导致之后一直存在bug。

2、希望课程网站的重要通知能够以微信qq等即时通讯工具广而告之,很多同学完成作业之后不会再关注讨论区,从而错过重要通知。

3、对于有时间限制的作业,希望能够开放一个窗口,提交自己的代码和自己的测试用例,返回运行时间。以帮助大家判断自己的代码是否会超时。

 

转载于:https://www.cnblogs.com/buaa16231053/p/11054575.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值