状态图实际上是一种由状态、变迁、事件和活动组成的状态机。状态图描述从状态到状态的控制流,常用于系统的动态特性建模。在大多数情况下,它用来对反应型对象的行为模型。
在UML中,状态图可用来对一个对象按事件排序的行为模型。如右图所示,一个状态图是强调状态到状态的控制流的状态机的简单表示。一般而言,状态图是对类所描述设施的补充说明,它描述了类的所有对象可能具有的状态以及引起状态变化的事件。
状态图以状态的概念描述对象、子系统、系统在生命周期中的各种行为,简单的说就是一个状态图只描述某一个对象(可以是类、程序模块、系统)的行为。通过状态图可以知道一个对象、子系统、系统的各种状态及其收到的消息对其状态的影响。世界万物都有可以描述的状态,因此都可以通过状态图来描述他们的行为,状态图具有很强的表达能力。
状态图有以下几种常用的模型元素:状态(State)、转换(Transition)、起始状态(Start State)、终止状态(End State)。状态描述一个对象的生命周期中某个时间段的特征,状态是用圆角的矩形表示;转换描述状态间的转移,用一个带箭头的实线段表示,还可以给转换添加标注,通过标注来描述引起状态转移的事件、条件和要执行的操作,标注的格式为:事件名[条件]/操作,标注的每个部分都可以省略;起始状态描述对象生命周期的开始阶段,用一个黑色的圆表示,有时为了表述清楚,在不产生混淆概念的情况下,可以省去起始状态;终止状态描述对象生命周期的终止阶段,用一个带圆形外框的黑色圆表示,一个状态图可以有多个终止状态,有时为了表述清楚,在不产生混淆概念的情况下,可以省去终止状态。