UML - 状态图


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

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

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

状态图的目的

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

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

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

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

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

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

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

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

如何绘制状态图?

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

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

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

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

  • 识别状态。

  • 识别事件。

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

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

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

UML 状态图

在哪里使用状态图?

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

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

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

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

主要用法可以描述为 -

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

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

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

  • 正向和逆向工程。