📜  UML状态机图

📅  最后修改于: 2021-01-11 13:24:01             🧑  作者: Mango

UML状态机图

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

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

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

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

为什么要使用状态机图?

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

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

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

状态机图的表示法

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

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

国家类型

UML包含三个状态:

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

如何绘制状态机图?

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

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

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

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

何时使用状态机图?

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

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

状态机图用于:

  • 用于建模系统的对象状态。
  • 用于对反应系统建模,因为它由反应对象组成。
  • 用于查明负责状态转换的事件。
  • 用于实施正向和反向工程。

状态机图示例

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

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

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

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

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

状态机与流程图

State Machine Flowchart
It portrays several states of a system. It demonstrates the execution flow of a program.
It encompasses the concept of WAIT, i.e., wait for an event or an action. It does not constitute the concept of WAIT.
It is for real-world modeling systems. It envisions the branching sequence of a system.
It is a modeling diagram. It is a data flow diagram (DFD)
It is concerned with several states of a system. It focuses on control flow and path.