您好,欢迎访问三七文档
状态图概述状态用于描述一个对象在其生存期间的动态行为,表现对象响应事件所经历的状态序列以及伴随的动作。状态图(StateMachineDiagram)用来显示状态,一个状态可用多张状态图描述。概述状态图与交互图的区别:交互图不显示对象所有可能的动态行为,只显示特定交互(一个具体的用例)中对象的行为。状态图可以显示对象所有的动态行为。状态图与活动图的区别:状态图只建模一个对象的行为,活动图可以建模多个对象的活动活动图中也允许建模特定活动中对象的某个状态基本组成状态转换事件基本组成状态什么是状态(state)对象生命期中的某个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。理解对象在任何时候都会处于某种状态中,所有对象都有状态。对象所处的状态决定了它如何响应所检测到的事件或所接收的消息。通常,事件使对象从一个状态转向另一个状态(即状态的转移)状态几种类型:初态终态中间状态组合状态历史状态1、初态和终态初态(startstate)显示状态图中状态的执行(execution)的开始。一个状态只能有一个初态,因为每一个执行都是从相同的地方开始的。如果一个状态用多张图描述,则多张图用同一个初态;嵌套状态中可以使用新的初态;终态(EndState)表示一个最后的或者终端状态;终态的数目可以不确定。2、一般状态中间状态的组成:状态名(name)进入/退出动作(entry/exitaction)内部转换(internaltransition)不导致状态改变的转换,不会执行entry和exit动作。子状态(substate)嵌套在另外一个状态中的状态。延迟事件(deferredevent)延迟到下一状态中处理的事件。lightingentry/turnOndo/blankFiveTimeseventpoweroff/powerSupplySelfexit/turnOffeventself/defer2、一般状态延迟事件是一种特殊的事件,它是指该事件不会触发状态的转换,当对象处于该状态时事件不会丢失,但会被延迟执行。例如,当E-mail程序中正在发送第一封邮件时,用户下达发送第二封邮件执令就会被延迟,但第一封邮件发送完成后,这封邮件就会被发送。这种事件就属于延迟事件3、复合状态含有子状态的状态被称为复合状态。两种表示方法:3、复合状态顺序复合状态图(表示方法1)3、复合状态顺序复合状态图(表示方法2)3、复合状态并发复合状态图4、子状态将子状态单独定义,并对其进行命名(通常以大写字母开头),然后在需要使用的地方来引用它4、子状态例:5、历史状态Historystate一种伪状态。可以存储退出组合状态时所处的子状态,则返回组合状态时可以直接回到到相应的子状态。5、历史状态例当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开时的历史状态。也就是说,转到购物或结账区之后,再回到“浏览目录”的页面时,其中的内容是不变的,仍然保留原来的信息。6、入口点和出口点入口点状态内的一个外部可见的伪状态,外部转换可以将它作为目标,从而被有效连接到指定状态上。出口点状态内的一个外部可见的伪状态,外部转换可以将它作为源,代表状态内的一个终点。转换Transition两个状态之间的一种关系,表示对象在第一个状态中执行一定的动作,并在某个特定事件发生而且满足某个条件时进入第二个状态。每个转换只允许一个事件,一个事件只允许一个动作转换的五要素源状态目标状态触发事件监护条件动作转换类型描述语法外部转换对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转换事件(参数)[监护条件]/活动内部转换对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换、离开转换事件(参数)[监护条件]/活动进入转换当进入某一状态时,执行相应活动entry/活动退出转换当离开某一状态时,执行相应活动exit/活动1、复杂转换2、各种转换的区别进入和退出转换:当进入一个状态时,执行某个动作;或当退出某个状态时,执行什么动作。这时就可以使用进入和退出转换来表示内部转换:用来处理一些不离开该状态的事件3、带有复杂转换的状态图事件Event是对一个时间和空间上占有一定位置的有意义的事情的规格说明。事件触发状态的转移四类主要事件信号事件调用事件变化事件时间事件1、信号事件信号(signer)事件所谓信号,是指由一个对象异步地发送、并由另外一个对象接收的一个已命名的对象。信号事件表示对象接收到某个信号。信号可以作为状态中一个状态转换的动作而被发送,也可作为交互中一个的消息发送。1、信号事件2、调用和变化事件调用(call)事件表示一个操作的调度。请求调用另一个对象的操作。一般是同步调用。变化(change)事件用关键字When,后面跟布尔表达式。When(temperature120)/alerm()3、时间事件时间(time)事件满足某一时间表达式的情况的出现,例如到达某一时间或经过了某一时间段。用关键字After或When表示。状态图的建立步骤1〉确定状态机的上下文,它可以是一个类、子系统或整个系统。2〉选择初始状态和终结状态。3〉发现对象的各种状态。注意应当仔细找出对问题有意义的对象状态属性,这些属性具有少量的值,且该属性的值的转换受限制。状态属性值的组合,结合行为有关的事件和动作,就可以确定具有特定的行为特征的状态。4〉确定状态可能发生的装移。注意分出从一个状态可能转移到那些状态,对象的哪些行为可引起状态的转移并找出触发状态转移的事件。5〉把必要的动作加到状态或转移上。6〉复合状态、子状态、历史状态等概念组织和简化一个复杂的状态机。7〉分析状态的并发和同步情况。8〉绘制状态图。9〉确认每一个状态在某个时间组合之下都是可到达的。确认没有一个死端状态,对象不能从该状态转移出来。源目标无预订部分预订预订完预订关闭无预订预订()不直接转换关闭()部分预订退订(),使预订人=0预订(),无空座关闭()预订完不直接转换退订()关闭()预订关闭无转换无转换无转换绘制状态图绘制状态图细化状态内的活动与转换绘制状态图使用复合状态状态图应用用途对对象生命周期建模:主要描述对象能够响应的事件、对这些事件的响以及过去对当前行为的影响对反应型对象建模:这个对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作状态图既可以用来表示一个业务领域的知识,也可以用来描述设计阶段对象的状态变迁状态图应用订单处理系统状态图应用复合(rose)状态图应用复杂图(售票机)状态图案例分析一个电子商务系统在订单发生时经过的状态变化。状态图案例分析订单成立状态主要有:订单成立订单取消(Guard:会员订单-缴款期限已过期)备货中(Guard:已付款、订单成立、库存量足够)出货中(Effect:扣除商品可接单量及移除购物车中的购买资料)出货确认(Guard:实际配达日及发票代码、号码均不为空值)出货完毕(Guard:实际配达日不为空)出货失败订单成立(Guard:出货完毕,已付款、鉴赏期结束日期小于等于[系统日期])状态图案例分析分析:1、购物车生成订单进入状态【订单成立】2、系统检测订单已经付款并且库存量足够,则进入状态【备货中】3、物流发货,进入状态【发货中】,状态转移为【发货中】后,需要做的操作有“扣除商品可接单量及移除购物车中的购买资料”4、发货完毕后,状态分为【出货确认】和状态【出货失败】,如果状态是【出货失败】,则【结束】,如果状态为【出货确认】,则进入下一步。5、配货人员填写实际配达日期,进入状态【出货完毕】。6、如果”已付款、鉴赏期结束日期小于等于[系统日期]”,则【订单成立】。
本文标题:4UML状态机图
链接地址:https://www.777doc.com/doc-3789636 .html