一、状态机图简介
- 状态机图描述了一个对象在其生命周期内所经历的各种状态,以及引起对象状态变化的原因。
- 状态机用于对一个模型元素建立行为模型,该模型元素通常是一个类/对象,也可以是一个 Use Case ,甚至是整个系统。
1、状态
- 初始状态:使用一个实心圆表示。
- 一般状态:使用圆角矩形表示,在标识符内部编辑名称及该状态下的动作。
- 终止状态:类似于初始状态外加一个圆圈。
- 组合状态的子状态分为两种,顺序子状态和并发子状态。
(1)简单状态
- 如果一个组合状态的子状态对应的对象在其生命周期内的任何时刻都只能处于一个子状态,也就是说状态机图中多个子状态是互斥的,不能同时存在,这种子状态被称为顺序状态。
(2)并发状态
- 并发状态用来描述一起进行的状态变化流,并发状态强调时间发生时刻的一致。
- 由并发状态构成的组合状态被分成不同区域,每个区域包含不同的状态机,各区域内的状态机分别运行。如果并发子状态中有一个子状态比其他并发子状态先到达它的终止状态,那么结束的子状态的控制流将在它的终止状态等待,直到所有的子状态都终止。此时,所有子状态的控制流汇合成以恶控制流,转移到下一个状态。
2、转移
- 转移是两个状态之间的关系,指示处于第一状态的对象将执行某些动作并且当指定事件发生并且满足指定条件时进入第二状态。
- 转移的五个要素(非必须):
- 源状态 (Source State):受转换影响的状态;如果对象处于源状态,则当对象接收到转换的触发事件并且满足监护条件(如果有)时,可以触发传出转换。
- 目标状态 (Target State):转移完成后对象处于的状态。
- 触发事件:一种可以触发源状态以满足监护条件的激励。
- 监护条件:是原状态向目标状态转移的条件,原状态结束时进行监护条件的判断,只有当监护条件满足时,才能转移到指定的目标状态。
- 动作:转换激活时的操作。
- 触发事件和监护条件遵循的规则:
- 转移时,监护条件在事件发生时计算一次。若转移被重新触发,则监护条件将会被重新计算。
- 如果监护条件和触发事件放在一起使用,当且仅当触发事件发生且监护条件布尔表达式成立时,状态转移才发生 。
- 如果只有监护条件,则只要监护条件为真,状态就发生转移。
- 转移的类型:
- 自转移:
- 自转移打断当前状态下的所有活动,使对象退出当前状态,最后又返回该状态。
- 自转移中,状态转移的源状态和目标状态是同一个状态。
- 内部转移:
- 内部转移描述执行响应事件的内部动作或活动,转移只有源状态没有目标状态,内部转移激发的结果并不是改变状态本身。
- 自动转移:
- 自动转移又称为完全转移,是当前状态自然结束并引发的转移。
- 复合转移:
- 复合转移由简单转移组成,这些简单转移通过判定、分叉或汇合组合在一起。
- 自转移:
(1)判定决策点
- 判定决策点是状态转移中的分支,系统的状态在转移时被不同的条件影响,能够在不同的条件下转移到不同的状态,这个条件即为判定决策点。
- 判定的标识符是一个菱形,控制流通常从菱形的一个顶点进入,从其他顶点输出。
(2)同步(分叉与汇合)
- 同步和判定决策点都能够将状态分流,不同的是,判定决策点是不同条件下的不同状态转移;而同步是可同时进行的状态转移。
- 使用同步条显示并发的转移,即同时发生的转移,同步条为实心矩形,同步分为两种形式:控制流的分叉和汇合。
3、事件
- 事件是能够引发系统对象状态改变的行为。事件和转移是相伴出现的,事件可以看作是对转移的修饰,描述系统元素状态改变的原因。事件可以有属性和参数,参数放在事件名称后面的括号()内。
- 事件是一个触发器,有时事件又被称为事件触发器。它触发了状态之间的转移和状态内部转移,接收事件的对象必须了解如何对触发器进行响应。
4、动作
- 动作是不可分隔的行为,是行为最小的单元。动作可以是类对象的操作和属性,一个状态中允许有多个动作。
- 由于状态图时系统状态间的转移,因此,动作只能表现在状态内部,包括动作类型和名称。
- 动作的五种基本类型:
- entry:入口动作,进入状态是发生的动作。
- exit:出口动作,当前状态结束时发生的动作。
- do:内部动作,模型元素处于某个状态时执行的动作。
- include:引用子状态机状态。
- event:用来指定特定事件触发时发生的动作。
- 内部动作是模型元素在状态持续过程中执行的动作,执行与该状态相关的行为。内部动作不会改变元素当前状态,在入口动作执行后、出口动作执行前执行。
- 当内部动作执行完毕时,如果没有完成转移就触发它,否则状态将等待一个显式触发的转移。
- 如果内部动作正在执行时有一个转移被触发,此时内部动作将被终止,然后执行状态的出口动作。
5、活动
- 活动是当对象处于一个状态时,它一般是空闲的,在等待一个事件的发生。但是某些时间,人们希望描述正在进行的活动。在处于一个状态的同时,对象做着某些工作,并一直继续到被某个时间中断。
二、总结
- 状态机图的两种类型应用:
- 对对象生命周期建模:主要描述对象能够响应的事件、对这些事件的响应及过去对当前行为的影响。
- 对反应型对象建模:主要描述对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作。
- 注意:
- 一个状态机图只针对一个实体描述其状态转换。
文章来源地址https://www.toymoban.com/news/detail-795750.html
文章来源:https://www.toymoban.com/news/detail-795750.html
到了这里,关于UML-状态机图(状态图)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!