文章图片标题

UML语言-状态图

分类:架构设计 作者:阳光倾城 评论:0 点击: 527 次 日期:2016-07-19

状态图(State Diagram)又称作状态转换图(State Transition Diagram)。状态图的基本想法是定义一个具有有限个内部状态的机器,因此状态图又称作有限状态机。对象被外界的事件激发,从而从一个状态转换到另一个状态。

考虑汽水装瓶机上的汽水瓶子的例子。对象是瓶子,装瓶机器是外部环境。首先,一个空瓶子在传送带上被送到装瓶机龙头下面,此时瓶子是空的。如图所示:

image

图中的黑点表示起始状态,方框表示瓶子的状态,可以看出瓶子没满,处在未满状态。从起始状态到未满状态、有箭头的连线表示状态的过渡。过渡连线的标签通常分为两部分由一个斜线分开,斜线的第一部分是引起过渡的事件,第二部分是事件发生所引起的操作。本图中,只有第一部分,因为瓶子没有动作。

瓶子被加灌汽水,此时加灌条件是:已加灌量<容量,如下图所示。在图中,未满状态有反身过渡连线,表示瓶子被加灌汽水是一个持续不断的过程,在加灌事件发生时,对象会过渡回当前状态。方括号中的事件是发生的保护条件,在这里是已加灌量<容量,它是保证过渡关系发生的条件。

image

 

从瓶子被加灌汽水到瓶子达到已满状态为止,如下图所示。由图中可以看出,瓶子从未满状态过渡到已满状态的事件仍然是加灌事件,只是条件不同,变成了已加灌量>=容量。

image

已被加满的瓶子将被盖上盖子。这里的事件是加盖子,瓶子过渡到已加盖状态,如下图所示。

image

 

显然,只有处在已满状态的瓶子可以加盖子,处于未满状态的瓶子不会被加盖子。只有未满状态的瓶子会收到加灌汽水的事件,而已满的瓶子不会收到加灌汽水的事件。状态图可以让读者清楚地看到什么事件会发生到对象身上,以及发生的事件对对象会有什么样的效果。

状态可以嵌套。一个状态中的可以有一些别的状态。大的状态叫做父状态或者超状态,小的状态叫做子状态。仍然可以加灌汽水瓶为例,可以划分出一个超状态,它包括两个子状态,如下图所示。

image

状态图还有另外两个常用的图标,即历史状态图标和终态图标,如下图所示。

image

历史状态记住系统离开时的状态,终态图标是初态图标相反的图标,代表对象湮灭的状态。




声明: 除非注明,本文属( 阳光倾城 )原创,转载请保留链接: http://www.tomrrow.com/archives-7638.html