按照事件发生的位置,可以把事件分为外部事件和内部事件两种类型。外部事件指 在系统外部参与者激发的事件。例如,按下按钮是一个外部事件。内部事件指在系统内 部的要素激发的事件。例如,因系统发生溢出,而产生的异常就是一个内部事件。 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 复合状态的转换类型