第10章状态机图ppt课件

上传人:人*** 文档编号:571490323 上传时间:2024-08-11 格式:PPT 页数:46 大小:3.78MB
返回 下载 相关 举报
第10章状态机图ppt课件_第1页
第1页 / 共46页
第10章状态机图ppt课件_第2页
第2页 / 共46页
第10章状态机图ppt课件_第3页
第3页 / 共46页
第10章状态机图ppt课件_第4页
第4页 / 共46页
第10章状态机图ppt课件_第5页
第5页 / 共46页
点击查看更多>>
资源描述

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

1、LOGOUML 统一建模统一建模第第10章章 状态机图状态机图2对象和状态对象和状态对象是某个状态下的对象,而状态则是描述当前对象。所有的对象均有状态,状态可改变下面一些例子说明了对象和状态(1)支票(对象)已付(状态)(2)汽车(对象)已启动(状态)(3)小王(对象)睡着了(状态)(4)小红(对象)未婚(状态)23为什么要为什么要建模状态机图建模状态机图 对象可能会有不同的状态,某些行为依赖于这些状态。例如,按下开关按钮时,电灯将改变当前的状态(由关变开或由开变关),因此:需要记录对象当前的状态发生了某种事件才会引起状态间的转移由一个状态转到另一个状态的过程通常通过方法调用实现 状态机图通常

2、作为对类图的补充 面向对象分析与设计&UML4状态机图:状态机图:电梯电梯状态机图主要显示以下状态机图主要显示以下3 3种内容:种内容: 对象在生命周期中所经历的状态对象在生命周期中所经历的状态序列;序列; 诱发对象从一个状态转移到另一诱发对象从一个状态转移到另一个状态的事件;个状态的事件; 状态改变所导致的动作。状态改变所导致的动作。状态机图的概念状态机图的概念状态机图描述对象在整个生命周期内,在外部事件的作用下,从一种状态转换到另一种状态的关系图。这种图的节点是状态(包括初始状态和终止状态),关系是转换。状态机图的概念状态机图的概念状态机图的作用状态机图常用来描述业务或软件系统中的对象在外

3、部事件的作用下,对象的状态从一个状态到另一个状态的控制流。利用状态机图可以精确地描述对象在生命周期内的行为特征。 状态机图的组成元素状态机图的组成元素包括:初始状态、终止状态、状态、转换。其中,转换将各种状态连接在一起,构成一个状态机图。状态机在整个生命周期内,描述对象处于各种状态的图,该图必须完整包括:初始状态、终止状态、状态、转换。状态机图不一定完整包含初始状态、终止状态、状态、转换等状态 。7状态机图的状态机图的基本符号基本符号 状态机图的表示状态机图的表示一个状态机图包含的元素有初始状态、终止状态、状态、转换、分支。状态的表示初始状态初始状态代表状态机图的起始位置,只能作为转换的源,而

4、不能作为转换的目标。初始状态在一个状态机图中只允许有一个,它用一个实心的圆表示。终止状态终止状态是对象的最后状态,是一个状态机图的终止点。终止状态只能作为转换的目标,而不能作为转换的源。终止状态在一个状态机图中可以有多个,它用一个套有一个实心圆的空心圆表示。状态机图的表示状态机图的表示状态对象属性值的集合标识了一个对象的状态。表示对象状态的图标由一个带圆角的矩形表示。它包含三部分:名称:给对象所处状态取的名字,名字用一个字符串表示,在一个图中,名字应该是唯一的。内部转换:对象响应外部事件所执行的动作。内部转换发生时,不改变对象的状态,但是,当进入该状态时,可以包含进入动作;当退出该状态时,可以

5、包含退出动作。嵌套状态 :状态机图中的状态可以包含两种状态:一种是简单状态,简单状态不包含其它状态;一种是组合状态,组合状态包含了子状态。即状态机图的某些状态本身也是状态机图。10状态机图的表示状态机图的表示状态名状态名入口动作入口动作, 进入该状进入该状态时执行该动作态时执行该动作.动作动作,处于该状态处于该状态时执行的动作时执行的动作.内部转换内部转换,该状态中出现该状态中出现特定事件时执行的动作特定事件时执行的动作.退出动作退出动作, 当离开该状态当离开该状态时执行该动作时执行该动作.延迟响应事件延迟响应事件, 在该状态出现该事件时在该状态出现该事件时, 不在本不在本状态响应状态响应,而

6、是延迟到其他状态响应而是延迟到其他状态响应.状态机图的表示状态机图的表示转换的表示转换是指对象在外部事件的作用下,当满足特定的条件时,对象执行一定的动作,进入目标状态。转换用带箭头的直线表示,箭尾连接源状态(转出的状态),箭头连接目标状态(转入的状态)。转换关系到的内容包括:源状态、目标状态、外部事件、监护条件和执行的动作。下图描述了烧水器的状态机图。注意:用实线箭头表示的转换都是外部转换。 烧水器的状态机图烧水器的状态机图12转换的五要素转换的五要素源状态:即受转换影响的状态目标状态:当转换完成后对象的状态 触发事件:用来为转换定义一个事件,包括调用、改变、信号、时间四类事件监护条件:布尔表

7、达式,决定是否激活转换、动作:转换激活时的操作状态机图的表示状态机图的表示1源状态对于一个转换来说,转换前对象所处的状态,就是源状态。源状态是个相对的概念,即,相对当前状态而言,它的前一个状态就是源状态。2.目标状态转换完成后,对象所处的状态就是目标状态 。当前状态相对它的前一个状态而言,当前状态就是目标状态。源状态和目标状态都是相对某个转换而言的。状态机图的表示状态机图的表示3.事件事件就是外部作用于一个对象,能够触发对象状态改变的一种现象。1).信号事件对象之间通过发送信号和接收信号实现通信。信号是一种异步机制。对于一个信号而言,对象一般都有相应的事件处理器,如onMouseClick()

8、。2).调用事件调用某个对象的成员方法就是调用事件,它是一种同步的机制。例如turnOn是一种调用事件,用来将开关置于“On”状态。3).改变事件指某个指定属性值为真时,事件得到触发。与监护条件不同,在对象生命周期内,一直在计算改变事件中的属性值,事件触发,计算停止。4).时间事件当时间流逝到某个时刻,触发事件对对象起作用。例如,after(12:00),after(2seconds),when(12:00)。 5).延迟事件指对象处在在本状态时外部事件产生了,但没有执行事件,要推迟到另外一个状态才执行的事件。状态机图的表示状态机图的表示4.监护条件监护条件是一个布尔表达式,当布尔表达式的值为

9、真时,转换才能够完成。只有在触发事件发生时,才计算一次监护条件的值,当监护条件的值为真时,转换才发生。如果转换发生后,监护条件才由假变为真,那么转换也不会被触发。 状态机图的表示状态机图的表示5动作当转换被激活后,如果定义了相应的动作,那么就将执行这个动作。动作可以是一个赋值语句、简单的算术运算、发送信号、调用操作、创建和销毁对象、读取和设置属性的值,甚至是一个包含多个动作的活动。例如,当turnOn事件发生,就测试监护条件有水,如果有水,就会执行“烧水”的动作。动作分为入口动作和出口动作。1).入口动作入口动作表示对象进入某个状态所要执行的动作。入口动作用“entry/要执行的动作”表示。2

10、). 出口动作出口动作表示对象退出某个状态所要执行的动作。出口动作用“exit/要执行的动作”表示。状态机图的表示状态机图的表示活动当对象处于一个状态时,它一般是空闲的,在等待一个事件的发生。但是某些时间,对象正在执行一序列动作,即,对象做着某些工作,并一直继续到被某个外部事件的到来,才中断这些工作,我们把对象处于某个状态时进行的一序列动作称为活动。如果对象处于某个状态进行一些动作,可能会需要一些时间,我们可以用活动来描述这一序列动作。表示活动的方法是,在状态的转换分栏中添加一行“活动描述”,其格式为“do/动作名”。 活动用来描述对象处于某个状态时,对象进行的一序列动作。状态机图的表示状态机

11、图的表示理解简单状态机图例如,描述一个烧水器在工作时的行为状态变化。与状态off相关的转换有两个,其触发事件都是turnOn,只不过其监护条件不同。如果对象收到事件turnOn,那么将判断壶中是否有水;如果没水,则仍然处于off状态;如果有水则转为on状态,并执行“烧水”动作与状态on相关的转换也有两个,如果“水开了”就执行turnOff动作,关掉开关;如果烧坏了,就进入了终态了 状态机图的表示状态机图的表示分支的表示对象在外部事件的作用下,根据监护条件的不同值,转向不同的目标状态。即,对象的状态根据监护条件的取值而发生分支。分支用空心小菱形表示。根据监护条件的真假可以触发不同的分支转换。状态

12、机图的表示状态机图的表示转换表示当一个外部事件作用于对象,在监护条件得到满足时,对象在源状态下执行一序列的动作后,转向目标状态。 转换进入的状态称为活动状态,转换离开的状态变变为非活动状态。 转换通常分为:外部转换内部转换 自动转换 复合转换转换的分类转换的分类1外部转换外部转换是一种改变对象状态的转换,是最常见的一种转换。外部转换用从源状态到目标状态的箭头表示。火车上卫生间的简单状态转换。该卫生间存在三个状态,包含5个外部转换。 转换的分类转换的分类2内部转换内部转换有一个源状态但是没有目标状态,它转换后的状态仍旧是它本身。内部转换自始至终都不离开源状态,所以没有入口动作和出口动作。因此,当

13、对象处于某个状态,进行的一些动作时,我们可以把这些动作看成是内部转换。在第二栏,描述了入口动作和出口动作,也描述了内部转换,要注意的是,入口动作和出口动作描述的是外部转换时发生的动作;内部转换是描述本状态没有发生改变的情况下,发生的动作。状态的分类状态的分类3自动转换在没有外部事件的作用下,对象执行了某些活动后,自然而然地完成的转换。自转换是离开某个状态后重新进入原先的状态,它会激发状态的入口动作和出口动作的执行。4复合转换复合转换由简单转换组成,通过分支判定,把多个简单转换组合在一起。24转换的区别转换的区别内部转换和自转换不同:自转换是离开本状态后重新进入该状态,它会激发状态的入口动作和出

14、口动作的执行。内部转换自始至终都不离开本状态,所以没有出口或入口事件,也就不执行入口和出口动作。 25带有复杂转换的状态机图带有复杂转换的状态机图26同步同步使用同步条可以显示并发转移,并发转移中可以有多个源状态和目标状态。并发转移表示一个同步将一个控制划分为并发的线程。状态机图中使用到同步条是为了说明某些状态在哪里需要跟上或者等待其他状态。状态机图中同步条是一条黑色的粗线。26状态的分类状态的分类状态机图中的状态分为简单状态和复合状态2种。1 简单状态简单状态是指不包含其他状态的状态。但是,简单状态可以具有内部转换、入口动作和出口动作等。 下图只包含2个简单状态。状态的分类状态的分类2 复合

15、状态复合状态是指状态本身包含一到多个子状态机的状态。复合状态中包含的多个子状态之间的关系有两种:一种是并发关系,另一种是互斥关系。如果子状态是并发关系,称子状态为并发子状态;如果子状态是互斥关系,称子状态为顺序子状态。子状态子状态子状态也可以有初态和终态子状态也可以有初态和终态状态的分类状态的分类1. 顺序子状态在任何时刻,当复合状态被激活时,如果复合状态包含的多个子状态中,只能有一个子状态处于活动状态,即多个子状态之间是互斥的,这种子状态称为顺序子状态。复合状态的子状态如果是顺序子状态,在下图中, IC卡电话 “使用状态”状态是一个复合状态,包含5个子状态,因为IC电话不能同时处于两个不同的

16、子状态中,所以这些子状态是顺序子状态。状态的分类状态的分类2. 并发子状态如果复合状态包含两个或者多个并发的子状态机,此时称复合状态的子状态为并发子状态。 考察一辆处于“运行”状态的电动车。车处在运行状态时,包含了前进和后退两个不同的子状态,这两个子状态之间是顺序子状态,因为一辆车不可能同时处于前进和后退两种子状态;另一方面,车的运行状态又包括高速行驶状态和低速行驶状态。前进状态可以同时为高速行驶或者低速行驶状态;后退状态时,也可以是高速行驶或者低速行驶状态,即,前进状态或后退状态之一,可以与高速行驶状态或低速行使状态之一同时存在。这些可以同时出现的状态称为并发子状态。状态的分类状态的分类3复

17、合状态表示法复合状态的表示法有两种。(1). 将子状态机嵌入表示状态的圆角矩形中这种表示法是在表示状态的圆角矩形中加入子状态机的新分栏。(2).在圆角矩形中加入加分解指示符这种表示法是在表示状态的圆角矩形中加入分解指示符的新分栏,其中,分解指示符表示子状态机,历史状态历史状态 历史状态当状态机通过转换从某种状态转入复合状态时,被嵌套的子状态机一般要从子状态机的初始状态开始执行。但是有些情况下,当离开一个复合状态,然后重新进入复合状态时,并不希望从复合包含的子状态机的初始状态开始执行,而是希望直接进入上次离开复合状态时的最后一个活动子状态,最后一个活动子状态即称为历史状态。每当转换到复合状态的历

18、史状态时,对象的状态便恢复到上次离开该复合状态时的最后一个活动子状态,并执行入口动作。历史状态历史状态一个MP3播放器对象的状态机图。,MP3播放器对象的复合状态“活动”状态包含4个嵌套子状态:“停止”、“播放”、“前进”、“后退”状态,如果用户按下了“暂停”按钮,活动状态被打断而进入暂停状态;当用户撤销暂停,恢复播放器的活动状态时,MP3播放器对象直接进入历史状态,此时将进入播放器上一次离开活动状态时的子状态。例如当用户在播放状态按下暂停按钮,当恢复播放时,播放器仍进入播放状态。34“当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开时的历史状态。也就是说,转到购物

19、车或结账区之后,再回到“浏览目录”的页面时,其中的内容是不变的,仍然保留原来的信息。 历史历史状态状态建立状态机图建立状态机图绘制状态机图的一般步骤是:1寻找主要的状态,2寻找外部事件,以便确定状态之间的转换3详细描述每个状态和转换4. 把简单状态机图转换为复合状态机图。建立状态机图例子建立状态机图例子对于航班机票预订系统而言,我们把飞机票看作一个整体,我们来看飞机票有哪几种状态,以及有哪些事件触发机票状态的变化。1确定状态飞机票有以下4种状态:无预订、部分预订、预订完、预订关闭。(1)在刚确定飞行计划时,显然时没有任何预订的,并且在顾客预订机票之前都将处于这种“无预订”状态。(2)对于订座而

20、言,显然有“部分预订”和“预订完”两种状态。(3)当航班快要起飞时,显然要“预订关闭”。建立状态机图例子建立状态机图例子2寻找外部事件无论机票处于那种状态,可能有的外部事件有:(1)预订():顾客预订机票。(2)退订():顾客退订机票。(3)关闭():机票管理员关闭订票系统。 (4) 取消航班():飞机调度人员取消飞行计划。3.我们已经知道了机票的主要状态,也知道了改变机票状态变化的外部事件。现在我们分析状态之间的转换(这里指外部转换)。即,确定当机票处于这一状态时,哪些外部事件能真正改变机票状态,哪些事件对本状态不起作用。可以采用表格的方式来进行分析。建立状态机图例子建立状态机图例子 确定状

21、态间的有效转换,在此基础上可以绘制出相应的状态机图。源目源目标无无预订部分部分预订预订完完预订关关闭无预订预订()不直接转换关闭()部分预订退订()事件发生后,使预订人=0预订(),无空座关闭()预订完不直接转换退订()关闭()预订关闭无转换无转换无转换机票预订系统的初步状态机图机票预订系统的初步状态机图事件与状态转换建立状态机图例子建立状态机图例子详细描述每个状态和转换前面已经确定了各个状态之间的外部转换,为了详细描述状态,我们给状态添加内部转换、外部转换时的进入和退出动作,以及相关的活动等。例如,在这个例子中,还存在下一些内部转换和活动:1机票处在 “部分预订” 状态时,当发生退订事件时,

22、如果退订数小于预订数,那么状态不变;同样的道理,当发生预订事件时,如果预订数小于空位数,那么状态也是不变的。2从初态到 “无预订” 状态时,我们要对机票数、预定数和空座位数进行初始化活动。3当预订事件和取订事件发生时,都应该更新预订数和空位数的值。但由于座位总数是已知的,因此只要更新预订数就可以了。通过上述分析,可以在状态机图上,为每个状态添加详细的动作或活动建立状态机图例子建立状态机图例子详细描述后的状态机图建立状态机图例子建立状态机图例子把简单状态机图转换为复合状态机图为了便于理解状态机图,我们常把简单状态机图转换为复合状态机图。可以将无预定、部分预订、预订完三个状态归结为“预订”状态,这

23、样就可以采用一个复合状态,即“预订”状态来表示该图,状态机图的应用状态机图的应用状态机图主要应用有两种:一是在对象生命周期内,对一个对象的整个活动状态建模;二是对反应型对象的行为建模。1. 对对象的生命周期建模使用状态机最通常的目的是对对象的生命周期建模,即,描述对象在生命周期内,各种状态以及在外部事件的作用下,状态之间的转换。交互图建模是用来描述多个协作对象的行为;而状态机是对单个对象在整个生命周期内的行为建模。在对对象的生命周期建模时,它主要描述:对象能够响应的事件、对这些事件的响应产生的行为,以及行为的后果。2对反应型对象建模当对反应型对象的行为建模时,主要描述对象可能处于的状态、从一个

24、状态转换到另一个状态所需的触发事件,以及每个状态改变时发生的动作或活动。交互图建模的是“对象到对象的控制流”,活动图建模的是“活动到活动的控制流”,而状态机图建模的是“事件到事件的控制流”。43状态机图的应用状态机图的应用(1)不要不要对系统中的每个类都对系统中的每个类都画状态机图。画状态机图。尽管这尽管这样做很完美,但太浪费精力,其实你可能只关心样做很完美,但太浪费精力,其实你可能只关心某些类的行为。正确的做法是:某些类的行为。正确的做法是:为帮助理解类而为帮助理解类而画它画它的状态机图。的状态机图。(2)状态机图描述)状态机图描述跨越多个用例的单个对象的行为,跨越多个用例的单个对象的行为,

25、而不适合描述多个对象间的行为合作。为此,常而不适合描述多个对象间的行为合作。为此,常将状态机图与将状态机图与其它技术其它技术(如顺序图、合作图和活动如顺序图、合作图和活动图图)组合使用。组合使用。44状态机图映射状态机图映射成代码成代码 将不同状态作为常数枚举,把当前状态存储在适当的数据成员中。依赖于状态的操作可以用开关语句对每个状态分别设一个case实现。每个case表示来自特定状态,用相应的消息表示转换。需求用专门的数据成员存储对象的历史状态 45思考与练习思考与练习手机开机时,处于空闲状态;当用户开始呼叫某人时,手机进入拨号状态;如果呼叫成功,进入通话状态;如果呼叫不成功,重新进入空闲状态。在空闲状态被呼叫,进入响铃状态;如果用户接听,进入通话状态;如果一分钟不接听,重新进入空闲状态。 46Answer:idledialingworkingringingfinish connection

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

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