状态图(State Diagram)展现了一个状态机,它由状态、转换、事件和活动组成。状态图关注系统的动态视图,对于接口、类和协作的行为建模尤为重要,强调对象行为的事件顺序。
状态图通常包括简单状态和组合状态、转换(事件和动作)。状态是指对象的生命周期中某个条件或者状态,在此期间对象将满足某些条件、执行某些活动或等待某些事件,是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。嵌套在另外一个状态中的状态称为子状态,含有子状态的状态称为组合状态。
转换是两个状态之间的一种关系,表示对象将在源状态中执行一定的动作,并在某个特定事件发生而且某个特定的警界(监护)条件满足时进入目标状态。
动作是一个可执行的原子操作,是不可中断的,其执行时间是可忽略不计的。直接通过进入节点进入状态,通过退出节点可以结束状态。使用历史状态记住从组合状态中退出时所处的子状态,作用是当再次进入组合状态时,可以直接进入这个子状态,而不是再次从组合状态的初态开始。状态图可以分为区域,而区域又包括退出或者当前执行的子状态,说明组合状态可以在某一时刻同时到达多个子状态,此时通常在其前后使用fork 和join 标识。
可以用状态图对系统的动态方面建模。这些动态方面可以包括出现在系统体系结构的任何视图中的任何一种对象的按事件排序的行为,这些对象包括类(各主动类)、接口、构件和结点。当对系统、类或用例的动态方面建模时,通常是对反应型对象建模。一个反应型或事件驱动的对象是这样一个对象,其行为通常是由对来自语境外部的事件做出反应来刻画的。反应型对象在接收到一个事件之前通常处于空闲状态。当它接收到一个事件时,它的反应常常依赖于以前的事件。在这个对象对事件做出反应后,它就又变成闲状态,等待下一个事件。对于这种对象,将着眼于对象的稳定状态、能够触发从状态到状态的转换的事件,以及当每个状态改变时所发生的动作。