UML - 状态图

图表的名称本身阐明了图表的目的和其他细节。 它描述了系统中组件的不同状态。 这些状态特定于系统的组件/对象。

状态图描述了状态机。 状态机可以定义为定义对象不同状态的机器,这些状态由外部或内部事件控制。

活动图在下一章中解释,是一种特殊的状态图。 由于状态图定义了状态,因此它用于对对象的生命周期进行建模。

状态图的用途

状态图是用于对系统的动态特性进行建模的五个 UML 图之一。 它们定义对象在其生命周期内的不同状态,并且这些状态会因事件而改变。 状态图对于反应式系统建模非常有用。 反应式系统可以定义为响应外部或内部事件的系统。

状态图描述了从一种状态到另一种状态的控制流。 状态被定义为对象存在的条件,并且当触发某些事件时对象会发生变化。 状态图最重要的目的是对对象从创建到终止的生命周期进行建模。

状态图也可用于系统的正向和逆向工程。 然而,主要目的是对反应式系统进行建模。

以下是使用状态图的主要目的 −

  • 对系统的动态方面进行建模。

  • 对响应式系统的生命周期进行建模。

  • 描述对象在其生命周期内的不同状态。

  • 定义一个状态机来对对象的状态进行建模。

如何绘制状态图?

状态图用于描述不同对象在其生命周期中的状态。 重点关注某些内部或外部事件导致的状态变化。 对象的这些状态对于准确分析和实现它们非常重要。

状态图对于描述状态非常重要。 状态可以被识别为特定事件发生时对象的状况。

在绘制状态图之前,我们应该澄清以下几点 −

  • 确定要分析的重要对象。

  • 识别状态。

  • 识别事件。

以下是状态图示例,其中分析了 Order 对象的状态

第一个状态是进程开始时的空闲状态。 下一个状态是针对发送请求、确认请求和调度订单等事件到达的。 这些事件负责订单对象的状态变化。

在对象(这里是订单对象)的生命周期中,它会经历以下状态,并且可能会出现一些异常退出。 这种异常退出可能是由于系统的某些问题造成的。 当整个生命周期完成时,就认为是一个完整的事务,如下图所示。 对象的初始状态和最终状态也如下图所示。

UML 状态图

在哪里使用状态图?

从上面的讨论中,我们可以定义状态图的实际应用。 状态图用于对系统的动态方面进行建模,就像本教程中讨论的其他四个图一样。 然而,它在动态性质建模方面具有一些显着特征。

状态图定义了组件的状态,这些状态变化本质上是动态的。 其具体目的是定义事件触发的状态变化。 事件是影响系统的内部或外部因素。

状态图用于对系统上运行的状态和事件进行建模。 在实现系统时,阐明对象在其生命周期内的不同状态非常重要,状态图就是用于此目的。 当这些状态和事件被识别后,它们被用来建模,并且这些模型在系统的实现过程中使用。

如果我们看看Statechart图的实际实现,那么它主要用于分析受事件影响的对象状态。 此分析有助于了解系统执行期间的行为。

主要用法可以描述为 −

  • 对系统的对象状态进行建模。

  • 对反应系统进行建模。 反应式系统由反应式对象组成。

  • 识别导致状态更改的事件。

  • 正向和逆向工程。