UML 中的状态机图和状态图

什么是状态机图?

状态图 用于捕获软件系统的行为。UML 状态机图可用于对类、子系统、包甚至整个系统的行为进行建模。它也被称为状态图或状态转换图。

什么是状态图?

状态图为我们提供了一种有效的方法来对外部实体和系统内发生的交互或通信进行建模。这些图用于对基于事件的系统进行建模。对象的状态由事件控制。状态图用于描述应用系统内实体的各种状态。

UML中一共有两种类型的状态机图:

1.行为状态机图

  • 它捕获系统中存在的实体的行为。
  • 它用于表示元素的具体实现。
  • 可以使用 OOAD 中的行为状态机图来对系统的行为进行建模。

2. 协议状态机图

  • 这些图表用于捕捉协议的行为。
  • 它表示协议状态如何随事件而变化。它也表示系统中相应的变化。
  • 它们并不代表元素的具体实现。

为什么是状态机图?

状态图用于捕捉系统的动态方面。状态机图用于表示应用程序的行为。对象在其生命周期内会经历各种状态。对象的生命周期一直持续到程序终止。对象会根据对象内发生的事件从多个状态转变。每个状态都代表有关对象的一些独特信息。

状态图用于设计响应内部或外部事件的交互式系统。UML 中的状态图可视化了对象从一个状态到另一个状态的执行流程。

它表示对象从创建直到对象被销毁或终止期间的状态。

状态图的主要目的是对交互系统进行建模并定义对象的每个状态。状态图旨在捕获应用系统的动态行为。这些图用于表示系统的各种状态以及系统内的实体。

状态机图(状态图)的符号和符号

以下是状态图中使用的各种符号。所有这些符号组合起来构成一个图。

UML 状态图符号
UML 状态图符号

初始状态

初始状态符号用于指示状态机图的开始。

最终状态

该符号用于指示状态机图的结束。

决策框

它包含一个条件。根据评估的保护条件的结果,程序将采取一条新路径来执行。

过渡

转换是由于某些事件而发生的从一种状态到另一种状态的变化。转换会导致对象状态的改变。

州框

它是对象生命周期中的特定时刻。它使用分类器主体中的某些条件或语句来定义。它用于表示任何静态和动态情况。

它用一个圆角矩形来表示。州名写在圆角矩形内。

状态名称也可以放在矩形之外。这可以在复合状态或子机状态的情况下完成。可以将状态名称放在矩形内,也可以放在表格框中的矩形外。不能同时执行这两项操作。

状态可以是活动的,也可以是非活动的。当状态处于工作模式时,它处于活动状态,一旦它停止执行并转换到另一个状态,前一个状态就变为非活动状态,当前状态变为活动状态。

国家类型

统一建模语言定义了三种类型的状态:

  • 简单状态
  • 它们没有任何子状态。
  • 复合状态
  • 这些类型的状态可以有一个或多个子状态。
  • 具有两个或多个子状态的复合状态称为正交状态。
  • 冲锋枪状态
  • 这些状态在语义上与复合状态相同。
  • 与复合状态不同,我们可以重用子机状态。

如何绘制状态图?

状态图用于描述对象经历的各种状态。由于某些触发事件,一个状态会转变为另一个状态。要绘制状态图,请 UML,必须识别任何特定实体的所有可能状态。

这些目的 UML图 表示系统的状态。状态在状态转换图中起着至关重要的作用。在实现该图之前,必须先分析所有必要的对象、状态以及导致状态发生变化的事件。

绘制状态图时必须考虑以下规则:

  1. 状态转换的名称必须是唯一的。
  2. 状态的名称必须容易理解并描述状态的行为。
  3. 如果有多个对象,则只应实现必要的对象。
  4. 必须为每个转换和事件提供适当的名称。

何时使用状态机图?

状态图用于深入实现实际工作模型和面向对象系统。这些图用于通过捕获系统的动态行为来比较系统的动态和静态性质。

状态图用于捕获系统从开始到结束各个实体的变化。它们用于分析事件如何触发系统多个状态内的变化。

使用状态图:

  1. 对系统对象进行建模。
  2. 建模并实现交互系统。
  3. 显示触发状态变化的事件。

状态机示例

以下状态图示例图表示用户身份验证过程。

UML 状态图

UML 状态图

总共有两种状态,第一种状态表示必须先输入 OTP。之后,在决策框中检查 OTP,如果正确,则只发生状态转换,并验证用户。如果 OTP 不正确,则不会发生转换,并且它将再次回到起始状态,直到用户输入正确的 OTP,如上面的状态机图示例所示。

状态机图与流程图

以下是状态图和流程图之间的主要区别

状态机图 流程图
它代表系统的各种状态。 流程图说明了程序执行流程。
状态机有一个WAIT概念,即等待某个动作或者事件。 流程图并不处理等待概念。
状态机用于实时运行的系统。 流程图可视化系统的分支序列。
状态机是一种建模图。 流程图是序列流或 DFD 图。
状态机可以探索系统的各种状态。 流程图处理路径和控制流。

总结

  • 状态图也称为状态机图。
  • 这些图表用于对基于事件的系统进行建模。
  • 实体的状态通过事件来控制。
  • 状态机图一共有两种类型:1)行为状态机图 2)协议状态机图
  • 状态图用于捕获系统的动态方面。
  • 状态是对象生命周期中的特定时刻。