个性化阅读
专注于IT技术分析

UML状态机图用法图解

本文概述

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

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

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

  1. 行为状态机
    行为状态机图记录了系统内对象的行为。它描述了特定实体的实现。它对系统的行为进行建模。
  2. 协议状态机
    它捕获了协议的行为。协议状态机描述协议状态的更改以及系统内的并行更改。但是, 它没有描述特定组件的实现。

为什么要使用状态机图?

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

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

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

状态机图的表示法

以下是下面列出的状态机图的符号:

UML状态机图
  1. 初始状态:它定义系统的初始状态(开始), 并用黑色实心圆圈表示。
  2. 最终状态:代表系统的最终状态(结束)。它由一个圆圈内的实心圆圈表示。
  3. 决策框:呈菱形, 代表要在评估后卫的基础上做出的决策。
  4. 过渡:由于某些事件的发生, 控制权从一种状态更改为另一种状态称为过渡。它由带有事件的箭头表示, 由于该事件而导致发生更改。
  5. 状态框:描述特定时间点上类特定对象的条件或情况。具有圆角的矩形用于表示状态框。

国家类型

UML包含三个状态:

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

如何绘制状态机图?

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

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

以下是绘制状态机图时要结合的步骤:

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

什么时候使用状态机图?

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

它描绘了对象从开始到结束所经历的变化。它基本上设想了触发事件如何导致系统内的更改。

状态机图用于:

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

状态机图示例

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

最初, 自动柜员机是关闭的。打开电源后, ATM开始执行启动操作并进入自检状态。如果测试失败, 则ATM会进入”服务停止”状态, 或者将经历无触发的过渡到”空闲”状态。这是客户等待交互的状态。

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

UML状态机图

在这里, “服务客户”是一个复合状态, 具有依次为”客户身份验证”, “选择交易”和”交易”的子状态。

客户身份验证和交易是复合状态, 其本身由隐藏的分解指示图标显示。交易完成后, 服务客户将无触发地转换回空闲状态。在离开状态时, 它将经历退出操作弹出卡, 该弹出卡排出客户卡。

状态机与流程图

状态机 Flowchart
它描绘了系统的几种状态。 它演示了程序的执行流程。
它包含等待的概念, 即等待事件或动作。 它不构成等待的概念。
它用于真实世界的建模系统。 它设想了系统的分支顺序。
这是一个建模图。 这是数据流程图(DFD)
它涉及系统的几种状态。 它着重于控制流和路径。

赞(0)
未经允许不得转载:srcmini » UML状态机图用法图解

评论 抢沙发

评论前必须登录!