第六章 状态图

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在UML中,转换用带箭头的直线表示,直线的一端连接
源状态,箭头一端指向目标状态。 转换涉及的内容包括源状态、触发事件、监护条件、
动作和目标状态。
在状态转换中除了源状态和目标状态,还需要掌握外 部转换、内部转换、完成转换、监护条件、初始状态和终 止状态5个概念。在转换中,这5部分信息并不一定都是同
时存在的。
6.4.2 并发状态
所有这些与前面的顺序子状态的转移同时进行。尽管 每个状态序列是一组顺序子状态,但是两个状态序列之间 是并发关系。并发状态之间用虚线隔开,表示状态序列之
间是并发关系。
例如,获取驾驶执照在报名后,需要在理论学习后通 过理论考试、自主练车和教练专人指导后通过驾驶,而这 些都以并行开始。 包含并发子状态机的复合状态“学习”中有2个并发 区域,也就是当已报名考取驾照之后就可以根据自身情况 时间安排学习了,着手进行理论学习和理论考试、自主练 车等。 (1)如果理论考试不及格,则直接转换到状态“未能获得 驾照”;同样驾驶考试不通过,也直接转换到状态“未能 获得驾照”。 (2)要想获得驾照,则必须将两个并发区域中的每个状态 机都转换到终态,即经过理论学习通过理论考试、经过自 主练车和教练专人指导通过驾驶考试。
3、完成转换 完成转换是没有明确标明触发器事件的转换,它由状 态中活动的完成引起。完成转换也可以带一个监护条件,
这个监护条件在状态中的活动完成时被赋值,而不是活动
完成后被赋值。
4、监护条件 是一个布尔表达式。当对象接收到触发事件要触发转 换时,对该布尔表达式求值。若为真,则激活转换;取值 为假,则不激活转换,所接收到的触发事件丢失。
(3)事件 事件指的是发生在时间和空间上对状态机来讲有意义 的事情,事件通常会引起状态的变迁。 (4)活动 活动指的是状态机中进行的非原子的执行,由一系列动 作组成。
(5)转换
转换指的是两个不同状态之间的一种关系。事件可以 触发状态之间的转换。
通常一个状态机依附于一个类,并且描述该类
的实例(即对象)对接收到的事件的响应。状态 机是一个对象、协作或用例的局部视图,所以适
1、外部转换 外部转换是一种改变状态的转换,在UML中,它用从 源状态到目标状态的带箭头的线段表示,其他属性以文字 串附加在箭头旁。 如图6-4所示 要注意的是:只有内部状态上没有转换时,外部状态 上的转换才有资格被激发。否则,外部转换会被内部转换 所掩盖。
2、内部转换 内部转换只有源状态,没有目标状态,不会激发入 口和出口动作。因此内部转换激发的结果不改变本来的 状态。如果一个内部转换带有动作,它也要被执行。内 部转换常用于对不改变状态的插入动作建立模型。 需要注意的是内部转换的激发可能会掩盖使用相同 事件的外部转换。
件,它在一个时间点上发生,没有持续的时间段。
在状态机中,一个事件的出现可以触发状态的改变。 事件主要包括:信号事件、触犯器事件、调用事件、改变
事件和时间事件等。
1、信号事件 信号事件指在实时系统运行中,对象接收到一个系统外 界的信号,从而使对象的状态发生迁移的事件。 信号事件中的信号是作为两个对象之间的通信媒介的命 名的实体,它以对象之间显示通信为目的。
改变事件指对象的内部或外部条件发生变化而引起的对
象状态发生变化的事件。
4、触发器事件 指的是引起源状态转换的事件。事件不是持续发生的, 它只发生在时间的一点上,对象接收到事件,导致源状态 发生变化,激活转换并使监护条件得到满足。
5、调用事件 调用对象是指系统之外的其他系统通过接口和某种协 议,直接执行该系统内部的对象行为,从而引发对象状 态的迁移。 指的是一个过程的执行点上激发一个操作,它将一个 控制线程暂时从调用过程转换到被调用过程。调用发生 时,调用过程的执行被阻断,并且在操作执行中调用者 放弃控制,直到操作返回时重新获得控制。
6.2.4 同步
同步是为了说明并发工作流的分支与汇合,状态图和 活动图中都可能用到同步。在UML中,同步用一条线段来 表示。 同步用一条线段来表示,如图。
并发分支表示把一个单独的工作流分成两个或多个工 作流,几个分支的工作流并行进行。 并发汇合表示两个或者多个并发的工作流在此得到同
步,这意味着先完成的工作流需要在此等待,直到所有的
事件的种类
事件类型 调用事件 改变事件 信号事件 时间事件 描述 接收一个对象显示 的同步调用请求 对布尔表达式的值 的修改 语法 事件名(参数) When
接收对象间显示的、 信号名(参数) 已命名的异步通信 一个绝对时间的到 达或相对时间的消 耗 After
6.3.2 动作
动作通常是一个简短的计算处理过程或一组可执行语 句。动作也可以是一个动作序列,即一系列简单的动作。 通过动作可以给另一个对象发送消息、调用一个操作、 设置返回值、创建和销毁对象。
动作的种类
动作种类 赋值 调用 创建 销毁 描述 对一个变量赋值 调用对目标对象的一个操作,等待操作执行结束, 并且可能有一个返回值 创建一个新对象 销毁一个对象
返回
发送 终止 不可中断
为调用者制定返回值
创建一个信号实例并将其发送到目标对象或者一组 目标对象 对象的自我销毁 用语言说明的动作,如条件和迭代
2、入口和出口动作 状态可能具有入口和出口动作。这些动作的目的是封装 这个状态,这样就可以不知道状态的内部状态而在外部使
用它。
入口和出口动作分别指的是进入和退出一个状态时所执 行的“边界”动作。入口动作,即系统进入该状态时要发
生的动作;出口动作,即系统离开该状态时要发生的动作。
3、内部活动 状态可以包含描述为表达式的内部活动。当状态进入 时,活动在进入动作完成后就开始。如果活动结束,状
5、初始状态和终止状态 初始状态代表状态图的起始位置,在UML中一个状态 图只能有一个初始状态,用一个实心圆表示。 终止状态是一个状态图的终点,一个状态图可以拥有 一个或者多个终止状态。
6.2.3 判定
判定又称为“决策点”,它用来表示一个事件依据不 同的监护条件有不同的影响。判定将转换路径分为多个部 分,每一个部分都是一个分支,都有单独的监护条件。在 UML中判定用空心菱形表示。 在状态图中,判定可以覆盖所有的可能,保证一些转 换被激发。否则,状态图就会因为输出转换不再重新激发 而被冻结。 通常情况下判定有一个转入和两个转出,根据监护条 件的真假可以触发不同的分支转换,如图。
ADSL拨号过程的状态机,它将拨号过程封装成一个组 合状态“连接ISP”。最初的状态是“未连接”,当用户发 出指令时,将进入“连接ISP”状态,如果在此过程中用户 取消拨号或发现无拨号音,无应答音时将回到“未连接” 状态,如果收到应答音,则进入“已连接”状态。 建立大致印象后再分析组合状态“连接ISP”,会发现 组合状态中也包含一个初态和终态,这是复杂组合状态所 包含的状态机的初态和终态。
6.4 常用状态的种类
通常状态可以分为简单状态和复合状态。简单状态指 的是不包含其他状态的状态,也就是说简单状态没有子 结构。 而复合状态包括顺序状态、并发状态和历史状态等, 它们都具有子结构,即一个系统在同一时刻可以包含多 个状态。
6.4.1 顺序状态
如果多个子状态之间是互相排斥而不能同时存在的, 这种状态称为顺序状态。一个顺序状态最多可以有一个初 始状态和一个终止状态。 正如名字所暗示那样,顺序状态按照顺序一个接着一个 出现。
6.2 状态图中的标记
状态图主要由以下标记符组成: 状态 转换(或转移) 判定 同步
6.2.1 状态
• 状态图描述了一个类对象生命周期中的一个时间段。 状态用于对实体在其生命周期中的各种状况进行建模,状 态由一个带圆角的矩形表示。

状态中包括状态名、入口和出口动作、内部活动、内部
转换以及嵌套状态组成部分。
态就完成,然后一个从这个状态出发的转换被触发,否
则状态等待触发转换以引起状态本身的改变。如果在活 动正在执行时转换触发,那么活动被迫结束并且退出动 作被执行。
4、内部转换 内部转换指的是不导致状态改变的转换。内部转换中 可以包含进入或者退出该状态应该执行的活动或动作。 状态可能包含一系列的内部转换,内部转换因为只有 源状态而没有目标状态,所以内部转换的结果并不改变状 态本身。

状态图主要是明确地说明在什么状态下,哪些事件
是有效的,哪些事件是无效的。状态图还可以让我们规划 及掌握交互系统的明确行为,以达到准确控制整个系统的
目的。

• •
状态图可以描述一个特定对象的全部能够存
在的状态,还可以描述引起状态转移的事件。 状态图描述一个对象在不同事件的驱动下发生 的状态迁移。 一般面向对象技术使用状态图来表示单个对
1、状态名 状态名可以把一个状态和其他状态区分开来。状态名 指的是状态的名称,通常用字符串表示, 其中每个单词的
首字母大写。状态名可以包含任意数量的字母、数字和除
冒号之外的一些符号。状态名通常放在状态图标的顶部。 要注意的是:一个状态的名称在状态图所在的上下文
中应该是唯一的,能够把该状态和其他状态区分开。
工作流到达后,才能继续执行以下的工作流。
要注意同步与判定的区别: 判定是根据监护条件使工作流分支,监护条件的取值 最终只会触发一个分支的执行。例如,如果分支A和分支B, 假设监护条件为真时执行分支A,那么分支B就不可能被执 行,反之则执行分支B,分支A就不可能被执行。 而同步的不同分支是并发执行的,并不会因为一个分 支的执行造成其他分支的中断。
如果对象的事件在对象正处在拥有转换的状态时发生, 那么内部转换上的动作也被执行。
5、嵌套状态 状态分为简单状态和组成状态。简单状态是在语义上 不可分解的、对象保持一定属性值的状况;而组成状态是 内部嵌套有子状态的状态。
6.2.2 转换
转换用于表示一个状态机的两个状态之间的一种关系, 即一个在某初始状态的对象通过执行指定的动作并符合一 定的条件下进入第二种状态。
第六章 状态图
本章要点
状态图的定义和作用 状态图中的事件和动作 • 基础内容:状态图中各种标记的表示 • 重点掌握:状态图中的状态、转换和判定 • 一般了解:状态图中的历史状态

源自文库
UML的状态图(state diagram)能够展示这种变化。它 描述了一个对象所处的可能状态以及状态之间的转换,并 给出了状态变化序列的起点和终点。
6.3 状态图中的动作和事件
状态转移线添加一些细节,可以指明引起转移发生的 事件和引起状态变化所需执行的计算(动作)。 添加的事件和动作写在转移线上,触发器事件和动作
名之间用反斜杠隔开。
6.3.1 事件
事件表示对象可以探测到的各种变化——如接收到从 一个对象到另一个对象的调用或显示信号,某些值的改变 或时间的流逝。任何能够影响到对象的东西都可以称为事
合对局部、细节进行建模。
二、状态图
状态图是对类所描述事件的补充说明,它显示了类的 所有对象可能具有的状态,以及引起状态变化的事件。
状态图本质上是一个状态机,状态图描述了一个实体
基于事件反应的动态行为,显示了该实体如何根据当前所 处的状态对不同的事件做出反应。
状态图由表示状态的节点和表示状态之间转换的带箭头 的直线组成,若干个状态由一条或者多条转换箭头连接, 状态的转换由事件触发。 (1)状态:用一个带圆角的矩形表示,框内标有状态的名 称和其他信息 (2)转换:用带箭头的直线表示,从出发状态指向目标状 态。 (3)开始状态:是状态图的起点,用实心圆表示。 (4)结束状态:是状态图的终点,用一个圆中嵌套一个小 实心圆表示 (5)判定:是状态图中一个特定位置,工作流在此按条件 取值发生分支,用一个空心小菱形表示。 (6)同步:定义了并发工作流的分叉与汇合,用一条粗短 实线表示。 如图6-1
2、时间事件 时间事件表示时间表达式被满足的事件,它代表时间的 流逝,时间事件仅用做转换的触发。
指对象的状态在绝对时间上或某个时间段内自动发生迁
移。时间事件经常由系统外界设定的时间段产生,其时间 表的运行可能来源于操作系统,或者是系统应用中的自身
运算。
3、改变事件 指的是依赖于特定属性值的布尔表达式所表示的条件满 足时,事件发生改变。
象在其生命周期中的行为,描述的是一个对象的
生命周期。
6.1 状态图的定义
• 一、状态机
状态机由状态、动作、事件、活动和转换5部分组成。 (1)状态 状态指的是对象在其生命周期中的一种状况,处于某个 特定状态中的对象必然会满足某些条件、执行某些动作或 者等待某些事件。 (2)动作 动作指的是状态机中可以执行的原子操作。 原子操作指的是它们在运行的过程中不能被其他消息 所中断,必须一致执行下去,最终导致状态的变更或者返 回一个值。
相关文档
最新文档