第10章UML状态机图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
第10章 状 态 机 图
状态机图描述从一种状态迁移 到另一种状态的控制流程,常 用来对系统的动态特征进行建 模。在大多数情况下,它用来 对反应型对象(外部事件触发对 象,对象接收到事件后产生响 应)的行为建模。
3
10.1 什么是状态机图
状态机图描述对象在整 个生命周期内,在外部 事件的作用下,从一种 状态迁移到另一种状态 的关系图。利用状态图 可以精确地描述对象在 生命周期内的行为特征。 状态图的节点是状态(包 括初始状态和终止状态), 关系是迁移。如图10-1 所示便是一个典型的状 态机图。
(1) (2) (3) 0或多个事件。 0或多个监护条件。 0或多个动作。
7
10.2.2 迁移的表示
图10-7所示为烧水器的 状态图。我们用该图说明 迁移的三要素。
8
10.2.2 迁移的表示
1.源状态
2.目标状态
3.事件
1) 2) 3) 4) 调用事件 信号事件 改变事件 时间事件
4.监护条件
5.动作
21
10.4.4 子状态机间的异步通信
在很多情况下,并发子状态机之间可能需要异步通信。为了实 现异步通信,我们采用的策略是:一个子状态机设置某个属性 值,在另一个子状态机中,在某个迁移的监护条件中使用该属 性值。 在图10-23中,订单处理状态包含了两个并发的子状态机:第 一个子状态机包含两个状态,即接收支付和已支付;第二个子 状态机也包含两个状态,即配货和发货。
17
10.4.2 复合状态
复合状态是指状态本身包含 一个或者多个子状态机的状 态。复合状态中包含的多个 子状态之间的关系有两种: 一种是并发关系,另一种是 互斥关系。
如果子状态是并发关系,则 称子状态为并发子状态;如 果子状态是互斥关系,则称 子状态为顺序子状态。
1.顺序子状态
18
10.4.2 复合状态
10
10.3 迁移的分类
迁移表示当一个外部事件作用于对象,在监护 条件得到满足时,对象在源状态下执行一系列 的动作后,转向目标状态。迁移ຫໍສະໝຸດ Baidu入的状态称 为活动状态,迁移离开的状态变为非活动状态。
迁移通常分为外部迁移(用实线箭头表示)、内 部迁移(在状态的第二栏中表示,格式是:事件 名/动作名)、自动迁移(不需要监护条件下,离 开原先状态,然后又回到原先状态)和复合迁移 4种。
22
10.4.5 建立状态机图的步骤
绘制状态机图的一般步骤如下。
(1) 寻找主要的状态。 (2) 寻找外部事件,以便确定状态 之间的迁移。 (3) 详细描述每个状态和迁移。 (4) 把简单状态图迁移为复合状态 图。
23
10.5 状态机图应用
1.对对象的生命 周期建模 2.对反应型对象 建模
24
2.并发子状态
19
10.4.2 复合状态
3.复合状态表示法
1) 将子状态机嵌入圆角矩形中 2) 将复合图标嵌入圆角矩形中
20
10.4.3 历史状态
当状态机通过迁移从某种状态转入复合状态时,被嵌套的子状态 机一般要从子状态机的初始状态开始执行,除非转到特定的子状 态。 但是在有些情况下,当离开一个复合状态,重新又进入复合状态 时,并不希望从复合包含的子状态机的初始状态开始执行,而是 希望直接进入上次离开复合状态时的最后一个活动子状态,此时 需要用一个包含字母“H”的小圆圈表示最后一个活动子状态,称 为历史状态。 下面考虑一个MP3播放器对象的状态图,如图10-22所示。
6
10.2.2 迁移的表示
迁移是指对象在事件的作用下,当监护条件为 真时执行一定的动作。迁移分四种类型(外部迁 移、内部迁移、自动迁移和复合迁移)。下面主 要介绍外部迁移的表示法。
外部迁移用带箭头的直线表示,箭尾连接源状 态(转出的状态),箭头连接目标状态(转入的状 态)。每个迁移可能包含三个要素:
14
10.3.4 复合迁移
复合迁移由简单迁移组成,它通过分支判定, 把多个简单迁移组合在一起,如图10-17所示。
15
10.4 状态的分类
状态机图中的状 态分为简单状态和 复合状态两种。
16
10.4.1 简单状态
简单状态是指不包含子状态的状态,但简单状 态可以具有内部迁移、入口动作和出口动作等。 如图10-18所示的便是某销售POS机的工作流程: 当客户到收银台后,收银员逐一输入用户购买 的商品,输入完之后,计算出总金额,然后等 待用户付款,确定支付成功之后,完成收银, 等待下一个客户。
11
10.3.1 外部迁移
外部迁移是一种改变对象状态的迁移。外部迁 移用从源状态到目标状态的箭头表示。如图1015所示即描述了火车上卫生间的简单状态迁移, 该卫生间存在3个状态,包含5个外部迁移。
12
10.3.2 内部迁移
内部迁移是指状态不变的情况下,事件引发的动作。 内部迁移自始至终都不离开源状态,所以不会产生入 口动作和出口动作。因此,当对象处于某个状态进行 一些动作时,可以把这些动作看成是内部迁移。 在图10-16中,当处在登录口令状态(Enter Password) 时,以下的两个动作都不会改变当前的状态。
4
10.2 状态图的表示
一个状态图包含的元 素有初始状态、终止状 态、状态、迁移和分支, 下面分别描述元素的语 义和表示方法。
5
10.2.1 状态的表示
1.初始状态 2.终止状态 3.状态
(1) (2) (3) (4) (5) 状态名称 entry/action exit/action do/activity event/action(argument)
6.活动 7.理解简单状态图
9
10.2.3 分支的表示
对象在外部事件的作用下,根据监护条件的不同值, 转向不同的目标状态,即对象的状态根据监护条件的 取值而发生分支。分支用空心小菱形表示,如图10-13 所示。
根据监护条件的真假可以触发不同的分支迁移。如图 10-14所示,对象处于状态1时,当某个事件作用于对 象,这时就要计算监护条件,当条件满足时(true),对 象的状态变为状态2;当条件不满足时(false),对象状 态变为状态3。
10.6 小

本章介绍了状态的概念和 UML表示法,然后引入状态 机的概念,并通过例子逐一 说明简单状态机图、复合状 态的状态机图的概念。
25
10.7 习

1.对象的状态的语义是什么?对象的状态和对 象的属性有什么区别?
2.状态机与状态图有什么区别?
3.状态机图由哪5个部分组成?
4.举例说明迁移的类型和表示方法。
(1) 用户设置密码时,当前状态不会发生改变,可以把 这一动作建模为内部迁移:set/reset password。 (2) 显示帮助时,当前状态也不会改变,可以把这一动 作建模为内部迁移:help/show help。
13
10.3.3 自动迁移
自动迁移是指在没有事件 触发的情况下,当监护条件 为真时执行某些动作。它是 离开某个状态后重新进入原 先的状态,激发状态的入口 动作和出口动作的执行。
5.举例说明:简单状态、顺序子状态、互斥子 状态、历史状态的表示法和应用。
相关文档
最新文档