UML 状态机图

17 Mar 2025 | 5 分钟阅读

状态机图也称为状态图或状态转换图,它显示了系统中对象经历的状态顺序。它捕获了软件系统的行为。它对类、子系统、包和完整系统的行为进行建模。

事实证明,这是一种对外部实体和系统中的交互和协作进行建模的有效方法。 它对基于事件的系统进行建模以处理对象的状态。 它还定义了系统中组件的几个不同状态。 每个对象/组件都有一个特定状态。

以下是状态机图的类型,如下所示

  1. 行为状态机
    行为状态机图记录了系统中对象的行为。 它描述了特定实体的实现。 它对系统的行为进行建模。
  2. 协议状态机
    它捕获协议的行为。 协议状态机描述了协议状态的变化以及系统中的并行变化。 但它不描述特定组件的实现。

为什么使用状态机图?

由于它记录了系统的动态视图,因此它描述了软件应用程序的行为。 在生命周期内,对象经历了几个状态,该生命周期一直存在,直到程序正在执行。 每个状态都描述了有关对象的一些有用信息。

它蓝图了一个交互系统,该系统响应内部事件或外部事件。 从一种状态到另一种状态的执行流程由状态机图表示。 它可视化了对象的从创建到终止的状态。

主要目的是描述单个对象的每个状态。 它表示一个交互式系统和系统内部的实体。 它记录了系统的动态行为。

状态机图的表示法

以下是状态机图的表示法,如下所示

UML State Machine Diagram
  1. 初始状态:它定义了系统的初始状态(开始),并用黑色填充的圆圈表示。
  2. 最终状态:它代表系统的最终状态(结束)。 它用一个填充的圆圈表示,该圆圈位于一个圆圈内。
  3. 决策框:它是菱形,表示根据评估的守卫条件所做的决策。
  4. 转换:由于某些事件的发生,控制从一种状态到另一种状态的更改称为转换。 它由一个箭头表示,该箭头标有一个事件,由于该事件而发生了更改。
  5. 状态框:它描述了类特定对象在特定时间的条件或环境。 带有圆角的矩形用于表示状态框。

状态类型

UML由三个状态组成

  1. 简单状态:它不包含任何子结构。
  2. 复合状态:它由嵌套状态(子状态)组成,因此它不包含多个初始状态和一个最终状态。 它可以嵌套到任何级别。
  3. 子机状态:子机状态在语义上与复合状态相同,但是它可以重用。

如何绘制状态机图?

状态机图用于描述对象经历的各种状态。 从一种状态到另一种状态的更改是由于某些事件的发生。 在绘制状态机图之前,必须识别特定组件的所有可能状态。

状态机图的主要重点是描述系统的状态。 这些状态在绘制状态转换图时至关重要。 在实施状态机图之前,必须确认对象,状态和事件,由于这些状态和事件而发生状态转换。

以下是在绘制状态机图时要合并的步骤

  1. 应该为状态转换分配一个唯一且易于理解的名称,该名称描述了系统的行为。
  2. 在多个对象中,仅实现基本对象。
  3. 应该为事件和过渡赋予适当的名称。

何时使用状态机图?

状态机图实现了现实世界的模型以及面向对象的系统。 它记录了系统的动态行为,用于区分系统的动态行为和静态行为。

它描述了对象从开始到结束所经历的更改。 它基本上可以设想触发事件如何在系统中引起变化。

状态机图用于

  1. 用于对系统的对象状态进行建模。
  2. 用于对响应式系统进行建模,因为它由响应式对象组成。
  3. 用于查明负责状态转换的事件。
  4. 用于实施正向和反向工程。

状态机图的示例

下面给出了一个顶层状态机图的示例,该图显示了银行自动柜员机(ATM)。

最初,ATM已关闭。 接通电源后,ATM开始执行启动操作,然后进入自检状态。 如果测试失败,则ATM将进入停止服务状态,否则将经过无触发转换空闲状态。 这是客户等待交互的状态。

每当客户将银行卡或信用卡插入ATM的读卡器时,ATM状态将从空闲更改为服务客户,进入服务客户状态后,将执行进入操作readCard。 由于客户可以随时取消交易,因此从服务客户状态返回到空闲状态的转换可以由取消事件触发。

UML State Machine Diagram

在此,服务客户是具有顺序子状态的复合状态,分别是客户身份验证选择交易交易

客户身份验证交易本身就是复合状态,由隐藏的分解指示图标显示。 交易完成后,服务客户包含到空闲状态的无触发转换。 离开状态时,它会经过退出操作ejectCard,从而排出客户卡。

状态机vs.流程图

状态机流程图
它描述了系统的几种状态。它演示了程序的执行流程。
它包含WAIT的概念,即等待事件或动作。它不包含WAIT的概念。
它适用于现实世界的建模系统。它设想了系统的分支序列。
它是建模图。它是数据流图(DFD)
它涉及系统的几种状态。它侧重于控制流程和路径。

下一个主题活动图