UML - 状态图

  • 简述

    关系图本身的名称阐明了关系图的用途和其他详细信息。它描述了系统中组件的不同状态。状态特定于系统的组件/对象。
    状态图描述状态机。状态机可以定义为定义对象不同状态的机器,这些状态由外部或内部事件控制。
    活动图在下一章中介绍,是一种特殊的状态图。由于状态图定义了状态,因此它用于对对象的生存期进行建模。
  • 状态图的目的

    状态图是用于对系统的动态性质进行建模的五个 UML 图之一。它们定义对象在其生存期内的不同状态,并且这些状态由事件更改。状态图对于对反应式系统进行建模非常有用。反应式系统可以定义为响应外部或内部事件的系统。
    状态图描述了从一个状态到另一个状态的控制流。状态被定义为对象存在的条件,当触发某个事件时,它也会发生变化。状态图最重要的目的是对对象的生存期进行建模,从创建到终止。
    状态图还用于系统的正向和逆向工程。但是,主要目的是对反应式系统进行建模。
    以下是使用状态图的主要目的 -
    • 对系统的动态方面进行建模。
    • 对反应式系统的生存期进行建模。
    • 描述对象在其生命周期内的不同状态。
    • 定义状态机以对对象的状态进行建模。
  • 如何绘制状态图?

    状态图用于描述不同对象在其生命周期中的状态。重点放在一些内部或外部事件的状态变化上。对象的这些状态对于准确分析和实现它们非常重要。
    状态图对于描述状态非常重要。状态可以标识为发生特定事件时对象的条件。
    在绘制状态图之前,我们应该澄清以下几点 -
    • 确定要分析的重要对象。
    • 确定状态。
    • 标识事件。
    下面是一个状态图示例,其中分析了 Order 对象的状态
    第一个状态是进程从该状态开始的空闲状态。对于发送请求、确认请求和发货订单等事件,将到达下一个状态。这些事件负责订单对象的状态更改。
    在对象(此处为订单对象)的生命周期中,它会经历以下状态,并且可能会出现一些异常退出。由于系统中的某些问题,可能会发生此异常退出。当整个生命周期完成时,它被视为一个完整的事务,如下图所示。对象的初始和最终状态也如下图所示。
    UML 状态图
  • 在哪里使用状态图?

    从上面的讨论中,我们可以定义一个状态图的实际应用。状态图用于对系统的动态方面进行建模,就像本教程中讨论的其他四个图一样。但是,它具有一些用于模拟动态性质的显着特征。
    状态图定义了组件的状态,这些状态变化本质上是动态的。其具体目的是定义由事件触发的状态更改。事件是影响系统的内部或外部因素。
    状态图用于对系统上运行的状态和事件进行建模。在实现系统时,澄清对象在其生命周期中的不同状态非常重要,并且状态图用于此目的。当识别出这些状态和事件时,它们将用于对其进行建模,并且在系统实现期间使用这些模型。
    如果我们看一下状态图的实际实现,那么它主要用于分析受事件影响的对象状态。此分析有助于了解系统执行过程中的行为。
    主要用法可以描述为 −
    • 对系统的对象状态进行建模。
    • 对反应式系统进行建模。反应式系统由反应式对象组成。
    • 标识负责状态更改的事件。
    • 正向和逆向工程。