第四章
动态模型
*
回顾 2-1
关键抽象是一个类或一个对象,可组成问题域词汇的一部分
在派生关键抽象时,一定要记住抽象的层次不应过高或过低
可通过以下方面标识类:
需求说明
用例
应用程序专家
研究系统
*
回顾 2-2
对象是类的实例,因此对象图与类图相似
类之间的各种类型的关系包括:
关联
泛化
依赖
聚合
组合
继承
*
目标
列出动态模型的优点
理解动态模型的组件
用 XDE 制作时序图
用 XDE 制作状态图
用 XDE 制作活动图
*
简介
模型表示系统静态和动态的行为。这种表示形式可为
同一系统提供不同的视角
静态模型展示了构思中的系统结构方面
动态模型是系统的表示形式,也就是过程和行为的集合
*
采用动态
建模的优点
明确性
简易性
可视性
动态模型的优越性 2-1
动态模型描述系统与操作时间和顺序有关的系统方面、影响更改的事件、事件的序列、事件的环境以及事件的组织
使用高级表示层通常可导致使用更少但更广泛的结构
模型可按数据实际存储的方式表示数据,这有助于开发人员熟悉将要使用的数据
图示是通过列表和图
指明错误的简单方法
*
操作和维护模型比操作和维护实际系统容易得多
使用户和开发人员都能更容易地理解构思中的系统
可助于解释状态的改变和降低复杂度
可监视构思中的系统是否存在任何类型的缺陷
动态模型的优越性 2-2
动态模型的优越性
*
动态模型的组件 5-1
状态图
时序图
活动图
协作图
动态模型的组件
*
动态模型的组件 5-2
状态1
状态2
初始状态
如果无效
则重复状态
1
如果有效
则转换状态 2
最终状态
状态图描述了单个事物如何为响应发生的事件而更改状态和生成响应,并通过此方式与其环境进行交互
状态图示例如下所示:
*
动态模型的组件 5-3
时序图用于按时间顺序模拟控制流程。它显示了在对象生命线上各点之间的对象传递的消息,演示了在时间序列中对象之间的交互
时序图示例如下所示:
时序图示例
*
动态模型的组件 5-4
协作图用于按组织模拟控制流程。消息在对象之间传递,
但重点应在于演示或检测对象间结构样式的协作
协作图示例
*
动态模型的组件 5-5
活动图显示活动与活动之间的流程。活动是状态机中
当前执行的活动,由作用于系统状态的操作组成
活动图示例
操作活动1
操作活动2
操作活动3
初始状态
结束状态
操作活动4
*
时序图演示按时间序列安排的交互,用于显示特定用例
或特定用例某部分的详细流程
时序图
时序图 6-1
*
时序图 6-2
在显示递归时,事件箭头会回到从其开始的同一对象处 ,“validateCoin”方法调用就是一个递归调用,其目的为验证硬币。
可通过验证硬币的重量及其尺寸来执行硬币的验证
递归
递规
*
时序图 6-3
在Rational XDE中单击“文件”->“Open Rational…”打开第二章创建的“在线拍卖”系统的工程。
创建一个类图
演示:创建时序图的步骤。
*
时序图 6-4
在 Model Explorer 中,右击要在其中添加新图
的模型,然后选择“Add Diagram”,再从不同的
图类型中选择“Sequence :Role”,创建一个时序图。从 Model Explorer 中拖出参与者“买主” 和 步骤2创建的所有分析类,放置到时序图上 。
*
时序图 6-5
创建对象之间的消息传递
演示:创建时序图的步骤。
*
时序图 6-6
竞拍用例的时序图
演示:创建时序图的步骤。
*
状态图 4-1
状态图显示对象在生命周期内响应外部事件和消息时所经历的状态序列。
状态图
未结算的余额
更新余额
支票存款
支票结算
*
在 Model Explorer 中,右击然后并单击“Add Diagram”>“Statechart”。
状态图 4-2
创建一个工程后,再创建状态图
演示:创建状态图的步骤。
*
状态图 4-3
创建状态图符号
演示:创建状态图的步骤。
状态图中的用户帐户的各种状态
*
创建转换
状态图 4-4
演示:创建状态图的步骤。
状态图中的转换
*
活动图 4-1
活动图
活动图通过显示已执行活动的序列描述活动的状态。
活动图描述系统的工作流行为
第二天到货
紧急定货
否则
接到订单
订单填写
结束订单
发送发票
收到付款
常规交付
*
活动图 4-2
创建一个工程,再右击 Model Explorer ,然后单击“Add Diagram”>“Activity”。在模型中添加一个新的活动图 。
新建一个活动图
*
活动图 4-3
创建活动及连接
活动图中的活动与连接
*
活动图 4-4
创建分支
活动图中的分支
*
总结
明确性、可视性和简易性是促使动态建模得以接受的几个优点
时序图用纵轴表示对象,用横轴表示对象间传递的消息
协作图是时序图的备选视图
状态图着重于响应消息时在对象中发生的事件
可用活动图表示整个业务流程