一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

状态图被用于在时间有限的实例来表示该系统或该系统的一部分的状态。它是一个行为图,它表示使用有限状态转换的行为。状态图也称为状态机状态图。这些术语通常可互换使用。简单地说,状态图用于模拟类的动态行为以响应时间和改变外部刺激。我们可以说每个类都有一个状态,但我们不使用状态图对每个类建模。我们更喜欢对具有三种或更多状态的状态进行建模。

状态图的使用 

  • 我们用它来陈述负责状态变化的事件(我们不会显示导致这些事件的进程)。
  • 我们用它来模拟系统的动态行为。
  • 理解对象/类对内部或外部刺激的反应。

首先让我们了解什么是行为图UML中有两种类型的图表:

  1. 结构图 (Structural Diagrams) -用于建模系统的静态结构,例如 - 类图,包图,对象图,部署图等。
  2. 行为图 (Behaviral Diagrams) -用于模拟系统中的动态变化。它们用于建模和构建系统的功能。因此,行为图仅使用用例图,交互图,活动图和状态图指导我们完成系统的功能。

一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

状态图和流程图之间的差异

一个的基本目的状态图是描绘在类的状态,并引起的变化的各种变化不处理或命令。但是,另一方面,流程图描绘了执行时更改类的状态或类的对象的进程或命令。

一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

图 - 用户验证的状态图

上面的状态图显示了特定系统存在验证子系统或类的不同状态。

状态图的基本组件 -

初始状态 (Start State) -我们使用黑色实心圆表示系统或类的初始状态。

一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

图 -初始状态表示法

过渡 (Transition) - 我们使用实线箭头来表示从一种状态到另一种状态的控制转换或变化。箭头标有导致状态变化的事件。

一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

图 -过渡

状态 (State) - 我们使用圆角矩形表示状态。状态表示一个类的对象在瞬间的条件或情况。
一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

图 - 状态表示法

Fork - 我们使用圆角实心矩形条来表示Fork符号,其中包含来自父状态的incomig箭头和朝向新创建状态的外向箭头。我们使用fork表示法来表示分成两个或多个并发状态的状态。

一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

图 - 使用fork表示法的图表

加入 (Join) -我们使用圆角实心矩形条来表示加入符号,其中来自加入状态的传入箭头和朝向共同目标状态的传出箭头。当一个或多个事件发生时,两个或多个状态同时汇聚成一个时,我们使用连接表示法。

一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

图 -使用连接表示法的图表

自我过渡  (Self-Transition) -我们使用一个实心箭头指向状态本身来表示自我过渡。可能存在这样的情况:当事件发生时对象的状态不会改变。我们使用自我过渡来表示这种情况。

一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

图 -自转换表示法

复合状态 (Composition State) - 我们也使用圆角矩形来表示复合状态。我们使用复合状态表示具有内部活动的状态。

一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

图 -具有内部活动的州

最终状态 (End State) - 我们使用圆圈表示法中的实心圆来表示状态机图中的最终状态。

一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

图 - 最终状态表示法

绘制状态图的步骤 

  1. 确定初始状态和最终终止状态。
  2. 识别对象可能存在的可能状态(对应于不同属性的边界值指导我们识别不同的状态)。
  3. 标记触发这些转换的事件。

示例 -在线订单的状态图 -

一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

图 - 在线订单的状态图

我们绘制的UMl图取决于我们要表示的系统。以下是在线订购系统的外观示例:

在收到订单的情况下,我们从初始状态转换到未处理订单状态。

然后检查未处理的订单。

如果订单被拒绝,我们将转入拒绝订单状态。

如果订单被接受并且我们有可用的物品,我们将转入已完成的订单状态。

 

但是,如果物品不可用,我们将转入待处理订单状态。

订单完成后,我们将转入最终状态。在此示例中,我们将两个状态(即已执行订单和已拒绝订单)合并为一个最终状态。

注意 -在这里,我们也可以将已履行的订单和拒绝的订单分别作为最终状态处理。

状态机图示例:烤箱

这是一个状态机图,显示了烤箱的内部状态以及状态之间的转换。它包括等待,全功率,半功率,设置时间,禁用,启用和操作等状态。请注意,do和exit可用于指定在特定状态和结束状态期间要执行的活动。

一文渎懂统一建模语言状态图 (State Diagram or State Machine Diagram)

(单击并编辑上面的示例

 

参考 -