6.状态机图(状态+活动)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课堂练习(电梯系统的状态图)
带有复杂转换的状态图
补充说明(状态图)
适用情况:
适用于描述跨越多个用例的单个对象行为 不适合描述多个对象之间的行为协作 故需与其他技术(类图、对象图)结合使用
注意事项:
不要花费大量时间和精力为系统中的每个类都 画对应的状态图 开发人员只关心关键类的行为,只需为这些类 建立状态图,帮助理解所研究的问题
方法二:
先对活动进行全局的分析 再将活动分配各具体的对象
建议:
两种方法各有利弊 根据个人习惯和具体情况而定
分类(1.简单活动图)
分类(1.简单活动图)
分类(2.标识泳道的活动图)
泳道(SwimLane):用于有效 地标识每个活动的实施者。 表示方法:
用一条垂直的线将活动分开 每个泳道都有一个唯一的名称 每个活动节点、分支必须只属 于一个泳道;而转换,分叉与 汇合是可以跨泳道的。
状态机图(State machine Diagram)
状态(state):
定义对象在其生命周期中的一种条件或状况 比如:满足某些条件、执行某些活动或等待某些事件 例子:灯的开闭、人的梦醒、学生的课上与课下
理解
状态的存在:对象在任何时刻都会处于某种状态之中 状态的转移:事件使对象从一个状态转向另一个状态 当面对所检测到的事件或所接收到的消息时,对象所 处的状态不同,做出的反应也不同
细化状态内的活动与转换
状态图(航班预订3)
使用复合状态
课堂练习
绘制电脑工作时的状态转换图
课堂练习
绘制手机工作时的状态转换图
课堂练习(电梯系统的状态图)
电梯开始处于空闲状态(idle),当有人按下按钮要求使用电梯时 (事件is required发生),电梯进入运行状态(run)。如果电梯的 当前楼层比想要的楼层高时(监护条件[currentFloor>desiredFloor] 成立),电梯进入下降状态(moving down);反之,如果电梯的当 前楼层比想要的楼层低时(监护条件[currentFloor<desiredFloor] 成立),电梯进入上升状态(moving up);如果电梯的当前楼层与 想要的楼层相同时(监护条件[currentFloor=desiredFloor]成立), 电梯门打开(door open)。在电梯上升或下降期间,每经过一个楼 层就判断监护条件[currentFloor=desiredFloor]是否成立,若不成 立,继续移动,若成立,就进入停止状态(stop),15秒后,电梯门 自动打开(door open),2分钟后,电梯门自动关上(door close), 如果有更多的电梯使用要求,进入运行状态(run),反之,则进入 空闲状态(idle)。
调用事件
调用某个对象的成员方法就是调用事件,它是一种同 步的机制。 例如:在烧水器的状态图中,turnOn就是一种调用事 件,用来将开关置于“On”状态。
触发事件的四种类型
改变事件
某个指定属性值为真时,事件得到触发。 在对象生命周期内,一直在计算改变事件中的属性值。 当属性值为真时,事件触发,计算停止 例如:when(temperature>100)/alerm()
状态图
状态图的作用
描述一个特定对象的所有可能状态 以及由于各种事件的发生,而引起的状态间的 转移
状态图
状态图的组成
节点是状态:包括初始状态和终止状态,用圆 角矩形表示 关系是转换(或转移):用状态之间包含一些 文字描述的有向箭头线表示
状态
状态的几种类型
1.初态和终态 2.中间状态 3.组合状态 4.历史状态
智能水壶的状态图
打开[有水]/烧水:
打开:触发事件 有水:监护条件 烧水:动作
信用卡状态图
无触发转移
定义:
状态转移不是因为某个事件触发引起的 而是由于对象完成了某些活动,而引起的状态 的转变
触发事件的四种类型
信号事件
对象之间通过发送信号和接收信号实现通信 信号是两个对象之间通信的媒介,它是一种异步机制 在计算机中,鼠标和键盘的操作均属于此类事件 对于一个信号而言,对象一般都有相应的事件处理器, 如onMouseClick()等
课堂练习
一个咨询公司会见新客户时的业务过程:
1、公司业务员打电话给客户确定一个约定 2、如果约定地点是在公司之内,那么公司中的技术人员 就要为会面准备一间会议室 3、如果约定地点是公司之外,那么咨询顾问就要用膝上 电脑准备一份陈述报告 4、咨询顾问与顾客在约定的时间和地点见面 5、业务员随后给他们准备好会议用纸 6、如果会议产生了一个问题陈述,咨询顾问就根据问题 陈述建立一个提案并把该提案发给客户。
转换(State Transition)
作用:当一个活动结束时,活动控制流马上 转向下一个活动节点 表示方法:一条带箭头的直线
转换的表示
分支与合并(决策)
程序控制流的三种基本结构: 顺序、分支、循环 分支:
用于将一条转换路径分成多个部 分,每一部分都有单独的监护条 件和不同的结果 当动作流遇到分支时,会根据监 护条件的真假来判定动作的流向
分类(3.标识对象流的活动图)
注册(活动图)
构建活动图
1.业务分析阶段
活动图中每一条泳道表示一个职责单位(个人 或部门),每个泳道的执行者体现了职能部门 的工作职责、业务范围、部门之间的交互关系
2.系统分析和设计阶段
用活动图对对象的职责进行建模,每一个对象 占据一个泳道,而活动是该对象的成员方法 本阶段采用带泳道活动图的情况较少,因为序 列图会更好地体现对象间的交互关系。活动图 更适合于对复杂用例中的事件流进行建模
活动图(Activity Diagram)
概念:
由活动节点和转换流 程构成的状态机图
作用:
描述系统或业务的活 动序列构成的控制流 用来描述事物或对象 的活动变化流程 为系统或业务工作流 程和用例实现建模
活动图(Activity Diagram)
活动图与流程图:
流程图:表示算法的执行序列、过程、判定点、 分支和循环 活动图:支持并行活动,支持多线程编程
组成元素
活动节点
起点和终点(即 初态和终态) 中间活动节点
转换流程
转换 分支与合并 分叉与汇合
活动节点
活动节点是活动图中最主要的元素之一,用来表 示工作过程中的一个(或多个)工作步骤 表示方法:用一个圆角矩形表示,活动的名称写 在圆角矩形内部
活动节点的表示
活动节点
动作状态:原子性的动作或操 作的执行状态,不能被外部事 件的转换中断 活动状态:非原子性的,可以 分解成其他子活动或动作状态, 可以从外部中断。可以在图标 中给出入口动作和出口动作等 信息 组合活动:一种内嵌活动图的 状态,用于表示复杂的活动
时间事件
当时间流逝到某个时刻,触发事件对对象起作用 它可以指定为绝对形式,也可以指定为相对形式。
其他事件
延迟事件(Deferred event)
延迟到下一状态中处理的事件 是一种特殊的事件,它是指该事件不会触发状态的 转换,当对象处于该状态时事件不会丢失,但会被 延迟执行 例如,当E-mail程序中正在发送第一封邮件时,用 户下达发送第二封邮件执令就会被延迟,但第一封 邮件发送完成后,这封邮件就会被发送。这种事件 就属于延迟事件
历史状态是一种伪状态 可以存储退出组合状态时所处的子状态,则返回 组合状态时可以直接回到相应的子状态
转换的五要素
源状态(Source State):转换激发之前对象所处的状态 目标状态(Target State) :转换完成后对象所处的状态 触发事件(Trigger Event) :引起转换发生的事件 监护条件(Guard Condition) :方括号括起来的布尔表达 式,用于决定是否激活转换 动作(Action) :转换激活时对象执行的操作
示例(同步)
商品打包与付款两 个活动是并行的 即:这两个活动的 执行顺序是任意的
可以先后进行 可以同时交叉进行
泳道
泳道技术:
将活动用线条分成 一些纵向的矩形, 每个矩形属于一个 特定的对象或部门 对象的名字放在泳 道的顶部 属于该对象的所有 活动都被放在泳道 的区域内
绘制顺序
方法一:
先确定参与活动的对象 然后分析在整个过程中每个对象的活动
1.初态和终态
初态(Start state)
显示状态图中状态机的执行的开始 一个状态机只能有一个初态,因为每一个执行都是从 相同的地方开始的。如果一个状态机用多张图描述, 则多张图用同一个初态 嵌套状态中可以使用新的初态
终态(End State)
表示一个最后的或者终端状态 终态的数目可以不确定
2.中间状态
条件互斥
注意:分支的每个路径的监护 条件应该是互斥的,因此只有 一条路径的转换会被激发
分支的表示
分支与合并(决策)
合并:两个或者多个控 制路径在此汇合的情况, 表示从对应分支开始的 条件行为的结束 合并和分支都使用菱形 表示,且常常成对使用 省略表示分支与合并的 菱形不会丢失任何信息
分叉与汇合(同步)
转换类型
状态图应用
为对象生命周期建模:
主要描述对象能够响应的事件、对这些事件的 响应以及过去对当前行为的影响
为反应型对象建模:
这个对象可能处于的稳定状态、从一个状态到 另一个状态之间的转换所需的触发事件,以及 每个状态改变时发生的动作
状态机图既可以用来表示一个业务领域的 知识,也可以用来描述设计阶段对象的状 态变迁
活动图的应用:
描述类的操作 描述用例的执行过程
活动图的缺点:
难以清楚地表示对象和动作之间的关系
活动图(Activity Diagram)
与状态图的区别
状态图
由某个对象的状 态序列组成,以 状态为中心
活动图
由某个过程中若 干对象的活动序 列组成,以活动 为中心
活动图(Activity Diagram)
状态图(CD播放机)
状态图(智能卡系统)
阅读状态图
状态图(订单处理1)
订单处理
办理发货之前需要检查商品,查看是否齐全。 如果缺部分商品,则进入等待状态(直至商品 齐全) 货品发出之前,任何时候都可以取消订单
状态图(订单处理2)
状态图(订单处理3)
状态图(航班预订1)
状态图(航班预订2)
绘制状态机图的步骤
寻找主要的状态 确定状态之间的转换 细化状态内的活动与转换 用复合状态来展开细节
状态图(购物网站)
当从状态“结账”和“显示购物车”返回子状态“显示索 引信息”时,将进入的是离开时的历史状态。 也就是说,转到购物或结账区之后,再回到“浏览目录” 的页面时,其中的内容是不变的,仍保留原来的信息。
分类(2.标识泳道的活动图)
分类(3.标识对象流的活动图)
某些活动中,对象与节点活动是紧密相关的:
活动节点创建、删除或输出一些对象 经过活动处理,修改了对象的状态
对象流描述了活动与对象之间的关系,表示了活 动使用对象以及活动对对象的影响。 用户可以在活动图中把相关的对象标识出来
标识哪些对象进入活动节点 标识哪些对象从活动节点中输出
中间状态的组成
1)状态名(Name) 2)进入/退出动作(entry/exit action)
2.中间状态
3)内部转换(Internal Transition)
不导致状态改变的转换,不会执行entry和exit动作
语法格式:event 事件名/动作表达式
2.中间状态
4)子状态(Substate)
嵌套在另外一个状态中的状态
2.中间状态
4)子状态(Substate)
嵌套在另外一个状态中的状态
3.组合状态(composite state)
含有子状态的状态被称为组合状态
1.顺序组合状态图 2.并发组合状态图
顺序组合状态图
并发组合状态图
在UML2.0中已经废弃了同步状态
4.历史状态(History state)
分叉与汇合:
都用来表示并发执行的活动 分叉线和汇合线(同步线):都使用加粗的水平线或 垂直线段表示
分叉:
一个进入转换,多个离去转换 表明系统从单一的过程变为过个并发的过程
分叉与汇合(同步)
汇合:
多个进入转换,一个离去转换 表示系统将结束多个并发过程,再次进入单一的过程 注意:当且仅当所有的并发分支都到达汇合点后,活 动流程才能进入下一个活动节点
状态机图(State machine Diagram)
状态机(state machine):
一种逻辑上的流程机 用于描述一个对象在其生命周期中的动态行为 表现对象响应事件所经历的状态序列以及伴随的动作
状态图和活动图用于描述一个状态机(状态机图)
活动图强调了从活动到活动的控制流 状态图强调了从状态到状态的转换