状态机图用于对单个类对象,用例和整个系统的动态行为进行建模。换句话说,当一个状态机创建了对象的连接对象时,该对象成为状态机的所有者,例如,状态机所附加的对象可以是一个类,用例甚至整个系统。
(一键即时打开使用)
UML中的状态机图是什么?
状态机图是一种行为,用于指定对象在其生命周期中响应事件所经历的状态序列。状态机用于指定必须响应异步激励或其当前行为取决于其过去的对象的行为。状态机用于对对象,用例甚至整个系统的行为进行建模,特别是响应系统,这些系统必须响应来自系统外部角色的信号。
在UML中,除传统的开始图表符号之外,状态机引入了两个新概念:
- 复合和嵌套状态
- 正交区域
以图形方式,状态呈现为带圆角的矩形。一个转换被呈现为一条坚实的指示线。
尝试一下!
查找在线状态机图工具?只需点击下面的绘图按钮即可在线创建您的状态机图。Visual Paradigm Online是免费*且直观的。在开始之前,您也可以通过这个状态机图教程来了解状态机图。
现在画
状态机图表符号
州
状态是对象生命中的一种状态,它可以满足执行一些活动的某些条件,或者等待某些事件被接收。
一个州有五个部分:
- 国家名称 - 国家名称
- 入境 - 进入州时采取的行动
- 做活动 - 在进入状态时执行动作
- 退出状态 - 在离开状态时执行的操作
- 可延迟触发器 - 不是在该状态下处理的事件列表,而是推迟并排队等待处于另一状态中的对象
对象在有限的时间内保持状态。例如,家中的加热器可能处于以下四种状态之一:空闲,制冷,加热,启动和活动。
过渡
- 转换是两个状态之间的关系,指示处于第一状态的对象将执行某些操作,并在发生指定事件并且满足指定条件时进入第二状态。
- 过渡火灾意味着发生状态改变。直到转换触发,对象处于源状态; 在它发生之后,据说它处于目标状态。
- 过渡有五个部分:
- 来源国 - 受过渡影响的国家
- 事件触发器 - 可以触发源状态在满足警戒条件时触发的激励,
- 保护条件 - 在接收到事件触发器触发转换时计算的布尔表达式,
- 行动 - 一个可执行的原子计算,可以直接作用于拥有状态机的对象,间接作用于对象可见的其他对象,
- 目标状态 - 完成转换后处于活动状态。
来源和目标国家
源状态:受到转换影响的状态;如果一个对象处于源状态,当对象收到转换的触发事件以及是否满足防护状态(如果有)时,可能会触发转出转换。
目标状态:转换完成后处于活动状态。
活动
事件是发生在某个时间点的离散信号。它也被称为刺激物和对物体的一种输入。以下是事件的特点:
- 可能导致状态改变
- 可能触发操作 - 操作可以是内部操作或外部操作
- 可能有相关的条件
- 信号事件可以用来在状态机之间进行通信
警戒状况
- 状态转换标签 - 事件[保护条件]
- 条件是一个布尔函数
- 状态机上的条件是可选的
- 在有限的时间内条件是成立的
- 事件发生时,条件必须为真才能进行状态转换。如果条件为假,则不会发生状态转换。
操作
动作是由于状态转换瞬间执行的。状态转换标签可以表示为以下格式
- 事件/动作(s)
- 事件[条件] /行动(S)
- 进入/退出行动
决策节点
决定ode用于表示测试条件,以确保控制流或对象流只落在一条路径上。
叉节点是一个伪状态,用于将入局转换分解为两个或更多个以正交目标顶点为终点的转换。从叉顶点出来的线段不能有防守或触发器,并且它必须有一个输入和至少两个输出转换。
连接节点是一个伪状态,用于合并从不同正交区域中的源顶点发出的多个转换。进入联接顶点的转换不能有防护或触发器,并且它必须至少有两个传入转换和一个传出转换。
合并节点用于将使用决策节点创建的不同决策路径重新组合起来。
选择是一种假的状态,当达到时,导致对其即将离任的过渡的触发者的警卫的动态评估。这实现了一个动态条件分支。它允许将转换分成多个传出路径,以便决定采用哪条路径。
示例:状态机图的选择节点
终止是一个伪状态,表示状态机的生命线已经结束。终止伪状态由十字表示。
与最终状态不同,终止伪状态意味着状态机由于上下文对象被终止而结束。没有任何状态退出,状态机也不会执行任何退出操作,除了与导致终止状态的转换相关的操作。
复合状态
一个简单的状态是一个没有子结构的状态。复合国可以进一步分解成子状态(在州内或在单独的图中)。具有子状态(嵌套状态)的状态称为复合状态。
- 子状态可以嵌套到任何级别。
- 嵌套状态机最多可以有一个初始状态和一个最终状态。
- 通过显示某些状态只能在特定的上下文(封闭状态)内,子状态用于简化复杂的平面状态机。
复合状态与冲锋枪状态
除复合状态之外,还有另一个称为冲突状态的符号,它在语义上等同于复合状态。
正交状态
甲复合状态具有两个或更多个区域被称为正交。与组合状态不同,冲突状态旨在对状态进行分组,因此您可以重复使用它们。正交状态分为两个或多个由虚线分开的区域:
- 每个区域的一种状态在任何时间点始终处于活动状态,即同时发生的衬底
- 条目:过渡到正交状态的边界激活所有区域的初始状态
- 退出:必须在所有区域达到最终状态才能触发完成事件
注意:
您可以使用并行和同步节点来协调不同的子状态。并行子状态是独立的,可以在不同的时间完成。
历史状态 - 浅/深
历史状态允许状态机在离开组合状态之前重新输入活动的最后一个子状态。下图显示了历史状态使用情况的一个示例:
何时绘制状态机图?
在以下情况下可以使用状态机:
- 在业务建模期间,您可以创建状态机来模拟用例场景。
- 在分析和设计过程中,您可以对事件驱动的对象进行建模,这些事件对对象上下文之外的事件做出反应
- 在分析和设计过程中,您可以使用多个状态机图来显示同一个状态机及其行为的不同方面。
如何绘制状态机图?
可以按照以下步骤开发用例模型。
- 识别具有复杂行为的实体或确定参与行为的生命周期将被指定的类
- 模型状态 - 确定实体的初始状态和最终状态
- 模型转换
- 模型事件 - 识别影响实体的事件
- 从初始状态开始工作,追踪事件的影响并确定中间状态
- 识别各州的任何进入和退出行动
- 必要时使用子状态扩展状态
- 如果实体是一个类,请检查该状态中的操作是否受该类的操作和关系支持,如果不扩展该类
- 根据需要进行细化和阐述
你也可以:
- 绘制子状态,用于抽象的逻辑分类以便重用
状态机图示例
下面的数字时钟状态机图例显示了一个简单的数字时钟的接口:
状态机图所在的类:
用于建模DigitalClock行为的状态图:
下面提供了更多的状态机图例。
状态机图例:烤面包机
状态机图示例:烤箱
状态机图例:计算机测试
这个例子通过使用两个区域来表示两组并发子状态。
状态机图示例:人类生活
这个例子通过使用两个区域来表示两组并发子状态。
标签:Diagram,触发,转换,状态,对象,状态机,State,事件 From: https://blog.51cto.com/u_13102515/6001801