状态机图

合集下载

状态机图(状态活动)汇总课件

状态机图(状态活动)汇总课件
do/启动发货 发货
已发货
收到货物[缺部分商品]
检查完[缺部分商品]
等待
收到货物[商品齐全]
取消
取消 取消
取消订单
状态图(订单处理3)
检查 do/检查商品
订单处理
收到货物[缺部分商品]
检查完[缺部分商品]
等待
检查完[商品齐全]
办理发货 do/启动发货
收到货物[商品齐全]
已发货
发货
取消 取消订单
状态图(航班预订1)
无预定
预定/已预订数+=预订数
部分预定
event 预 定 [ 预 订 数 < 空 位 数 ] event退 订 [ 退 定 数 < 已 预 订 数 ] /
取消航班
关闭
预定关闭
关闭 关闭
退订/已预订数-=退定数
预定完
预定[无空位]
状态图(航班预订3)
使用复合状态
预定中 退订[已预订人数==0]/已预订数=退定数
action)
Action 可执行的原子计算。 不可中断,其执行时间可忽略不计。
两种特殊动作:
进入动作 (entry action) 进入状态时执行的动作;Entry/ setMode(onTrack)
退出动作 (exit action)
退出状态时执行的动作;Exit /setMode(offTrack)
●例如:在烧水器的状态图中, turnOn 就是一种调用事 件,用来将开关置于“0n” 状态。
触发事件的四种类型
改变事件
● 某个指定属性值为真时,事件得到触发。 ●在对象生命周期内, 一直在计算改变事件中的属性值。
当属性值为真时,事件触发,计算停止 ●例如: when(temperature>100)/alerm()

第10章 状态机图

第10章 状态机图
外部调用 事件
内部调用 事件
Credit
Close()
Deposit(m)/balan=balan+m
Withdrawal(m)
[balan<m]
动作
Withdrawal(m) [balan>=m]
监护条件
RejectWithdrawal entry/logRejectWithdrawal
AcceptWithdrawal entry/balan=balan-m
• 通常将入口动作(entry/action) • 出口动作(exit/action) • 活动(do/activity) • 内部迁(event/action(argument) • 标识在状态图标的第二栏,如图10-5所示。
• 内部迁移发生时对象的状态不会改变,外部迁移发生时对 象状态要发生改变。
有多个终止状态,它用一个套有一个实心圆的空心圆表示。 如图10-3所示。
图10-3 终止状态的表示
3.状态
• 同一状态有三种表示方法:
• 图10-4是状态的简单表示;
• 图10-5是状态的详细表示;
• 图10-6所示,在圆角矩形的第三栏中,绘制出了子状态 (如果该状态包含了子状态的话)。
状态名称 图10-4 简单表示
10.2.1 状态的表示
• 1.初始状态 • 初始状态代表对象的起始状态,只能作为迁移的源节点,
而不能作为迁移的目标节点。 • 初始状态在一个状态图中只允许有一个,它用一个实心的
圆表示,如图10-2所示。
图10-2 初始状态的表示 Nhomakorabea2.终止状态
• 终止状态是对象的最后状态,是一个状态图的终止点。 • 终止状态只能作为迁移的目标节点。在一个状态图中可以

UML的状态机图

UML的状态机图

UML的状态机图UML(Unified Modeling Language)是一种标准化的建模语言,用于描述软件系统中的各种构建块和交互关系。

UML的状态机图是其中一个最为重要的建模图之一。

什么是状态机图?状态机图是一种用于描述对象行为的UML图表。

它以有限状态机的形式描述对象或系统在不同状态下对事件以及其他因素产生的响应。

状态机图显示了对象的状态及其之间的转换。

状态机图主要由三个部分组成:状态、转移和事件。

状态表示对象或软件系统处于的状态,转移表示状态之间的转换,事件则表示导致状态转换的触发器或条件。

状态机图的建立过程在建立状态机图之前,需要先确定对象或软件系统的状态、转移和事件。

1. 确定状态首先需要确定对象或软件系统可能出现的所有状态。

每个状态都应该有一个名称、一个描述以及一个标识符。

状态可以是“初态”(启动状态)、“终态”(结束状态)或“中间态”(中间状态)。

2. 确定转移和事件根据对象或软件系统的实际情况,确定状态之间的转移以及导致转移的事件或条件。

每个转移都应该有一个名称、一个标识符以及一个触发器。

触发器可以是一些条件,例如键盘上的一个按键或计时器到期,也可以是上一个状态完成某些任务导致的条件。

例如,在一个自动售货机的状态机图中,售货机可能处于“待机”、“已付款”、“正在出货”、“出货完成”四种状态。

当用户选择购买商品并投入硬币时,售货机会从“待机”状态转移到“已付款”状态,并且会关闭“使用硬币”事件。

当售货机完成出货并关闭接口时,它会从“正在出货”状态转移到“出货完成”状态。

状态机图的用途状态机图有很多用途。

它可以用于描述产品或系统的交互设计,也可以用于演示API和网络安全策略的行为。

一些常见的用途包括:1. 软件开发状态机图可以在软件开发过程中用于确定软件的行为、处理错误和异常情况、定义状态转换以及帮助代码实现。

通过建立状态机图,可以更好地理解软件中各个状态的流转情况,从而提高软件开发效率。

状态机图

状态机图

状态机图1.概述状态机图(State Machine Diagram)是用来显示状态机的图,包括简单状态、转换和嵌套的复合状态等,一个典型的状态机图如图1所示:图1. 状态机图2.基本表示符号状态机图的基本元素包括:状态、转移、事件、伪状态和复合状态。

2.1状态(State)状态是对象生命周期中的一个条件或形态。

状态由对象的属性值、与其他对象的关系以及正在执行的活动来确定。

在UML中,状态用圆角矩形和状态名表示,初始状态用实心圆表示,终止状态用牛眼表示,如图2所示:图2. 状态状态可以有一个或多个分栏,这些分栏是可选的,包括名称分栏、嵌套区域、内部转换分栏等,如图3所示:图3. 带分栏的状态状态也可用圆角矩形上带有状态名称标签的方框表示,如图4所示:图4. 带有名称标签符号的状态2.2转移(Transaction)转移表示状态之间可能的路径,可以表示外部转换(用箭头表示),也可以表示内部转换(嵌套在状态内部)。

如图5所示:图5. 转移2.3事件(Event)事件是对,在特定时间和空间上,所发生的有意义的事情。

在状态机中,事件触发转移,事件或者显示在转换之上,或显示在状态以内。

共有四种类型的事件:信号事件、调用事件、时间事件、改变事件。

信号用于对象间异步传递的信息包,它没有任何操作,只有自身携带的信息。

信号事件是通过信号来触发的事件,在UML中,信号如图6所示:图6. 信号调用事件是请求在类语境的实例上调用特定的操作,在UML中,调用事件如图7所示:图7. 调用事件时间事件用关键字after表示,说明事件被触发的临界时间。

改变事件用关键字when表示,说明将事件改变所满足的条件。

如图8所示:图8. 时间事件和改变事件2.4伪状态(Pseudo State)伪状态指在一个状态机中具有状态的形式,同时具有特殊行为的顶点。

它是一个瞬时状态,用于构造转换的细节。

当伪状态处于活动时,状态机还没有完成从运行到完成的步骤,也不会处理事件。

状态机图_软件工程_[共7页]

状态机图_软件工程_[共7页]

体建模。

②考虑是否为重要的业务的履行者建立一个泳道。

③建立初始状态和终止状态,并识别该业务过程的前置条件和后置条件。

④从初始状态开始,说明随着时间发生的动作,并在活动图中表示它们。

⑤如果涉及重要的对象,则把它们也加入到活动图中。

如果有必要,可展示对象的属性值和状态。

⑥连接这些动作的控制流和对象流。

如果需要,使用分支和合并来描述条件路径和迭代,使用分岔和汇合来描述并发的动作流。

⑦若动作较为复杂,则它可调用一个活动,在该活动中描述其细节。

由于业务过程所描述的功能有些是要由软件系统来完成的,若针对这样的功能建立了活动模型,也可以说是对软件系统的(局部)功能建立了活动模型。

(2)对操作建模用活动图对操作建模是指把活动图作为流程图来对操作的算法细节建模。

与传统的流程图不同的是,活动图能够展示并发。

在OOA阶段,仅用活动图对关键的复杂操作进行建模。

除非想直接从模型自动生成代码,即使在OOD阶段也并不要求用活动图对每个操作的算法都建立模型。

对一个操作建模时,应遵循如下策略。

①收集该操作所涉及的事物,包括操作的参数、可能的返回类型、它所属于的类以及与之相关的类的特征。

②识别操作的前置条件和后置条件以及操作所属的类在操作执行期间必须保持的不变式。

③从该操作的初始状态开始,按照时间顺序设立动作。

④如果需要,使用分支和合并来描述条件路径和迭代。

⑤仅当这个操作属于主动类时,才在必要时用分岔和汇合来描述并发的控制流。

8.3.3 状态机图在现实世界中的事物通常都有自己的生命周期。

通过对它们的观察,可以得出如下结论。

①大多数事物在其生命周期中经历了不同的状态,且这些状态是通过对现实的理解(建模)而定义的。

②一个事物在各时期内所处的状态是明确的。

③在一个状态内,事物要完成一定的任务。

④在现实世界存在着引起事物的状态发生变化的事件。

⑤事物在其状态间按次序转化。

⑥事物从一个状态到另一个状态的转化通常是即时的。

⑦当事件发生时,事物可能需要采取一些动作。

第7章状态机图

第7章状态机图

7 第章状态图
7.6 并发状态
7.6.1 并发状态的含义 7.6.2 同步状态
7.6.1 并发状态的含义
并发状态:在一个状态机或一个复合状态中,如果同时存 在相互可以独立的几组状态,则称这几组状态是并发状态 (concurrent state)。
例如:
7.6.2 同步状态
同步状态:指多个并发区间中的状态在转换过程彼此存在 同步关系,一个区间中的一个转换需要等到另一个区间中的 某个转换发生后才能进行。 例如:
• 初始状态表示一个状态机从此结点开始,但事物不会此状态 停留,会立即转换到初始状态所连接的第下一个状态。
• 初始状态只有输出,没有输入。
7.7.2 分叉与汇合
• 分叉 (fork) :指将一个转换分成两个或多个转换,用来描述 需要并发的状态。
• 汇合 (join) :指将从并发状态来的转换合并形成一个转换, 用来描述多个并发状态的控制同步。
7.8.5 状态机与其他的图比较
1)状态机图用于事物状态及其变换的建模;活动图用于过 程流程建模 。 2)状态结点表示事物一个状态,活动结点表示一个过程中 的一个动作。 3)交互图用于多个对象为完成一个任务的交互关系,状态 机图表示一个事物所处的状态,及其变换。 4)可以用状态机描述一个交互过程中所处的状态及其转换, 用活动图描述一个交互执行的流程。
3 交互状态建模:一个交互描述为完成某项功能,系统中 若干个对象相互交互消息的过程。一个交互过程也会存在 多种状态,及其状态的转换,可以用状态机图来描述交互 状态的转换。
订货交互的状态机:
7.8.2 状态机的用途
4 构件状态建模:构件封装了多个类,构件在其生命周期 中也会存在不同状态,可以用状态机对构件的状态及其转 换进行建模。

第10章 状态机图讲解

第10章 状态机图讲解

初始状态的表示
终止状态 终止状态是对象的最后状态,是一个状态图的终止点。 终止状态只能作为转换的目标,而不能作为转换的源。 终止状态在一个状态图中可以有多个,它用一个套有 一个实心圆的空心圆表示。
终止状态的表示
状态
对象属性值的集合标识了一个对象的状态。表示对象状态的图标由一 个带圆角的矩形表示。它包含个三部分: 名称:给对象所处状态取的名字,名字用一个字符串表示,在一个图 中,名字应该是唯一的。 内部转换:对象响应外部事件所执行的动作。内部转换发生时,不改 变对象的状态,但是,当进入该状态时,可以包含进入动作;当退出 该状态时,可以包含退出动作。我们把内部转换标识在状态框的第二 栏;用一条实线箭头来标识外部转换,外部转换是指一种状态到另一 种状态的转换。 嵌套状态 :状态图中的状态可以包含两种状态:一种是简单状态, 简单状态不包含其它状态;一种是组合状态,组合状态包含了子状态。 即状态图的某些状态本身也是状态图。
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结
阅读最简单的状态图

最为核心的元素无外乎是两个:一个是用圆角矩形表示 的状态(初态和终态例外);另一个则是在状态之间的、
包含一些文字描述的有向箭头线,这些箭头线称为转换
Hale Waihona Puke 初始状态 初始状态代表状态图的起始位置,只能作为转换的源, 而不能作为转换的目标。初始状态在一个状态图中只 允许有一个,它用一个实心的圆表示
状态机图
知识图谱
Agenda
• • • • •
状态和状态机 如何阅读状态机图
如何绘制状态机图
状态机图应用说明 本章小结

6.状态机图(状态+活动)

6.状态机图(状态+活动)

课堂练习(电梯系统的状态图)
带有复杂转换的状态图
补充说明(状态图)
适用情况:
适用于描述跨越多个用例的单个对象行为 不适合描述多个对象之间的行为协作 故需与其他技术(类图、对象图)结合使用
注意事项:
不要花费大量时间和精力为系统中的每个类都 画对应的状态图 开发人员只关心关键类的行为,只需为这些类 建立状态图,帮助理解所研究的问题
方法二:
先对活动进行全局的分析 再将活动分配各具体的对象
建议:
两种方法各有利弊 根据个人习惯和具体情况而定
分类(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)。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

anwser[ in 30s ] / connet
Connecting
Talking
2013-7-25
25
9.2.3 转移
复合转移

只是外部转移的一个变种
Busy Ringing
anwser [ out 30s ] / fail connect [ in 30s ] / connect
Hung Up Talking
[ students.length>=maxStudents ] In Schedule [ after this term ]
locked [ after this term ]
状态机图PK 状态机

2013-7-25
31
9.3 状态机图
如何使用状态机图

状态机图只是一种辅助模型,根据实际需要使用。 使用时要注意以下问题:
9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 何时使用状态机图 使用状态机图的哪些概念 如何识别对象的状态 如何认识和描述转移 如何为类图提供有用的信息
Talking
2013-7-25
23
9.2.3 转移
转移的种类
1. 2.
外部转移

复合转移
内部转移 3. 完成转移
2013-7-25
24
9.2.3 转移
外部转移
Busy 外部转移是一种改变对象状态的转移,是最常见的 一种转移。 Ringing Hung Up ♂ 外部转移用从源状态到目标状态的箭头表示。

2013-7-25
29
9.2 相关概念
状态机的相关概念
9.2.1 状态机 9.2.2 状态 9.2.3 转移 9.3 状态机图
监护条件
事件触发器
动作
2013-7-25 30
9.3 状态机图
状态机图

显示了一个对象的状态机,它强调从状态到状态的 控制流 同一件事物的两种不同概念,状态机的图形表示即 为状态机图
对象一般没有Do动作 ♂ 表示入口动作执行完之后执行的动作 ♂ 等同于入口/出口动作

Dialing
do/ receiveInput
2013-7-25 11
9.2.2 状态
状态的组成—内部转移(On Event动作)
内部转移的结果并不改变状态本身 ♂ 是对象接收到指定事件时执行On Event动作,但执 行的结果并不改变对象状态
网上选课系统的状态机图
网上选课系统的状态机图
1. 何时使用状态机图 2. 使用状态机图的哪些概念 3. 如何识别对象的状态

对象有哪些有意义的状态 不同状态下的行为规则不同 同一状态下的行为规则一致
4. 如何认识和描述转移 5. 如何为类图提供有用的信息
网上选课系统的状态机图
一个课程对象(Course类对象)的状态变化过程:

2013-7-25
14
9.2.2 状态
组成状态之顺序子状态
如果一个组成状态的子状态对应的对象在其生命期 内的任何时刻都只能处于一个子状态,即多个子状 态之间是互斥的,不能同时存在,这种子状态称为 顺序子状态。 ♂ 当状态机通过转移从某种状态转入组成状态时,此 Running 转移的目的可能是这个组成状态本身,也可能是这 Forward 个组成状态的子状态。 Backword
动作
2013-7-25 19
9.2.3 转移
转移(transition)


转移是两个状态之间的一种关系,表示当一个特 定事件发生或者某些条件得到满足时,对象在第1 个状态(源状态)下执行了一定的动作,并进入第2 个状态(目标状态) 一个转移分为5部分
源状态 2. 事件触发器 3. 监护条件 4. 动作 5. 目标状态

2013-7-25
15
9.2.2 状态
组成状态之并发子状态
有时组合状态有两个或者多个并发的子状态机,此 时称组成状态的子状态为并发子状态。 ♂ 顺序子状态与并发子状态的区别在于后者在同一层 Running 次给出两个或多个顺序子状态,对象处于同一层次 Forward Backword 中来自每个并发子状态的一个时序状态中。
6
9.2.2 状态

初态和终态
初态
终态
2013-7-25
7
9.2.2 状态
状态的组成
♂ ♂

♂ ♂
状态名 入口/出口动作 Do动作 内部转移(On Event动作) 子状态
2013-7-25
8
9.2.2 状态
状态的组成—状态名
状态名的首字母大些 ♂ 一个状态的名称在状态图所在的上下文中应该是唯 一的,状态允许匿名 ♂ 状态的名字通常放在状态图标的顶部

2013-7-25
9
9.2.2 状态
状态的组成—入口/出口动作
入口动作和出口动作表示进入或退出这个状态所要 执行的动作 ♂ 入口动作用“entry/要执行的动作”表达,而出口 动作用“exit/要执行的动作”表达

State
entry/ exit/
2013-7-25 10
9.2.2 状态
状态的组成—Do动作
dial event1
Idle Talking
exit/
2013-7-25
28
9.2.3 转移
自身转移

原状态和目标状态相同的转移
自身转移和内部转移的不同
自转移是离开本状态后重新进入该状态,它会激发 状态的入口动作和出口动作的执行。 ♂ 内部转移自始至终都不离开本状态,所以没有出口 或入口事件,也就不执行入口和出口动作。
Busy
2013-7-25
22
9.2.3 转移
动作
Busy 动作表示在转移过程中需要做什么事情,在/后给 出活动名称,可以省略 Ringing Hung Up ♂ 动作可以包括计算、发送信号给另一个对象、操作 调用、创建和销毁对象等。

anwser[ in 30s ] / connet
Connecting
1. 课程对象被创建,添加到数据库中 2. 管理员可以删除、修改课程信息 3. 课程被开设 4. 学生可以选择课程 5. 如果选修人数超过指定人数,就不再允许学会选这门课 6. 学期结束,课程的状态结束
网上选课系统的状态机图
creat[ good ] / creat course Created
entry/ get course info

2013-7-25
5
9.2.2 状态
状态(state)

UML的解释:对象生命周期的一种条件或情形, 在此期间它满足某些条件、执行某些活动或者等待 某些事件。 ♂ 面向对象语言的理解:对象在其生命周期内的属性 值。(划分等加状态)
Busy
Connecting
2013-7-25
Hanging
Connecting
1.
2013-7-25
20
9.2.3 转移
事件触发器
事件触发器是能够引起状态转移的事件 ♂ 事件可以是信号、调用、时间推移

2013-7-25
21
9.2.3 转移
监护条件

监护条件是触发转移必须满足的条件,它是一个布 Ringing Hung 尔表达式,放在事件触发器的后面 Up ♂ 监护条件只能在事件触发时被计算1次 ♂ 从一个状态引出的多个转移可以有同样的触发器事 anwser[ in 30s ] / connet 件,但是每个转移必须具有不同的监护条件 Talking ♂ 可以被省略 Connecting
26
Connecting
2013-7-25
9.2.3 转移
内部转移

一旦处于某一个状态内,遇到在不想离开该状态下 的处理的事件,此时发生的转移叫做内部转移
Dialing
event dial/ du~du~
2013-7-25
27
9.2.3 转移
自身转移

自身转移是没有标明触发器事件的转移,是由状态 中的活动的完成引起的,是自然而然地完成的转移。 完成转移也可以带一个监护条件,这个监护条件在 状态中的活动完成时被赋值,而非活动完成后被赋 值。

Hight Speed Low Speed
2013-7-25
16
9.2.2 状态
组成状态之历史状态
历史状态代表上次离开组成状态时的最后一个活动 Active 子状态,它用一个包含字母“H”的小圆圈表示。 Forward Pause ♂ 每当转移到组成状态的历史状态时,对象便恢复到 Stop Play 上次离开该组成状态时的最后一个活动子状态,并 执行入口动作。 Back
2013-7-25
32
9.3.1 何时使用状态机图
一个状态机图只适合描述一类对象 不必对每一类对象都进行状态建模 把状态建模和对象建模进行结合
通过状态机图帮助发现和定义对象的操作 ♂ 通过定义对象的操作,完善状态机图

2013-7-25
33
9.3.2 使用状态机图的哪些概念
充分运用状态机图的基本概念

Dialing Talking
event dial/ du~du~
2013-7-25
12
9.2.2 状态
状态的2种情况
简单状态 ♂ 组成状态

♀ 顺序子状态 ♀ 并发子状态 ♀ 历史状态
2013-7-态
简单状态是指不包含子状态。 ♂ 简单状态没有子结构,但它可以具有状态名、入口 /出口动作、Do动作、On Event动作、内部转移。
Deleted
相关文档
最新文档