UML – 状态图
该图的名称本身就阐明了该图的目的和其他细节。它描述了一个系统中一个组件的不同状态。这些状态是特定于系统中的一个组件/对象的。
状态图描述了一个状态机。状态机可以被定义为一个定义对象的不同状态的机器,这些状态由外部或内部事件控制。
在下一章中解释的活动图是状态图的一种特殊类型。由于状态图定义了状态,它被用来模拟一个对象的生命周期。
状态图的目的
状态图是UML的五个图之一,用来模拟系统的动态性质。它们定义了一个对象在其生命周期中的不同状态,这些状态由事件改变。状态图对于建模反应式系统很有用。反应式系统可以被定义为对外部或内部事件做出反应的系统。
状态图描述了从一个状态到另一个状态的控制流。状态被定义为一个对象存在的条件,当一些事件被触发时,它就会改变。状态图最重要的目的是对一个对象从创建到终止的生命周期进行建模。
状态图也被用于系统的正向和反向工程。然而,主要目的是为反应式系统建模。
以下是使用状态图的主要目的。
- 为一个系统的动态方面建模。
-
为一个反应式系统的生命期建模。
-
描述一个对象在其生命期内的不同状态。
-
定义一个状态机来模拟一个对象的状态。
如何绘制状态图
状态图是用来描述不同对象在其生命周期中的状态。重点是在一些内部或外部事件中的状态变化。这些对象的状态对于准确分析和实现它们非常重要。
状态图对于描述状态是非常重要的。状态可以被确定为对象在特定事件发生时的状态。
在绘制状态图之前,我们应该弄清楚以下几点
- 识别要分析的重要对象。
-
识别状态。
-
识别事件。
下面是一个状态图的例子,其中分析了订单对象的状态
第一个状态是空闲状态,流程从这里开始。接下来的状态是发送请求、确认请求和派送订单等事件的到来。这些事件负责订单对象的状态变化。
在一个对象(这里是订单对象)的生命周期中,它经历了以下状态,可能有一些异常的退出。这种异常退出可能由于系统中的一些问题而发生。当整个生命周期完成后,它被认为是一个完整的交易,如下图所示。一个对象的初始和最终状态也显示在下图中。
在哪里使用状态图
从上面的讨论中,我们可以定义状态图的实际应用。像本教程中讨论的其他四种图一样,状态图被用来对系统的动态方面进行建模。然而,它在为动态性质建模方面有一些不同的特点。
状态图定义了一个组件的状态,这些状态变化是动态的。它的具体目的是定义由事件触发的状态变化。事件是影响系统的内部或外部因素。
状态图被用来模拟状态和在系统上运行的事件。当实现一个系统时,明确一个对象在其生命周期内的不同状态是非常重要的,状态图就是用于这一目的。当这些状态和事件被确定后,它们被用来建模,这些模型在系统的实现过程中被使用。
如果我们研究一下状态图的实际实现,那么它主要用于分析受事件影响的对象状态。这种分析有助于理解系统执行过程中的行为。
其主要用途可以描述为
-
为一个系统的对象状态建模。
-
为反应性系统建模。反应式系统由反应式对象组成。
-
确定负责状态变化的事件。
-
正向和反向工程。