第十章状态机图

上传人:E**** 文档编号:91094637 上传时间:2019-06-21 格式:PPT 页数:43 大小:942KB
返回 下载 相关 举报
第十章状态机图_第1页
第1页 / 共43页
第十章状态机图_第2页
第2页 / 共43页
第十章状态机图_第3页
第3页 / 共43页
第十章状态机图_第4页
第4页 / 共43页
第十章状态机图_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《第十章状态机图》由会员分享,可在线阅读,更多相关《第十章状态机图(43页珍藏版)》请在金锄头文库上搜索。

1、UML基础与建模实践,第十章 状态机图,主讲人:,内容摘要,什么是状态机图,1,状态图的表示,2,迁移以及状态的分类,3,状态机图应用,4,小结与习题,5,10.1 什么是状态机图,状态机图描述对象在整个生命周期内,在外部事件的作用下,从一种状态迁移到另一种状态的关系图。 状态图的节点是状态(包括初始状态和终止状态),关系是迁移。,10.2 状态图的表示,一个状态图包含的元素有: 初始状态 终止状态 状态 迁移 分支 下面分别描述元素的语义和表示方法。,10.2.1 状态的表示,1初始状态 初始状态在一个状态图中只允许有一个,它用一个实心的圆表示,如图10-2所示。 2终止状态 终止状态用一个

2、套有一个实心圆的空心圆表示。如图10-3所示。,图10-2 初始状态的表示 图10-3 终止状态的表示,10.2.1 状态的表示,3状态 状态有三种表示方法,如图10-4所示,是状态的简单表示,如图10-5所示,是状态的详细表示,如图10-6所示, 是含有子状态的表示。,10.2.1 状态的表示,(1)状态名称:给对象所处状态取的名字,名字用一个字符串表示,在一个图中,名字应该是唯一的。 (2)entry/action:表示进入该状态时执行的动作。entry是关键字,表示进入该状态,action代表某个动作。 (3)exit/action:表示退出该状态时执行的动作。exit是关键字,表示退出

3、该状态,action代表某个动作。,10.2.1 状态的表示,(4)do/activity:表示处于该状态时,执行的活动(do是关键字,表示活动,activity代表某个活动),活动是一系列动作的集合,活动执行时可以被中断,动作执行时不能被中断。 (5)event/action(argument):表示内部迁移。该语句表示对象处于该状态时响应某个事件(event)所执行的动作action(argument)。event代表某个事件,action(argument)代表某个动作。Argument表示动作执行时用到的参数。,10.2.2 迁移的表示,迁移分四种类型(外部迁移、内部迁移、自动迁移和复

4、合迁移)。下面主要介绍外部迁移的表示法。 外部迁移用带箭头的直线表示,箭尾连接源状态(转出的状态),箭头连接目标状态(转入的状态)。每个迁移可能包含三个要素: (1)0或多个事件 (2)0或多个监护条件 (3)0或多个动作。,10.2.2 迁移的表示,图10-7所示即为描述了烧水器的状态图。我们用该图说明迁移的三要素。 注意:用实线箭头表示的迁移都是外部迁移。,Off,On,水开了/turnOff,turnOn有水/烧水,turnOn没水,烧坏,图10-7 烧水器的状态图,10.2.2 迁移的表示,1源状态 2目标状态 3事件 事件可以分为调用、信号、改变和时间4类。,10.2.2 迁移的表示

5、,(1)调用事件 调用事件是一种同步机制,例如在图10-8中,银行账户(BankAccount)的三种状态迁移图。该图演示了外部调用事件和内部调用事件。,图10-8 调用事件实例,10.2.2 迁移的表示,(2)信号事件 信号是对象之间异步传递信息包。发送信号的对象将信号发送出去后,继续执行自已的操作。在计算机中的鼠标和键盘操作均属于信号事件。图10-9演示了信号事件。,图10-9 信号事件,10.2.2 迁移的表示,(3)改变事件 改变事件是指系统对某个条件表达式不断进行的循环测试,当该条件表达式的值由false变为true时,就触发相关的动作,同时,条件表达式的值再次变为false,这时,

6、系统又不断测试该条件表达式的值,如此循环。图10-10演示了改变事件。,图10-10 改变事件,10.2.2 迁移的表示,(4)时间事件 时间事件是指当时间到达某个特点时刻,或某个戈值时,将要触发的事件。时间事件用关键字when和after表示。when表示事件触发的特点时刻;after表示事件触发的戈值时间。例如,after(2个月),when(date=08/12/20010)。 图10-11中,是某个信贷账户(Credit)状态机片段。当账户迁移到状态Overdrawn两个月以后,时间事件被触发(after(2months)),账户迁移到状态Frozen。,图10-11 时间事件,10.

7、2.2 迁移的表示,4监护条件 监护条件是一个布尔表达式。当触发事件发生,并且布尔表达式的值为真时,迁移才能够完成。监护条件写在 符号中。,10.2.2 迁移的表示,5动作 动作分为入口动作和出口动作: (1)入口动作:入口动作表示对象进入某个状态时所要执行的动作。入口动作用格式“entry/要执行的动作”表示。 (2)出口动作:出口动作表示对象退出某个状态时所要执行的动作。出口动作用格式“exit/要执行的动作”表示。 入口动作和出口动作都写在状态图标的第二栏中。,10.2.2 迁移的表示,6活动 如果对象处于某个状态进行一些动作,可能会需要一些时间,我们可以用活动来描述这一系列动作。我们在

8、状态的第二栏中描述活动,其格式为“do/动作名”。 7理解简单状态图 例如描述一个烧水器在工作时的行为状态变化。,10.2.3 分支的表示,对象在外部事件的作用下,根据监护条件的不同值,转向不同的目标状态,即对象的状态根据监护条件的取值而发生分支。分支用空心小菱形表示,如图10-13所示。,图10-13 分支的表示,10.2.3 分支的表示,根据监护条件的真假可以触发不同的分支迁移。如图10-14所示,当对象处于状态1时,当某个事件作用于对象,这时就要计算监护条件,当条件满足时(true),对象的状态变为状态2;当条件不满足时(false),对象状态变为状态3。,图10-14 分支实例,10.

9、3 迁移的分类,迁移通常分为外部迁移、内部迁移、自动迁移(不需要监护条件下,离开原状态,然后又回到原状态)和复合迁移4种。,10.3 迁移的分类,1外部迁移 外部迁移是一种改变对象状态的迁移。外部迁移用从源状态到目标状态的箭头表示。如图10-15所示即描述了火车上卫生间的简单状态迁移,该卫生间存在3个状态,包含5个外部迁移。,图10-15 外部迁移,10.3 迁移的分类,2内部迁移 内部迁移是指状态不变的情况下,事件引发的动作。内部迁移自始至终都不离开源状态,所以不会产生入口动作和出口动作。因此,当对象处于某个状态进行一些动作时,可以把这些动作看成是内部迁移。 3自动迁移 自动迁移指在没有事件

10、触发的情况下,当监护条件为真时执行某些动作。它是离开某个状态后重新进入原先的状态,它会激发状态的入口动作和出口动作的执行。,10.3 迁移的分类,4复合迁移 复合迁移由简单迁移组成,它通过分支判定,把多个简单迁移组合在一起,如图10-17所示。,图10-17 复合迁移,10.4 状态的分类,状态机图中的状态分为: (1)简单状态 (2)复合状态两种,10.4.1 简单状态,简单状态是指不包含子状态的状态,但简单状态可以具有内部迁移、入口动作和出口动作等。如图10-18所示便是某销售POS机的工作流程:当客户到收银台后,收银员逐一输入用户购买的商品,输入完之后,计算出总金额,然后等待用户付款,确

11、定支付成功之后,完成收银,等待下一个客户。,10.4.2 复合状态,复合状态是指状态本身包含一个或者多个子状态的状态。复合状态中包含的多个子状态之间的关系有两种:一种是并发关系,另一种是互斥关系。 如果子状态是并发关系,则称子状态为并发子状态;如果子状态是互斥关系,则称子状态为顺序子状态。,10.4.2 复合状态,1顺序子状态 在图10-19中,IC卡电话包括3 个基本状态:“使用状态”、“未使用状态”和“维修状态”,其中“使用状态”是一个复合状态。下面来看看IC电话的连接过程: 当拿起电话打IC电话前,首先要插入IC卡,进行IC卡的有效验证,验证通过后才可以拨打电话,此时从最初的“IC卡验证

12、”状态转到“拨号”状态。如果电话接通,则转到“连接”状态;在连接状态,如果对方也拿起听筒,则转入“通话”状态,通话完毕转入“挂断”状态;如果对方无人接听,则转入“挂断”状态。如果拨号时出现异常情况,则挂断电话;如果挂断后重新拨号,电话又处于“拨号”状态。如果此时取出IC卡,则电话转入“未使用”状态。 “使用状态”包含5个子状态,因为IC电话不能同时处于两个不同的子状态中,所以这些子状态是顺序子状态。,10.4.2 复合状态,图10-19顺序子状态实例,10.4.2 复合状态,2并发子状态 如果复合状态包含两个或者多个并发的子状态机,则称复合状态的子状态为并发子 状态。 下面考察一辆处于“运行”

13、状态的电动车。当车处在运行状态时,包含了前进和后退两个不同的子状态,这两个子状态之间的关系是顺序子状态,因为一辆车不可能同时处于前进和后退两种子状态。另一方面,车的运行状态又包括高速行驶状态或者低速行驶状态,而前进状态可以同时为高速行驶或者低速行驶状态,后退状态也可以是高速行驶或者低速行驶状态,即前进状态或后退状态之一,可以与高速行驶状态或低速行使状态之一同时存在,我们就把这些可以同时出现的状态称为并发子状态,如图10-20所示。并发子状态可以用于并发线程的状态建模。,10.4.2 复合状态,图10-20 并发子状态实例,10.4.2 复合状态,3复合状态表示法 复合状态的表示法有两种。 (1

14、)将子状态机嵌入表示状态的圆角矩形中 这种表示法是在表示状态的圆角矩形中加入子状态机的新分栏,如图10-21左图所示。,图10-21 复合状态的两种表示法,10.4.2 复合状态,(2)在圆角矩形中加入复合图标 这种表示法是在表示状态的圆角矩形中加入分解指示符的新分栏,其中,分解指示符代表子状态机,如图10-21下图所示。,图10-21 复合状态的两种表示法,10.4.3 历史状态,当迁移转入复合状态时,被嵌套的子状态机一般要从子状态机的初始状态开始执行,除非转到特定的子状态。但是有些情况下,当离开一个复合状态,然后重新进入复合状态时,并不希望从复合包含的子状态机的初始状态开始执行,而是希望直

15、接进入上次离开复合状态时的最后一个活动子状态,此时便需要用一个包含字母“H”的小圆圈表示最后一个活动子状态,即称为历史状态。每当迁移到复合状态的历史状态时,对象的状态便恢复到上次离开该复合状态时的最后一个活动子状态,并执行入口动作,10.4.3 历史状态,下面考虑一个MP3播放器对象的状态图,如图10-22所示。,图10-22 历史状态,10.4.4 子状态机间异步通信,在很多情况下,并发子状态机之间可能需要异步通信。为了实现异步通讯,我们采用的策略是:一个子状态机设置某个属性值,在另一个子状态机中,在某个迁移的监护条件中使用该属性值。,10.4.4 子状态机间异步通信,在图10-23中, “

16、订单处理”状态包含了2个并发的子状态机:第一个子状态机包含两个状态,即“接收支付”和“已支付”;第二个子状态机也包含两个状态,即“配货”和“发货”。 现在来看看第一个子状态机与第二个子状态机之间的通信方式:当订单进入“已支付”状态时,paidFor的值才为true,而第二个子状态机要想进入“发货”状态,其监护条件是paidFor为true。,10.4.4 子状态机间异步通信,图10-23中可以看出,只有paidFor为真,即只有完成了“已支付”行为,才能进入“发货”状态。通过paidFor,我们实现了两个并发子状态机之间的异步通讯。,图10-23 子状态机间的通信,10.4.5 建立状态机图的步骤,绘制状态机图的一般步骤如下: (1)寻找主要的状态。 (2)寻找外部事件,以便确定状态之间的迁移。 (3)详细描述每个状态和迁移。 (4)把简单状态图迁移为复合状态图。,10.5 状态机图应用,状态机图的主要应用有两种:一是在对象生命周期内,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号