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