8.3.6 状态图

更新于 2026年10月10日 版权声明
8.3.6 状态图

描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生存周期。告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。

状态机图用来描述一个特定对象的所有可能状态,以及引起状态转换的事件。大多数面向对象技术都用状态机图表示单个对象在其生命期中的行为。一个状态机图包括一系列状态、事件以及状态之间的转移。

(1)状态。所有对象都具有状态,状态是对象执行了一系列活动后的结果。当某个事件发生后,对象的状态将发生变化。在状态机图中定义的状态可能有:初始状态、最终状态、中间状态和复合状态。一个状态机图只能有一个初始状态,而最终状态则可以有多个。

初始状态由一个内部实心的黑圆●来表示,最终状态由一个内部实心的同心圆●来表示,一个中间状态由一个圆角矩形来表示,如图8.49所示,其中的状态变量部分和活动表部分可以省略。

如果一个状态可以进一步地细化为多个子状态,就称这个状态为复合状态。子状态之间可以有“或”和“与”两种关系。

图示(https://www.daowen.com)

图8.49 中间状态的三个组成部分

(2)状态转换。状态机图中两个状态之间带箭头的连线称为状态转换。状态的变迁通常是由事件触发的,此时应在转移上标出触发转移的事件表达式。如果转移上未标明事件,则表示在源状态的内部活动执行完毕后自动触发转移。

一个状态使对象满足一定的条件,状态可以认为是一个类属性值的抽象。

图8.50描述了顾客在ATM机上进行操作时经历的几种状态以及各种状态之间转换的条件。

图示

图8.50 状态机图

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)