UML-状态机图(状态图)


一、状态机图简介

  • 状态机图描述了一个对象在其生命周期内所经历的各种状态,以及引起对象状态变化的原因。
  • 状态机用于对一个模型元素建立行为模型,该模型元素通常是一个类/对象,也可以是一个 Use Case ,甚至是整个系统。
    在这里插入图片描述

1、状态

  • 初始状态:使用一个实心圆表示。
  • 一般状态:使用圆角矩形表示,在标识符内部编辑名称及该状态下的动作。
  • 终止状态:类似于初始状态外加一个圆圈。
    在这里插入图片描述
  • 组合状态的子状态分为两种,顺序子状态和并发子状态。

(1)简单状态

  • 如果一个组合状态的子状态对应的对象在其生命周期内的任何时刻都只能处于一个子状态,也就是说状态机图中多个子状态是互斥的,不能同时存在,这种子状态被称为顺序状态。

(2)并发状态

  • 并发状态用来描述一起进行的状态变化流,并发状态强调时间发生时刻的一致。
  • 由并发状态构成的组合状态被分成不同区域,每个区域包含不同的状态机,各区域内的状态机分别运行。如果并发子状态中有一个子状态比其他并发子状态先到达它的终止状态,那么结束的子状态的控制流将在它的终止状态等待,直到所有的子状态都终止。此时,所有子状态的控制流汇合成以恶控制流,转移到下一个状态。
    在这里插入图片描述

2、转移

  • 转移是两个状态之间的关系,指示处于第一状态的对象将执行某些动作并且当指定事件发生并且满足指定条件时进入第二状态。
    在这里插入图片描述
  • 转移的五个要素(非必须):
    • 源状态 (Source State):受转换影响的状态;如果对象处于源状态,则当对象接收到转换的触发事件并且满足监护条件(如果有)时,可以触发传出转换。
    • 目标状态 (Target State):转移完成后对象处于的状态。
    • 触发事件:一种可以触发源状态以满足监护条件的激励。
    • 监护条件:是原状态向目标状态转移的条件,原状态结束时进行监护条件的判断,只有当监护条件满足时,才能转移到指定的目标状态。
    • 动作:转换激活时的操作。
  • 触发事件和监护条件遵循的规则:
    • 转移时,监护条件在事件发生时计算一次。若转移被重新触发,则监护条件将会被重新计算。
    • 如果监护条件和触发事件放在一起使用,当且仅当触发事件发生且监护条件布尔表达式成立时,状态转移才发生 。
    • 如果只有监护条件,则只要监护条件为真,状态就发生转移。
  • 转移的类型:
    • 自转移:
      • 自转移打断当前状态下的所有活动,使对象退出当前状态,最后又返回该状态。
      • 自转移中,状态转移的源状态和目标状态是同一个状态。
    • 内部转移:
      • 内部转移描述执行响应事件的内部动作或活动,转移只有源状态没有目标状态,内部转移激发的结果并不是改变状态本身。
    • 自动转移:
      • 自动转移又称为完全转移,是当前状态自然结束并引发的转移
    • 复合转移:
      • 复合转移由简单转移组成,这些简单转移通过判定、分叉或汇合组合在一起。

(1)判定决策点

  • 判定决策点是状态转移中的分支,系统的状态在转移时被不同的条件影响,能够在不同的条件下转移到不同的状态,这个条件即为判定决策点。
  • 判定的标识符是一个菱形,控制流通常从菱形的一个顶点进入,从其他顶点输出。
    在这里插入图片描述

(2)同步(分叉与汇合)

  • 同步和判定决策点都能够将状态分流,不同的是,判定决策点是不同条件下的不同状态转移;而同步是可同时进行的状态转移。
  • 使用同步条显示并发的转移,即同时发生的转移,同步条为实心矩形,同步分为两种形式:控制流的分叉和汇合。
    在这里插入图片描述

3、事件

  • 事件是能够引发系统对象状态改变的行为。事件和转移是相伴出现的,事件可以看作是对转移的修饰,描述系统元素状态改变的原因。事件可以有属性和参数,参数放在事件名称后面的括号()内。
  • 事件是一个触发器,有时事件又被称为事件触发器。它触发了状态之间的转移和状态内部转移,接收事件的对象必须了解如何对触发器进行响应。
    在这里插入图片描述

4、动作

  • 动作是不可分隔的行为,是行为最小的单元。动作可以是类对象的操作和属性,一个状态中允许有多个动作。
  • 由于状态图时系统状态间的转移,因此,动作只能表现在状态内部,包括动作类型和名称。
  • 动作的五种基本类型:
    • entry:入口动作,进入状态是发生的动作。
    • exit:出口动作,当前状态结束时发生的动作。
    • do:内部动作,模型元素处于某个状态时执行的动作。
    • include:引用子状态机状态。
    • event:用来指定特定事件触发时发生的动作。
  • 内部动作是模型元素在状态持续过程中执行的动作,执行与该状态相关的行为。内部动作不会改变元素当前状态,在入口动作执行后、出口动作执行前执行。
  • 当内部动作执行完毕时,如果没有完成转移就触发它,否则状态将等待一个显式触发的转移。
  • 如果内部动作正在执行时有一个转移被触发,此时内部动作将被终止,然后执行状态的出口动作。

5、活动

  • 活动是当对象处于一个状态时,它一般是空闲的,在等待一个事件的发生。但是某些时间,人们希望描述正在进行的活动。在处于一个状态的同时,对象做着某些工作,并一直继续到被某个时间中断。

二、总结

  • 状态机图的两种类型应用:
    • 对对象生命周期建模:主要描述对象能够响应的事件、对这些事件的响应及过去对当前行为的影响。
    • 对反应型对象建模:主要描述对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作。
  • 注意:
    • 一个状态机图只针对一个实体描述其状态转换。

  • 38
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
UML(Unified Modeling Language,统一建模语言)是一种广泛应用于软件工程领域的形化建模语言,可以用来描述系统中的各种结构和行为。其中,状态图UML中的一种表,用于描述对象的状态以及状态之间的转换。 状态图是一种特殊的表,它主要由状态、转移以及事件组成。状态表示了系统或者对象的当前情境,而转移则定义了状态之间的变迁,在特定事件发生时,系统或对象将从一个状态转移到另一个状态。 而有限状态机(Finite State Machine,FSM)是状态图的一种具体实现方式,它用有限个状态以及状态之间的转移来描述对象的行为。有限状态机的特点在于,每个状态都是离散且互斥的,对象只能处于其中一个状态,并在不同事件触发后,根据转移规则执行状态转换。 有限状态机的应用广泛,可以用来描述各种系统,例如自动售货机、电梯控制系统等。它们通常包括多个状态,如待机、运行、出错等,并且根据不同的输入事件和条件,可以在这些状态之间进行转换。 有限状态机的建模方法可以帮助开发人员更好地理解和设计系统的行为。通过将系统的行为转化为状态和转移来描述,有限状态机提供了清晰的视,使得开发人员可以更好地实现和测试系统。 总之,UML状态图和有限状态机是软件工程领域中常用的建模工具,可以帮助开发人员更好地理解和描述系统的状态和行为,进而实现系统的要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小宝945

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值