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

UML的状态机图UML(Unified Modeling Language)是一种标准化的建模语言,用于描述软件系统中的各种构建块和交互关系。
UML的状态机图是其中一个最为重要的建模图之一。
什么是状态机图?状态机图是一种用于描述对象行为的UML图表。
它以有限状态机的形式描述对象或系统在不同状态下对事件以及其他因素产生的响应。
状态机图显示了对象的状态及其之间的转换。
状态机图主要由三个部分组成:状态、转移和事件。
状态表示对象或软件系统处于的状态,转移表示状态之间的转换,事件则表示导致状态转换的触发器或条件。
状态机图的建立过程在建立状态机图之前,需要先确定对象或软件系统的状态、转移和事件。
1. 确定状态首先需要确定对象或软件系统可能出现的所有状态。
每个状态都应该有一个名称、一个描述以及一个标识符。
状态可以是“初态”(启动状态)、“终态”(结束状态)或“中间态”(中间状态)。
2. 确定转移和事件根据对象或软件系统的实际情况,确定状态之间的转移以及导致转移的事件或条件。
每个转移都应该有一个名称、一个标识符以及一个触发器。
触发器可以是一些条件,例如键盘上的一个按键或计时器到期,也可以是上一个状态完成某些任务导致的条件。
例如,在一个自动售货机的状态机图中,售货机可能处于“待机”、“已付款”、“正在出货”、“出货完成”四种状态。
当用户选择购买商品并投入硬币时,售货机会从“待机”状态转移到“已付款”状态,并且会关闭“使用硬币”事件。
当售货机完成出货并关闭接口时,它会从“正在出货”状态转移到“出货完成”状态。
状态机图的用途状态机图有很多用途。
它可以用于描述产品或系统的交互设计,也可以用于演示API和网络安全策略的行为。
一些常见的用途包括:1. 软件开发状态机图可以在软件开发过程中用于确定软件的行为、处理错误和异常情况、定义状态转换以及帮助代码实现。
通过建立状态机图,可以更好地理解软件中各个状态的流转情况,从而提高软件开发效率。
UML图详解(八)——状态机(状态图和活动图)

UML图详解(⼋)——状态机(状态图和活动图)⼀、概念状态图和活动图是状态机的两种表现形式。
利⽤状态机可以精确地描述对象的⾏为。
从对象的初始状态起,开始响应事件并执⾏某些动作,这些事件引起状态的转换;对象在新状态下⼜开始响应事件和执⾏动作,如此连续进⾏直到终结状态。
⼆、状态图状态图(State Diagram)=状态(State)+迁移(Transition)⼀个状态图描述⼀个状态机。
状态图表现从⼀个状态到另⼀个状态的控制流。
<1>状态图的语法1>除了状态中的初始状态(实⼼圆)和终⽌状态(⽜眼形状),其它状态⽤⼀个圆⾓矩形表⽰转换表⽰状态间可能的路径,⽤箭头表⽰事件/动作写在由它们触发引起的转换上<2>状态2>状态⼀般是给定类对象中的⼀组属性值,在其所在的上下⽂中应该唯⼀,但可以匿名。
在对系统建模时,我们可以只关⼼那些明显影响对象⾏为的属性以及由他们表达的对象状态,⽽不⽤理睬那些于对象⾏为⽆关的状态。
表⽰⽅式:状态由⼀个带圆⾓的矩形表⽰。
应⽤标签标⽰状态的内部活动。
语法:标签/活动表达式UML提供的标签:1. entry:当进⼊⼀个状态的时候被⾃动触发,该活动在状态中其它任何活动之前被⾃动触发。
2. do:当状态处于激活时执⾏do活动,do活动在进⼊活动之后执⾏,并且⼀直运⾏到它本⾝完成为⽌。
3. exit:当离开⼀个状态的时候被⾃动触发,该活动在该状态结束之前、所有其它活动都完成后被触发。
状态可以嵌套状态图,此时状态称为组成状态,否则为简单状态。
⼊⼝事件表⽰⼀个⼊⼝的动作序列,它在进⼊状态时执⾏。
⼊⼝事件的动作是原⼦的,并且先于⼈和内部活动或转换。
出⼝事件表⽰⼀个出⼝的动作序列,它在退出状态时执⾏。
出⼝事件也是原⼦的,它跟在所有的内部活动之后,但是先于所有的出⼝转换。
1. 简单状态(Simple State)2. 复合状态(Composite State)复合状态可以有多组状态图,每组⽤虚线分割开来。
状态机图(精品)

状态机图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)伪状态指在一个状态机中具有状态的形式,同时具有特殊行为的顶点。
它是一个瞬时状态,用于构造转换的细节。
当伪状态处于活动时,状态机还没有完成从运行到完成的步骤,也不会处理事件。
第10章 状态机图讲解

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

zhufei@
无人职守的电梯升降状态图
第一层楼 上升( 第n层 ) 向上移动
do/ 移动到第n层
到达 下降( 第n层 ) 移动到第一层 向下移动
do/ 移动到第n层
到达 等待命令
entry/ 计时器=0 do/ 计时器增值
上升( 第n层 )
到达
[计时器=超时]
zhufei@
事件
事件表示在某一特定的时间或空间出现的 能够引发状态改变的一种运动变化。 事件是一个激励的出现,它定义一个触发 子以触发对象改变其状态,任何影响对象 的事物都可以是事件。
事件
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ 事件种类: 入口事件 出口事件 动作事件 信号事件 调用事件 修改事件 时间事件 延迟事件
zhufei@
设备使用状况的状态图例子
zhufei@
嵌套状态
在一个状态图符的活动区还有一个或多个状态 图称为嵌套状态,被嵌套的状态称为子状态。 一个子状态还可以有嵌套状态 一个不含内嵌套的状态,称为简单状态。简单 状态对应一个动作,而嵌套状态中每个被嵌套 的状态图都对应于该嵌套状态内正在进行的一 个活动。
zhufei@
事件的种类
状态内部事件
入口事件entry 出口事件exit do事件 include事件 自定义内部事件
调用事件
信号事件Hale Waihona Puke 消息
时间事件 After事件 Defer事件 When事件 出错情况<<error>>等事件
zhufei@
状态图
示意图:
状态图的例子
统计付款金额
entry/ ^在屏幕上提示(合同编号No.1已经付款) do/ ^在屏幕上提示(No.1已经付款:100元) exit/ 已付款金额累加
状态图课件

延迟事件:该事件不会触发状态的转换,当对
象处于该状态时事件不会丢失,但会被延 迟执行。例如,当E-mail程序中正在发送 第一封邮件时,用户下达发送第二封邮件 执令就会被延迟,但第一封邮件发送完成 后,这封邮件就会被发送。这种事件就属 于延迟事件。
四、变迁 变迁被定义为软件对象的两个状态之间的关 系,表明在指定的事件发生后,在特定的条件下 ,对象执行指定的动作,并进入另一个状态。
内部转换和自转换(完成转换)不同:
自转换: 源状态和目标状态为同一状态的转移。
五、状态图建模技术
建模步骤: 1. 找出适合用模型描述其行为的类。 2. 确定对象可能存在的状态。 3. 确定引起状态转换的事件。 4. 确定转换进行时对象执行的相应动作。
例 书的状态图
状态图的Rose建模
一、新建状态机图
状态变量 活动
在一个状态中允许有多个动作。
1. 2. 3. 4. entry:入口动作,进入状态时发生的动作 exit:出口动作,发生状态改变时执行的动作 do:标记内部活动,处于某种状态时发生的动作 event:当特定事件触发时指定相应动作的发生。
Idle entry/LockScreen() exit/closeScreenSaving() do/showScreenSaving()
状态机图
对事物所处的状态及其变迁的考虑: 大多数事物在其生命周期中经历了不同的状态; 在特定的时间,一个事物位于一个状态; 在现实世界存在着引起事物的状态发生变化的事件; 事物在其状态间按次序转化 当事件发生时,事物可能需要采取一些动作。
状态机图
状态机图(State Machine Diagrams)给出了一个状态机,强调了从状态到状态 的控制流。 状态机(State Machine)定义了对象在生命周期中响应事件所经历的状态的序列 以及对象对这些事件的响应。状态机由状态、跃迁、事件、活动、动作等组成。 状态(State)代表对象在生命周期中的一种条件或状况,在这种状况下,对象满 足某个条件,或执行某个动作、或等待某个事件。一个状态在一个有限的时间段内 存在。 事件(Event)是一个重要事件的规范,该事件在时间和空间域中有一个位置。 跃迁(Transition)是两个状态之间的关系,它表示第一个状态的对象将执行某个 动作,如果规定的事件发生或规定的条件被满足,则对象进入第二个状态。 活动(Activity)是在状态机中进行的一个非原子的执行,它由一系列的动作组成 。 动作(Action)是一个可执行的原子计算,它导致状态的变更或返回一个值。 通常一个状态机依附于一个类,并且描述一个类的实例。状态机包含了一个对 象在其生命周期所有状态的序列以及对象对接收到的事件所产生的反应。
第八章 状态机图

构成:状态名称、入口和出口动作、内部转 换、内部活动和可推迟事件等。
状态名称
Enter Password
entry / set echo * exit / set echo normal keypress / handle character help / display help save / defer do / get password
组件符号
4.2 接口
• 定义:也是一种类元,是对一组公共特性 的声明,包括属性和操作,但不包括其实 现。 • 分类: 供给接口:组件实现了该接口,可以对外提 供该接口中的所有操作。 需求接口:组件需要从其他组件中获得的功 能
4.3 工件
• 定义:是系统中的一个物理单元,
<<artifact>> ChatWindow . jar
状态机图 第八章 状态机图
• • • • •
状态机图概述 状态机图基本元素 状态机图基本元素 复合状态 复合状态 子机状态 子机状态 历史状态
1.状态机图概述 状态机图概述
状态机图是描述单一对象在其生命期内受 各种事件的影响而发生的状态变化。 状态机图是展示状态与状态转换的图,它 不仅可以描述对象的行为,也可以用来描述 用例、协作和方法的动态行为。
2. 复合结构图基本元素
• 部件、连接器、端口 部件、连接器、
FriendList
角色名 类型 连接器 多重性 offlineMessage: Message[*] 1 部件 结构化类FriendList 图9.1 结构化类 *
Friend: Client[*]
FriendList
friend : Client [*]
工件符号
协作示例
第6章 状态机图

14
例1:子状态之间“or”关系的例子。
例2:子状态之间“and”关系的例子。
15
History State(历史状态)
History State: A pseudostate whose activation restores the previously active state within a composite state. 使用历史状态,可以记住从组合状态中退出时 所处的子状态,当再次进入组合状态时,可直 接进入到这个子状态,而不是再次从组合状态 的初态开始。
7
状态(State)
定义:A state is a condition or situation during the life of an object during which it satisfies some condition, performs some activity, or waits for some event. 一个状态是指在对象的生命期中的一个条件或 状况,在此期间对象将满足某些条件、执行某 些活动或等待某些事件。
22
说明: 在UML中,事件分为四类: (1) Call event (调用事件) (2) Change event (变化事件) (3) Time event (时间事件) (4) Signal event (信号事件)
23
(1) Call event: The event of receiving a call for an operation that is implemented by actions on state machine transitions. Call event的语法格式如下: 事件名 ( [逗号分隔的参数列表] ) 其中参数列表中的参数格式为: 参数名:类型 例:
uml建模-状态图和活动图

l 使用状态图的最常见的是对反应型对象、尤其是对类、 用例或整个系统的实例的行为建模。反应型对象是指 这个对象可能处于的稳定状态、从一个状态到另一个 状态之间的转换所需的触发事件,以及每个状态改变 时发生的动作。反应型对象具有如下的特点:
活动图的符号集与状态图中使用的符号集类似。像状态图 一样,活动图也从一个连接到初始活动的实心圆开始。 活动是通过一个圆角矩形(活动的名称包含在其内)来 表示的。活动可以通过转换线段连接到其他活动,或者 连接到判断点,这些判断点连接到由判断点的条件所保 护的不同活动。结束过程的活动连接到一个终止点(就 像在状态图中一样)。活动图中的基本要素包括状态、 转移、分支、分叉和汇合、泳道、对象流等。
l ⑹把动作附加到这些转换上,并且附加到这些状态上; l ⑺考虑通过使用子状态、分支、汇合和历史状态,来简化状态图; l ⑻核实所有的状态都是在事件的某种组合下可达的; l ⑼核实不存在死角状态,即不存在那种不能转换出来的状态; l ⑽通过手工或通过使用工具跟踪状态机,核对所期望的事件序列以及它
们的响应。
::new book 借书
::availห้องสมุดไป่ตู้ble 还书
::delete
一个图书对象从它的起始点 开始,首先是“新书”状态
(new book),然后是“可 以借阅”(available)的状 ::borrowed 态,如果有读者将书借走, 则该书的状态为“已借出”
状态(borrowed),如果图 书被归还图书馆,图书的状 态又变为“可以借阅”状态 。图书馆如果放弃该图书对 象的收藏,则图书对象处于
uml题库

22.通常对象有很多属性,但对于外部对象来说某些属性应该不能被直接访问,下面哪个不是 UML 中的类成员访问限定性(C)
A.公有的(public)
B.受保护的(protected)
C.友员(friendly)
D.私有的(private)
23.下列描述中,哪个不是建模的基本原则(D)
A.要仔细的选择模型
5. 在类图中,“ #”表示的可见性是
( B)
A. Public
B. Protected
C. Private
D. Package
6. 下面哪个视图属于 UML 语言的交互图
( D)
A. 行为图
B. 状态图
C. 实现图
D. 顺序图
7. 顺序图由类角色,生命线,激活期和( B )组成
A. 关系
B. 消息
用于说明系统的静态设计视图。
A.组件图
B.类图
C.对象图
D.部署图
26.当需要说明体系结构的静态实施视图时,应该选择(D)
A.协作图
B.对象图
C.活动图
D.部署图
27.(C)是描述系统中在某一时刻,一组对象以及它们之间关系的图形,其可以看作是类图在系统某一时刻的实例。
A.组件图
B.类图
C.对象图
D.部署图
C.对象图
D.状态图
eCase 用来描述系统在事件做出响应时所采取的行动。用例之间需要检查用户帐号是否正确。那么,用例“创建新订单”、“更新订单”与用例“检查用户帐号”之间是(C )
关系。
A.aggregation
B.extend
C.每个方法应该有一个参数
D.如果在同一个类中定义了类似的操作,则他们的行为应该是类似的
UML(六)状态机状态图

AM will keep each application’s state:
CREATED
/ Termination
Application has these stable states: Created Initialized
INITIALIZED ACTIVATED
/ Termination
Activated Focused
个状态机建模,如:对象的创建、撤销
➢ 建模准则:
建模具有复杂行为并依赖于状态的对象而不是建模跟状态无关的对象 如电话对于按下某个按钮的反应,依赖于手机当前的状态
在过程控制、设备控制、协议处理和通信领域等,通常有许多的依赖于 状态的对象。
5
1. 基本概念
➢ 使用交互图建模共同工作的 对象群体的 行为
转移/迁移(transition): 是两个状态之间的一种关系。它指明对象 在某个状态中执行一定的动作,并当特定事件发生或特定的条件满足 时进入下一个状态。
1. 基本概念
➢ UML 状态的的图形表示 圆角 的矩形 初态、终态 转态迁移:带箭头的线
➢ 迁移的文字标记的格式如下:
触发事件[触发条件]/变迁动作 迁移的文字标记的三个部分以及文字标记本身都是可以省略的
➢ 课本p257, 图25-2,
该机器被设计成能分析与语法相匹配的字符流: ‘<‘ string ‘>’ string ’;’ (Note: <标记串> 消息体;)
代码生成
➢ class MessageParser {
public boolean put(char c) { switch (state) { case Waiting: if (c == '<') { state = GettingToken; token = new StringBuffer(); body = new StringBuffer(); } break; case GettingToken : if (c == '>') state = GettingBody; else token.append(c); break; case GettingBody : 。。。
UML之状态机图

UML之状态机图状态机图基本概念: 状态机图,UML 1.x规范中称状态图,是⼀个展⽰状态机的图。
状态机图基本上就是⼀个状态机中元素的投影,这也就意味着状态机图包括状态机的所有特征。
状态机图显⽰了⼀个对象如何根据当前状态对不同事件做出反应的动态⾏为。
状态机图主要由状态和转换两种元素组成。
状态机 状态机是⼀种⾏为,它说明对象在其⽣命周期中响应事件所经历的状态变化序列以及对那些时间的响应。
⼀般情况下,⼀个状态机依附于⼀个类,⽤来描述这个类的实例的状态及其转换,和对接收到的事件所做出的响应。
此外,状态机也可以依附于⽤例、操作、协作等元素上,描述它们的执⾏过程。
状态机从对象的初始状态开始,响应事件并执⾏某些动作,从⽽引起状态的转换;在新状态下⼜继续响应事件并执⾏动作,如此循环进⾏到对象的终结状态。
状态机主要由状态、转换、事件、动作和活动5部分组成。
1)状态表⽰对象的⽣命周期中的⼀种条件或情况。
2)转换表⽰两种状态间的⼀种关系。
3)事件表⽰在某⼀时间与空间下所发⽣的有意义的事情。
4)动作表⽰⼀个可执⾏的原⼦操作,是UML能够表达的最⼩计算单元5)活动表⽰状态机中的⾮原⼦执⾏,⼀般由⼀系列动作组成。
状态机图作⽤:状态机图⽤于对系统的动态⽅⾯进⾏建模,适合描述⼀个对象在其⽣命周期中的各种状态及状态的转换。
状态机图的作⽤主要体现在以下⼏点:1)状态机图描述了状态转换时所需的触发事件和监护条件等因素,有利于开发⼈员捕捉程序中需要的事件。
2)状态机图清楚地描述了状态之间的转换及其顺序,这样就可以⽅便地看出事件的执⾏顺序,状态机图的使⽤节省了⼤量的描述⽂字。
3)清晰的事件顺序有利于开发⼈员在开发程序时避免出现事件错序的情况。
4)状态机图通过判定可以更好地描述⼯作流在不同的条件下⽽出现的分⽀。
状态机图的组成: 简单状态、转换、伪状态。
简单状态 状态是状态机图的重要组成部分,它描述了⼀个对象稳定在的某⼀个持续过程或所处状况,与动态⾏为的执⾏所产⽣的结果。
状态机图

1 基本概念
1.4 状态机操作
– 创建一个状态模型: • 单击Browse>State Machine Diagram, 在左边的“State Machine”下面选择新 创建的状态模型所要放置的位置: • 双击New: • 在Title文本框中为图命名; • 指定要创建的图类型:活动图(Activity) 或状态图(Statechart); • 单击OK按钮。
2 状态机图中的模型元素
2.3 状态转移 – 状态转移通常采用如下的语法进行标记: 事件名(参量)[监护条件]/动作 – 转移及转移动作
转移种类 入口动作 出口动作 外部转移 含 义
进入某一状态时执行的动作 离开某一状态时执行的动作 引起状态改变的转移或自身转移,同时执行一个 具体的动作,包括引起入口动作和出口动作被 执行的转移 引起一个动作的执行但不改变状态或不引起入口 动作和出口动作的执行
8 判断规范
8.1 General标签
8.2 Transitions标签
8.3 Swimlanes标签
9 同步规范
9.1 General标签 9.2 Transitions标签
1 基本概念
--对象的每一种状态通过对象的一个属性 或几个属性的值来表达。
--分析状态的目的:为了认识对象的行为 规律,为了看清在不同的状态下对象将 呈现哪些行为,这些行为将遵循什么规 律和约束,以及通过什么行为能使对象 从一种状态转移到另一种状态,从而确 切地定义这个对象。
--认识对象状态的抽象原则:划分状态等价类
帐号输入状态 entry/清空输入框
(2)exit:出口动作,用来指定状态被另一个状态取代时发生 的动作。出口动作的语法形式:exit/动作名。 帐号输入状态
uml系列(六)——行为图:活动状态

uml系列(六)——⾏为图:活动状态说完uml的静态图了,说⼀下uml的动态的表⽰吧。
uml的⾏为图,uml的⾏为图主要⽤来设计程序的⾏为。
还是⽼规矩,先来张图:⾏为图包含活动图和状态图两种。
先来说下活动图:活动图是由活动的节点和流程构成的图。
⽐较清晰的表达了各个步骤的流程。
⾸先是起点和终点,活动图由⼀个实⼼圆表⽰起点,⼀个实⼼圆外加⼀个圆圈来表⽰终点。
然后是节点,节点这个词⽐较⾼⼤上,其实它很简单,就是说的流程进⾏的状态,进⾏到哪⼀步了。
上图的“⽤户下订单”、“⽣产送货单”等都是节点。
在⽤户选择⽀付⽅式的节点下边,有个菱形的图形,在这⾥根据⽤户是否取消订单的条件,将流程分成了两条路,这就是分⽀,⽽这⾥的条件,也有个⾼⼤上的名词:监护条件,感觉就像⼤⼈监护孩⼦⼀样,根据孩⼦的表现决定接下啦的动作。
在⽤户下订单的下⾯,和供应商供货之前,有个横条(竖条)这就是uml对数据的并发操作的描述。
不了解并发是啥?ok我来简单的介绍⼀下:并发就是两件事情⼀起进⾏。
⽐如说,⼩学的时候,⽼师经常让我们⽤“⼀边、、、⼀边、、、”造句,我们可能会说:“⼩明⼀边看电视,⼀边吃饭。
”这⾥的“看电视”和“吃饭”就是⼩明的并发操作。
这两个条是同步条,同步条肯定是同步出现的。
泳道,在这张图⾥,我们把各个活动的负责主体⽤⼀条竖线隔离,以便于我们分析系统你给的负责⼈。
这样,每个负责⼈的下⾯就形成⼀个类似游泳时的泳道⼀样的效果。
这就是我们说的泳道。
泳道⼀般是在系统分析后期以及系统设计阶段使⽤。
活动图⼀般⽤作对系统的⼯作流建模和对系统的操作建模。
描述⾏为的除了活动图外还有⼀种图是状态图。
状态图主要强调的是状态,表⽰的是在某个时间段内,某个对象会保持在某个状态中,在发⽣某个事件后,状态就会改变。
状态机主要描述的是⼀个类的实例在接到消息时所作出的响应。
如上图所⽰,描述的就是⼀个热⽔器在⼯作时的⾏为。
是描述⼀个状态图的局部的对象的⾏为的视图,可以对状态图⾥的某个对象的⾏为精确的描述。
[UML]UML系列——状态机图statechartdiagram
![[UML]UML系列——状态机图statechartdiagram](https://img.taocdn.com/s3/m/dd8307225b8102d276a20029bd64783e09127da6.png)
[UML]UML系列——状态机图statechartdiagram系列⽂章引⾔状态机图和顺序图、通信图有哪些区别?顺序图、通信图:描述多个对象间的交互状态机图:描述单个对象的状态及引起状态变化的原因实例分析:⼤学⽣学籍管理系统按国家招⽣规定录取的新⽣,持录取通知书,按学校有关要求和规定的期限到校办理⼊学⼿续。
因故不能按期⼊学者,应当向学校请假,假期⼀般不得超过2周。
未请假、请假未准或者请假逾期者,除因不可抗⼒等正当事由意外,视为放弃⼊学资格。
新⽣⼊学后,学校在三个⽉内按照国家招⽣规定对其进⾏复查。
复查合格者予以注册,取得学籍。
复查不合格者,学校区别情况予以处理,直⾄取消⼊学资格。
......学⽣有如下情况之⼀者,应予休学:(⼀)因伤病经学校指定医院诊断,须停课治疗、休养⼀学期1/3时间;(⼆)⼀学期请假缺课超过该学期总学时的1/3;(三)传染性肝炎、肺结核等传染性疾病;(四)因某种特殊原因,学校认为必须休学。
.....学⽣休学⾄少⼀学期,⼀般以⼀年为限。
学⽣复学后,休学之前已记⼊成绩档案的考核成绩继续有效,并作为学籍处理依据.学⽣复学按下列规定办理:(⼀)学⽣因伤病休学申请复学时,须持有⼆级甲等以上医院诊断书,证明⾝体健康,并经学校指定医院复查合格,⽅可复学;(⼆)学⽣休学期满后应于学期的注册期内持有关证明,经教务处核准后编⼊原专业相应班级选课学习;........学⽣有下列情况之⼀者,应予退学:(⼀)学⽣在读期间,3次出现在⼀学期中取得的课程学分不⾜10学分(不含重修和补考学分;毕业学期除外;第⼀次提出警告,第⼆次提出退学警告,由教务处公布名单,院系负责通知学⽣家长);(⼆)休学、保留学籍期满,在规定期限内不办理复学⼿续;(三)休学累计满⼆年,经复查不合格;(四)因伤病需要休学,经学校动员后仍不办理休学⼿续;(五)经学校指定医院确诊患有疾病,或意外伤残⽆法继续在校学习;(六)未请假离校连续2周末参加学校规定的教学活动;(七) 超过学校规定期限未注册⽽⼜⽆正当事由;(⼋)本⼈要求退学。
- 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)
与状态图的区别
状态图
由某个对象的状 态序列组成,以 状态为中心
活动图