1、4.2.2 状态图概述状态用于描述一个对象在其生存期间的动态行为,表现对象响应事件所经历的状态序列以及伴随的动作。状态图(State Machine Diagram)用来显示状态,一个状态可用多张状态图描述。概述状态图与交互图的区别:交互图不显示对象所有可能的动态行为,只显示特定交互(一个具体的用例)中对象的行为。状态图可以显示对象所有的动态行为。状态图与活动图的区别:状态图只建模一个对象的行为,活动图可以建模多个对象的活动活动图中也允许建模特定活动中对象的某个状态 基本组成状态转换事件、动作基本组成(例如刷pos机)状态什么是状态(state)对象生命期中的某个条件或状况,在此期间对象将满足
2、某些条件、执行某些活动或等待某些事件。理解对象在任何时候都会处于某种状态中,所有对象都有状态。对象所处的状态决定了它如何响应所检测到的事件或所接收的消息。通常,事件使对象从一个状态转向另一个状态(即状态的转移)状态几种类型:初态终态中间状态组合状态历史状态1、初态和终态初态(start state)显示状态图中状态的执行(execution)的开始。一个状态只能有一个初态,因为每一个执行都是从相同的地方开始的。如果一个状态用多张图描述,则多张图用同一个初态;嵌套状态中可以使用新的初态;终态(End State)表示一个最后的或者终端状态;终态的数目可以不确定。2、一般状态中间状态的组成:状态名
3、(name)进入/退出动作(entry/exit action)内部转换(internal transition)不导致状态改变的转换,不会执行 entry 和 exit 动作。子状态(substate)嵌套在另外一个状态中的状态。延迟事件(deferred event)延迟到下一状态中处理的事件。lightingentry/turnO nd o/b l an k F i v e T i m e se v e n t/po w e r o f f/p o w e r S u p p l y S el fe x i t/tu r n O f f2、一般状态延迟事件是一种特殊的事件,它是指该事件不
4、会触发状态的转换,当对象处于该状态时事件不会丢失,但会被延迟执行。例如,当E-mail程序中正在发送第一封邮件时,用户下达发送第二封邮件执令就会被延迟,但第一封邮件发送完成后,这封邮件就会被发送。这种事件就属于延迟事件3、复合状态含有子状态的状态被称为复合状态。包括顺序和并发的复合状态两种表示方法:3、复合状态顺序复合状态图(表示方法1)3、复合状态顺序复合状态图(表示方法2)3、复合状态并发复合状态图4、子状态将子状态单独定义,并对其进行命名(通常以大 写字母开头),然后在需要使用的地方来引用它4、子状态例:5、历史状态History state 一种伪状态。可以存储退出组合状态时所处的子状
5、态,则返回组合状态时可以直接回到相应的子状态。它用一 个包含字母“H”的小圆圈表示。5、历史状态例当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开时的历史状态。也就是说,转到购物或结账区之后,再回到“浏览目录”的页面时,其中的内容是不变的,仍然保留原来的信息。6、入口点和出口点入口点状态内的一个外部可见的伪状态,外部转换可以将它作为目标,从而被有效连接到指定状态上。出口点状态内的一个外部可见的伪状态,外部转换可以将它作为源,代表状态内的一个终点。转换Transition两个状态之间的一种关系,表示对象在第一个状态中执行一定的动作,并在某个特定事件发生而且满足某个条件
6、时进入第二个状态。每个转换只允许一个事件,一个事件只允许一个动作转换的五要素源状态目标状态触发事件监护条件动作转换类型 描述语法外部转换 对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转换事件(参数)监护条件/活动内部转换 对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换、离开转换事件(参数)监护条件/活动进入转换 当进入某一状态时,执行相应活动entry/活动退出转换 当离开某一状态时,执行相应活动exit/活动1、复杂转换2、各种转换的区别进入和退出转换:当进入一个状态时,执行某个动作;或当退出某个状态时,执行什么动作
7、。这时就可以使用进入和退出转换来表示内部转换:用来处理一些不离开该状态的事件,内部转换只有 一个源状态而没有目标状态,因此转换激发的结果并不 改变状态本身。如果一个内部转换带有动作,动作也要 被执行,但是由于没有状态改变发生,因此不需要执行 入口和出口动作。事件Event是对一个时间和空间上占有一定位置的有意义的事情的规格说明。事件触发状态的转移四类主要事件信号事件调用事件变化事件时间事件1、信号事件信号(signer)事件所谓信号,是指由一个对象异步地发送、并由另外一个对象接收的一个已命名的对象。信号事件表示对象接收到某个信号。信号可以作为状态中一个状态转换的动作而被发送,也可作为交互中一个
8、的消息发送。1、信号事件2、调用和变化事件调用(call)事件表示一个操作的调度。请求调用另一个对象的操作。一般是同步调用。变化(change)事件用关键字When,后面跟布尔表达式。When(temperature 120)/alerm()3、时间事件时间(time)事件满足某一时间表达式的情况的出现,例如到达某一时间或经过了某一时间段。用关键字After或When表示。总结:借书例子所展示的关键元素:初始状态、最终状态、转移、事件、条件。UML中状态被赋予4个特定事件entry指进入(激活)状态时要执行的动作(或者方法)Do指对象状态保持不变时持续执行的动作(或者类方法),它不会因为eve
9、nt停止;event事件指对象接收到某个事件时件执行的动作,这个动作不会导致对象状态的变化,可以通过绘制一条返回状态自身的转移来表示动作的执行结果;exit指活动在退出(结束)时要进行的动作状态图状态图显示一个状态机建模:状态机对模型元素的动态行为模型元素的动态行为进行建模,就是对系统行为中受事件驱动受事件驱动的方面进行建模业务阶段:通常使用状态图来说明业务角色或业业务角色或业务实体务实体可能的状态状态导致状态转换的事件和状事件和状态态转换引起的操作状态机用于描述实体类实体类对象的整个生命周期内的状态变迁状态变迁以获得对这个实体的理解这个实体的理解,同时获得系统和实体对象相互影响的关系相互影响
10、的关系状态图设计实现:对于类对象所有可能的状态,状态图都显示它可能接收的消息消息、将执行的操作操作和在此之后类的对象所处的状态状态状态机主要用于描述对象的状态变化以确定何种行为改变了对象状态对象状态,以及对象状态变化对系统的影响状态图通常只用于描述单个对象单个对象的行为,如果要描述对象间的交互对象间的交互,最好采用时序图或协作图状态图的建立步骤 1确定状态机的上下文,它可以是一个类、子系统或整个系统。2选择初始状态和终结状态。3发现对象的各种状态。状态属性,行为(确定事件和动作)4确定状态可能发生的转移。注意分出从一个状态可能转移到那些状态,对象的哪些行为可引起状态的转移并找出触发状态转移的事
11、件。5把必要的动作加到状态或转移上。6复合状态、子状态、历史状态等概念组织和简化一个复杂的状态机。7分析状态的并发和同步情况。8绘制状态图。9确认每一个状态在某个时间组合之下都是可到达的。确认没有一个死端状态,对象不能从该状态转移出来。源目标无预订部分预订预订完预订关闭无预订预订()不直接转换关闭()部分预订退订(),使预订人=0预订(),无空座关闭()预订完不直接转换退订()关闭()预订关闭无转换无转换无转换绘制状态图 绘制状态图细化状态内的活动与转换 绘制状态图使用复合状态 状态图应用用途对对象生命周期建模:主要描述对象能够响应的事件、对这些事件的影响以及过去对当前行为的影响对反应型对象建
12、模:这个对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作状态图既可以用来表示一个业务领域的知识,也可以用来描述设计阶段对象的状态变迁 状态图应用订单处理系统 状态图应用复合(rose)状态图应用复杂图(售票机)状态图案例分析一个电子商务系统在订单发生时经过的状态变化。状态图案例分析订单成立状态主要有:订单成立订单取消(Guard:会员订单-缴款期限已过期)备货中(Guard:已付款、订单成立、库存量足够)出货中(Effect:扣除商品可接单量及移除购物车中的购买资料)出货确认(Guard:实际配达日及发票代码、号码均不为空值)出货完毕(Guard:实际配达日不为空)出货失败订单成立(Guard:出货完毕,已付款、鉴赏期结束日期 小于等于 系统日期)状态图案例分析分析:1、购物车生成订单进入状态【订单成立】2、系统检测订单已经付款并且库存量足够,则进入状态【备货中】3、物流发货,进入状态【发货中】,状态转移为【发货中】后,需要做的操作有“扣除商品可接单量及移除购物车中的购买资料”4、发货完毕后,状态分为【出货确认】和状态【出货失败】,如果状态是【出货失败】,则【结束】,如果状态为【出货确认】,则进入下一步。5、配货人员填写实际配达日期,进入状态【出货完毕】。6、如果”已付款、鉴赏期结束日期 小于等于 系统日期”,则【订单成立】。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1