第7章状态机图 本章导读 状态机图用于对象的行为建模。本章介绍状态机中涉及到的状态、状态转换、事件、 复合状态、并发状态、子机状态、控制结点等概念,并给出几个状态机模型的实例。 主要知识点 状态 状态转换 ■事件 复合状态 并发状态 控制结点 子机状态 ■状态机
1 第 7 章 状态机图 本章导读 状态机图用于对象的行为建模。本章介绍状态机中涉及到的状态、状态转换、事件、 复合状态、并发状态、子机状态、控制结点等概念,并给出几个状态机模型的实例。 主要知识点 ■ 状态 ■ 状态转换 ■ 事件 ■ 复合状态 ■ 并发状态 ■ 控制结点 ■ 子机状态 ■ 状态机
7.1几个基本概念 711状态 状态( (state指事物在其生命周期中满足某些条件、执行某些操作或等待某些事件而持 续的一种稳定的状况。一个事物在它的生命期中会有一系列状态,处于某种状态意味着 它满足某些条件,执行特定活动,或者等待某些事件发生,每个状态都需持续一段有限 的时间。例如,设备具有待用、运行和故障等状态。设备在待用状态如果启动运行,则 进入运行状态,如果关闭设备则又回到待用状态。当设备出现故障则进入故障状态,设 备被维修好后又返回到待用状态 712状态机 状态机 (state machine)描述一个事物在其生命期中,所具有的状态,以及因事件触发 而引起的状态的各种转换。一个事物在其生命期中会具有多种状态,并会因事件触发而 引起状态的转换。例如,商店中的商品具有订购、库存、待售、已售、报废等状态。与 供货商签订订单之后,商品处于订购状态,商品到货入库后转为库存状态,商品出库放 到销售货架上处于待售状态,销售出去后进入售出状态,如果因为损坏或清库而报废则 处于报废状态。签订订单、到货入库、出库、销售等是引发商品状态转换的事件。 7.13状态机图 订购 库存 售出 "(" 报废 图71状态机图 状态机图 state machine diagram)是UM用来描述状态机的图,在UML20版本之前, 状态机图被称为状态图。状态机图由状态结点、控制结点和转换边构成。状态结点描述 事物的状态,可分为简单状态、复合状态和子机状态等类型。控制结点用来协调状态关 系、控制状态转换的流程,有开始状态、终止状态、分叉与汇合、选择、汇接等。转换
2 7.1 几个基本概念 7.1.1 状态 状态(state)指事物在其生命周期中满足某些条件、执行某些操作或等待某些事件而持 续的一种稳定的状况。一个事物在它的生命期中会有一系列状态,处于某种状态意味着 它满足某些条件,执行特定活动,或者等待某些事件发生,每个状态都需持续一段有限 的时间。例如,设备具有待用、运行和故障等状态。设备在待用状态如果启动运行,则 进入运行状态,如果关闭设备则又回到待用状态。当设备出现故障则进入故障状态,设 备被维修好后又返回到待用状态。 7.1.2 状态机 状态机(state machine)描述一个事物在其生命期中,所具有的状态,以及因事件触发 而引起的状态的各种转换。一个事物在其生命期中会具有多种状态,并会因事件触发而 引起状态的转换。例如,商店中的商品具有订购、库存、待售、已售、报废等状态。与 供货商签订订单之后,商品处于订购状态,商品到货入库后转为库存状态,商品出库放 到销售货架上处于待售状态,销售出去后进入售出状态,如果因为损坏或清库而报废则 处于报废状态。签订订单、到货入库、出库、销售等是引发商品状态转换的事件。 7.1.3 状态机图 状态机图(state machine diagram)是UML用来描述状态机的图,在UML2.0版本之前, 状态机图被称为状态图。状态机图由状态结点、控制结点和转换边构成。状态结点描述 事物的状态,可分为简单状态、复合状态和子机状态等类型。控制结点用来协调状态关 系、控制状态转换的流程,有开始状态、终止状态、分叉与汇合、选择、汇接等。转换 图 7.1 状态机图
边用来连接状态机图中的结点,表示状态因事件触发,由源状态到目标状态的转换。图 7.1是描述商店商品的状态机图。 7.2状态 7.21状态的表示 状态用圆角矩形表示。每一个状态应该有名字,状态的名字用标识符表示。状态名 如果用英文,第一个字母要大写。状态的名字放在圆角矩形里面,见图72 状态名 闲 图72状态的表示 7.22状态的类型 状态可以分为下面几种类型 1)简单状态:不包含子状态和子机状态的状态,也被称为原子状态 2)复合状态:内部包含子状态的状态 3)子机状态:由状态机作为复合状态中的一个子状态 7.23状态的动作 一个状态的内部可以包括多个动作和事件。当事物处在该状态时,就可能执行这些 动作或事件,状态的动作或事件写到状态名下面,见图73。一个状态可以有入口动作、 出口动作、内部变迁、延迟事件等 状态名 entry/入口动作 do活动 ex出口动作 event事件名/ defer 图73状态动作或事件 1.入口动作 入口动作是转入该状态时,自动执行的第一个动作。在进入该状态后,在该状态中 的其他所有活动均在入口动作之后发生,转入一个状态仅执行一次入口动作。入口动作
3 边用来连接状态机图中的结点,表示状态因事件触发,由源状态到目标状态的转换。图 7.1 是描述商店商品的状态机图。 7.2 状态 7.2.1 状态的表示 状态用圆角矩形表示。每一个状态应该有名字,状态的名字用标识符表示。状态名 如果用英文,第一个字母要大写。状态的名字放在圆角矩形里面,见图 7.2。 7.2.2 状态的类型 状态可以分为下面几种类型: 1)简单状态:不包含子状态和子机状态的状态,也被称为原子状态。 2)复合状态:内部包含子状态的状态。 3)子机状态:由状态机作为复合状态中的一个子状态。 7.2.3 状态的动作 一个状态的内部可以包括多个动作和事件。当事物处在该状态时,就可能执行这些 动作或事件,状态的动作或事件写到状态名下面,见图 7.3。一个状态可以有入口动作、 出口动作、内部变迁、延迟事件等。 状态名 entry/ 入口动作 do/ 活动 exit/ 出口动作 event 事件名/ defer 1. 入口动作 入口动作是转入该状态时,自动执行的第一个动作。在进入该状态后,在该状态中 的其他所有活动均在入口动作之后发生,转入一个状态仅执行一次入口动作。入口动作 图7.2 状态的表示 图 7.3 状态动作或事件
表示为 extry/do shing,例如, extry/dooropen 2.出囗动作 出口动作是转出该状态时,自动执行的最后一个动作。该动作执行之后,就将由该 状态转换到下一个状态。出口动作表示为 exit/do shing,例如, exit/door close 3.内部变迁 内部变迁指在该状态内部执行的动作,该动作不会引起状态的变换。在一个状态内 部可以有多个内部变迁,内部变迁总是在入口行为之后,出口行为之前执行。内部变迁 表示为 do/thing,例如,do/ check 4.延迟事件 延迟事件表示在当前状态下,如果发生某个事件,该事件将被延迟处理。延迟事件 表示为:事件 /defer,例如, print/defer(15),表示打印事件将被延迟15秒。 7.3状态转换 7.31状态转换的概念 状态转换( state transition)是两个状态之间的一种有向关系,表示从源状态转换到 目标状态。状态转换用一个带箭头的实线表示,箭头由源状态指向目标状态。在实线上 标注状态转换的触发事件、监护条件和转换状态的动作,状态转移可表示为图7.4的形 状态 率件[护条件])换动作 状态2 74状态转换 732状态转换的三要素 在某种条件下,发生某种事件,执行某个动作而引起事物从源状态转换到目标状态, 触发事件、监护条件和转换动作被称为引发状态转换的三要素,状态转换的三要素标注 在状态转换线上,见图74 1.触发事件
4 表示为 extry/do shing,例如,extry/dooropen。 2. 出口动作 出口动作是转出该状态时,自动执行的最后一个动作。该动作执行之后,就将由该 状态转换到下一个状态。出口动作表示为 exit/do shing,例如,exit/door close。 3. 内部变迁 内部变迁指在该状态内部执行的动作,该动作不会引起状态的变换。在一个状态内 部可以有多个内部变迁,内部变迁总是在入口行为之后,出口行为之前执行。内部变迁 表示为 do/thing,例如,do/check up on work。 4. 延迟事件 延迟事件表示在当前状态下,如果发生某个事件,该事件将被延迟处理。延迟事件 表示为:事件/defer,例如,print/defer(15),表示打印事件将被延迟 15 秒。 7.3 状态转换 7.3.1 状态转换的概念 状态转换(state transition)是两个状态之间的一种有向关系,表示从源状态转换到 目标状态。状态转换用一个带箭头的实线表示,箭头由源状态指向目标状态。在实线上 标注状态转换的触发事件、监护条件和转换状态的动作,状态转移可表示为图 7.4 的形 式。 7.3.2 状态转换的三要素 在某种条件下,发生某种事件,执行某个动作而引起事物从源状态转换到目标状态, 触发事件、监护条件和转换动作被称为引发状态转换的三要素,状态转换的三要素标注 在状态转换线上,见图 7.4。 1. 触发事件 图 7.4 状态转换
指触发状态转换的事件。例如,开门,关门,入库,出库等。如果在转换中没有触 发事件,则表示源状态执行完成后,不需要事件的触发自动转换到目标状态 2.监护条件 监护条件放到方括号中间,用来监护状态转换。在事件发生后,如果监护条件为真, 则执行动作,并转换状态。如果监护条件为假,则不执行转换动作,也不实施状态转换 如果没有监护条件,则不作条件判断,在事件发生后直接执行转换动作。 3.转换动作 在事件发生后所执行的一组动作,并把状态由源状态转换到目标状态。在动作前置 个“/”。这些行为通常在瞬间完成,不能有明显的时间延续。如果省略动作,则直接 转换状态。 图75表示电梯从待载状态到上升状态的状态情况。电梯在等待载人状态,如果有 人进入,要到达的目标楼层高于当前楼层,则电梯关门上行,进人上升状态 进人[目柝楼>当楼]关门上行 图75电梯的待载状态到上升状态的转换 7.4事件 741事件的概念 在状态机中,事件( event)是指所发生的瞬时事情,它能够引发状态的转换。例如, “按开关”事件能够使马达的状态由关闭转变为转动,“双击鼠标”事件能够使得一个信 息窗口由隐藏变为打开状态。 状态机中的事件的性质有以下两点: (1)瞬时态:事件是瞬时发生的,没有时间的延续。并不是说事件的发生不需要时 间,而是在状态机建模中要求事件发生的时间是短促的,并且不需要表现事件的时延。 (2)原子性:事件不可再分割,即使一个复杂的事件,也被认为是在瞬时发生的 件事情。 7.42事件的类型 1.按事件发生的位置分
5 指触发状态转换的事件。例如,开门,关门,入库,出库等。如果在转换中没有触 发事件,则表示源状态执行完成后,不需要事件的触发自动转换到目标状态。 2. 监护条件 监护条件放到方括号中间,用来监护状态转换。在事件发生后,如果监护条件为真, 则执行动作,并转换状态。如果监护条件为假,则不执行转换动作,也不实施状态转换。 如果没有监护条件,则不作条件判断,在事件发生后直接执行转换动作。 3. 转换动作 在事件发生后所执行的一组动作,并把状态由源状态转换到目标状态。在动作前置 一个“/”。这些行为通常在瞬间完成,不能有明显的时间延续。如果省略动作,则直接 转换状态。 图 7.5 表示电梯从待载状态到上升状态的状态情况。电梯在等待载人状态,如果有 人进入,要到达的目标楼层高于当前楼层,则电梯关门上行,进人上升状态。 7.4 事件 7.4.1 事件的概念 在状态机中,事件(event)是指所发生的瞬时事情,它能够引发状态的转换。例如, “按开关”事件能够使马达的状态由关闭转变为转动,“双击鼠标”事件能够使得一个信 息窗口由隐藏变为打开状态。 状态机中的事件的性质有以下两点: (1) 瞬时态:事件是瞬时发生的,没有时间的延续。并不是说事件的发生不需要时 间,而是在状态机建模中要求事件发生的时间是短促的,并且不需要表现事件的时延。 (2) 原子性:事件不可再分割,即使一个复杂的事件,也被认为是在瞬时发生的一 件事情。 7.4.2 事件的类型 1. 按事件发生的位置分 图 7.5 电梯的待载状态到上升状态的转换
按照事件发生的位置,可以把事件分为外部事件和内部事件两种类型。外部事件指 在系统外部参与者激发的事件。例如,按下按钮是一个外部事件。内部事件指在系统内 部的要素激发的事件。例如,因系统发生溢出,而产生的异常就是一个内部事件。 2.按事件的性质分 按事件的性质可以把事件分为调用事件、信号事件、变化事件和时间事件等4种类 型 743几种不同类型的事件 1.调用事件 调用事件( call event)表示发送对象发给接收对象的调用消息的接收消息事件,并由 该事件触发接收对象的状态转换。调用事件是在接收对象一方发生的接收消息事件,状 态机只关注因调用事件而引起接收对象的状态转换,以及应执行的操作,并不关心发送 对象 图76描述控制器检测到有人进入,给自动门发送 opend消息,启动自动门打开的 顺序图。假设自动门目前处在关闭状态,它接收到控制器发来的open消息事件,自动 门由关闭状态转换到打开状态,见图77。 控制器 自动 [有人进入open0 图76控制器控制自动门打开 [aften60s)]/ close 打开 有人选入]open 图77因调用事件引起自动门状态改变 图76中的有人进入 Opend,是控制器发给自动门的调用消息,该消息中[有人进入] 为条件,open)是调用操作。在图77中,[有人进入是状态转换的监护条件,/open是
6 按照事件发生的位置,可以把事件分为外部事件和内部事件两种类型。外部事件指 在系统外部参与者激发的事件。例如,按下按钮是一个外部事件。内部事件指在系统内 部的要素激发的事件。例如,因系统发生溢出,而产生的异常就是一个内部事件。 2. 按事件的性质分 按事件的性质可以把事件分为调用事件、信号事件、变化事件和时间事件等 4 种类 型。 7.4.3 几种不同类型的事件 1. 调用事件 调用事件(call event)表示发送对象发给接收对象的调用消息的接收消息事件,并由 该事件触发接收对象的状态转换。调用事件是在接收对象一方发生的接收消息事件,状 态机只关注因调用事件而引起接收对象的状态转换,以及应执行的操作,并不关心发送 对象。 图 7.6 描述控制器检测到有人进入,给自动门发送 open()消息,启动自动门打开的 顺序图。假设自动门目前处在关闭状态,它接收到控制器发来的 open()消息事件,自动 门由关闭状态转换到打开状态,见图 7.7。 图 7.6 中的[有人进入]open(),是控制器发给自动门的调用消息,该消息中[有人进入] 为条件,open()是调用操作。在图 7.7 中,[有人进入]是状态转换的监护条件,/open()是 图 7.7 因调用事件引起自动门状态改变 图 7.6 控制器控制自动门打开
转换动作。在图77中并没有标注这个事件,但这个状态转换的触发事件就是自动门接 收到该消息的事件 2.信号事件 信号事件( signal event)表示发送对象发给接收对象的信号消息的接收消息事件,并 由该事件触发接收对象的状态的转换。与调用事件一样,信号事件也是在接收对象一方 发生的接收消息事件,状态机只关注因信号事件而引起接收对象的状态转换,以及应执 行的操作,并不关心发送对象 接收对象在接收到信号调用后,需要执行对象的某一个操作,并引发接收对象的状 态转换。但接收对象在接收到信号事件后,对信号做何处理,则由接收对象当时的场景 和语义所规定,并不一定执行接收对象的某个操作 3.改变事件 改变事件( change event表示当布尔表达式的值改变为真时所激发的事件。系统将 直检测改变事件中的布尔表达式的值,只要它的值改变为真,该事件就被激发。改变事 件一般用关键字when开头的布尔表达式表示,当表达式的值由假变为真时,事件将发 生。例如:when( systemtime=12:00),表示当系统时钟到达12点时,激发该事件。 对改变事件中的布尔表达式的值的判断与状态转换中的监护条件不同。在事件发生 后,判断监护条件,如果监护条件为真,则执行动作,并转换状态。如果监护条件为假, 则不执行转换动作。其前提条件是引发状态转换的事件发生。而系统将一直对改变事件 中的布尔表达式的值进行不间断检测,如果发现其值为真,则引发事件。 when (systime=12: 00)/setTest 空闲 after10sec)/power off 运行 图78改变事件和时间事件示例 4.时间事件 时间事件( time event是经过一定的时间或者到达某个绝对时间时发生的事件。用关 键字afer及时间值表示相对时间,例如,“ after(10sec)”,表示从现在算起,10秒之后 将发生该事件。用关键字at及时间值表示绝对时间,例如,“at2012-10-1”表示到201 2年10月1日引发该事件。图78是一个含改变事件和事件事件的例子。10秒之后关机
7 转换动作。在图 7.7 中并没有标注这个事件,但这个状态转换的触发事件就是自动门接 收到该消息的事件。 2. 信号事件 信号事件(signal event)表示发送对象发给接收对象的信号消息的接收消息事件,并 由该事件触发接收对象的状态的转换。与调用事件一样,信号事件也是在接收对象一方 发生的接收消息事件,状态机只关注因信号事件而引起接收对象的状态转换,以及应执 行的操作,并不关心发送对象。 接收对象在接收到信号调用后,需要执行对象的某一个操作,并引发接收对象的状 态转换。但接收对象在接收到信号事件后,对信号做何处理,则由接收对象当时的场景 和语义所规定,并不一定执行接收对象的某个操作。 3. 改变事件 改变事件(change event)表示当布尔表达式的值改变为真时所激发的事件。系统将一 直检测改变事件中的布尔表达式的值,只要它的值改变为真,该事件就被激发。改变事 件一般用关键字 when 开头的布尔表达式表示,当表达式的值由假变为真时,事件将发 生。例如:when (systemtime=12:00),表示当系统时钟到达 12 点时,激发该事件。 对改变事件中的布尔表达式的值的判断与状态转换中的监护条件不同。在事件发生 后,判断监护条件,如果监护条件为真,则执行动作,并转换状态。如果监护条件为假, 则不执行转换动作。其前提条件是引发状态转换的事件发生。而系统将一直对改变事件 中的布尔表达式的值进行不间断检测,如果发现其值为真,则引发事件。 4. 时间事件 时间事件(time event)是经过一定的时间或者到达某个绝对时间时发生的事件。用关 键字 after 及时间值表示相对时间,例如,“after(10sec.)”,表示从现在算起,10 秒之后 将发生该事件。用关键字 at 及时间值表示绝对时间,例如,“at 2012-10-1”表示到 201 2 年 10 月 1 日引发该事件。图 7.8 是一个含改变事件和事件事件的例子。10 秒之后关机, 图 7.8 改变事件和时间事件示例
从运行状态转到空闲状态,是一个时间事件。在空闲状态到12点对设备进行检测,是 个改变事件。 7.5复合状态 7.51复合状态的含义 复合状态是包含有子状态的状态。图79表示一个含复合状态的ATM机的状态机图 ATM机处在“空闲”和“工作”两种状态,其中,“工作”是一个复合状态,它包括“验 证”、“选择”“处理”“打印”四个子状态。ATM机平常处于“空闲”状态。当客户将 信用卡插进ATM机时,执行读卡动作,ATM机由“空闲”状态转换到“工作”状态的 初态。开始验证信用卡的合法性,验证通过后,进入功能“选择”状态,由客户选择取 款、转账、改密、查询等一种功能,客户选择一种功能之后,转入“处理”状态。处理 完成后,又回到“选择”状态。也可以在从处理状态选中打印,而进入“打印”状态, 凭据打印完后可再回到“选择”状态,也可以直接结束,退出工作状态。在“工作”状 态抽卡,则回到“空闲”状态。 +enty/读卡 处 打印 在拆 打即 图79含复合状态的ATM机状态机图 7.52复合状态的性质 复合状态具有以下特性: 1)事物在复合状态时,意味着它处于其中一个子状态;事物如果在某一个复合状态 的子状态,它一定处于该复合状态。 2)复合状态允许嵌套,子状态可以是简单状态、复合状态,也可以是子机状态
8 从运行状态转到空闲状态,是一个时间事件。在空闲状态到 12 点对设备进行检测,是一 个改变事件。 7.5 复合状态 7.5.1 复合状态的含义 复合状态是包含有子状态的状态。图7.9表示一个含复合状态的ATM机的状态机图。 ATM 机处在“空闲”和“工作”两种状态,其中,“工作”是一个复合状态,它包括“验 证”、“选择”、“处理”、“打印”四个子状态。ATM 机平常处于“空闲”状态。当客户将 信用卡插进 ATM 机时,执行读卡动作,ATM 机由“空闲”状态转换到“工作”状态的 初态。开始验证信用卡的合法性,验证通过后,进入功能“选择”状态,由客户选择取 款、转账、改密、查询等一种功能,客户选择一种功能之后,转入“处理”状态。处理 完成后,又回到“选择”状态。也可以在从处理状态选中打印,而进入“打印”状态, 凭据打印完后可再回到“选择”状态,也可以直接结束,退出工作状态。在“工作”状 态抽卡,则回到“空闲”状态。 7.5.2 复合状态的性质 复合状态具有以下特性: 1)事物在复合状态时,意味着它处于其中一个子状态;事物如果在某一个复合状态 的子状态,它一定处于该复合状态。 2)复合状态允许嵌套,子状态可以是简单状态、复合状态,也可以是子机状态。 图 7.9 含复合状态的 ATM 机状态机图
图710是一个存在三层嵌套的复合状态,在复合状态A中,存在一个简单状态B, 个复合状态C和一个子机状态DC中又包括E和F两个简单状态 图710存在嵌套结构的复合状态 3)复合状态具有始态,转入一个复合状态等价于转入其始态 4)复合状态可以有终态,达到复合状态的终态,将从复合状态转出。 7.53状态转换的类型 复合状态的状态转换有两种类型。 1)外部转换:在复合状态与其他状态之间发生的状态转换,以及复合状态的自转换 外部转换表示离开一个复合状态进入另外一个状态,或者进入复合状态自身。 2)局部转换:复合状态内部子状态之间的转换,或者复合状态转换到其中某个子状 态 在图711中,e1和e2是局部转换,e3和e4属于外部转换 图711复合状态的转换类型 7.6并发状态 761并发状态的含义 在一个状态机或一个复合状态中,如果同时存在相互可以独立的几组状态,则称这
9 图 7.10 是一个存在三层嵌套的复合状态,在复合状态 A 中,存在一个简单状态 B, 一个复合状态 C,和一个子机状态 D,C 中又包括 E 和 F 两个简单状态。 3)复合状态具有始态,转入一个复合状态等价于转入其始态。 4)复合状态可以有终态,达到复合状态的终态,将从复合状态转出。 7.5.3 状态转换的类型 复合状态的状态转换有两种类型。 1)外部转换:在复合状态与其他状态之间发生的状态转换,以及复合状态的自转换。 外部转换表示离开一个复合状态进入另外一个状态,或者进入复合状态自身。 2)局部转换:复合状态内部子状态之间的转换,或者复合状态转换到其中某个子状 态。 在图 7.11 中,e1 和 e2 是局部转换,e3 和 e4 属于外部转换。 7.6 并发状态 7.6.1 并发状态的含义 在一个状态机或一个复合状态中,如果同时存在相互可以独立的几组状态,则称这 图 7.10 存在嵌套结构的复合状态 图 7.11 复合状态的转换类型
几组状态是并发状态( concurrent state)。一组并发状态被称为一个区间 (region),在状态机 或复合状态中仅存在一个区间的情况被称为单区间,存在多个区间被称为多区间。图 9的状态机属于单区间状态机,图712的复合状态是一个具有多区间的复合状态。复合 状态的多个区间之间用虚线隔开 课程评价 评价 实验1 证程设计 考 不通过 通过 图712具有并发的复合状态 762同步状态 同步状态指多个并发区间中的状态在转换过程彼此存在同步关系,一个区间中的 个转换需要等到另一个区间中的某个转换发生后才能进行。UML采用内嵌星型的圆圈表 示同步状态,如果一个区间中的转换与另外一个区间存在同步关系,则通过同步状态连 接,并把同步状态符号画在并发区间的边界上 图7.13表示存在同步状态的一个例子。在建筑工程建设过程中,存在建地基,主体 建设和工程验收三个状态。主体建设是一个具有同步状态的复合状态,在该状态中存在 两个并发区间,但两个区间之间存在同步关系。在主体建成,并且水电安装好后,才能 安装管线,“建主体”和“安装管线”之间就存在同步关系。“安装管线”和“室内装修 两个状态之间也存在同步关系,这两个同步关系通过两个同步状态连接
10 几组状态是并发状态(concurrent state)。一组并发状态被称为一个区间(region),在状态机 或复合状态中仅存在一个区间的情况被称为单区间,存在多个区间被称为多区间。图 7. 9 的状态机属于单区间状态机,图 7.12 的复合状态是一个具有多区间的复合状态。复合 状态的多个区间之间用虚线隔开。 7.6.2 同步状态 同步状态指多个并发区间中的状态在转换过程彼此存在同步关系,一个区间中的一 个转换需要等到另一个区间中的某个转换发生后才能进行。UML 采用内嵌星型的圆圈表 示同步状态,如果一个区间中的转换与另外一个区间存在同步关系,则通过同步状态连 接,并把同步状态符号画在并发区间的边界上。 图 7.13 表示存在同步状态的一个例子。在建筑工程建设过程中,存在建地基,主体 建设和工程验收三个状态。主体建设是一个具有同步状态的复合状态,在该状态中存在 两个并发区间,但两个区间之间存在同步关系。在主体建成,并且水电安装好后,才能 安装管线,“建主体”和“安装管线”之间就存在同步关系。“安装管线”和“室内装修” 两个状态之间也存在同步关系,这两个同步关系通过两个同步状态连接。 图 7.12 具有并发的复合状态