一、状态图简介(Brief introduction)
状态图(Statechart Diagram)主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Action)。一般可以用状态机对一个对象的生命周期建模,状态图用于显示状态机(State Machine Diagram),重点在与描述状态图的控制流。UML里面的状态图基于Prof. David Harel 1987年发表的论文:"Statecharts: A Visual Formalism for Complex Systems" 增加了一些面向对象针对面向对象的概念。
一扇门自从建造好了,总是不停的处于打开或者锁住状态。这里所描述的状态是离散了,不连续的。
二、状态图元素(State Diagram Elements)
指在对象的生命周期中的某个条件或者状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。所有对象都有状态,状态是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。
状态用圆角矩形表示(如下图)(传统的有限状态机:FSM的状态图 状态用圆形表示)
一个状态有如下几个部分:(看到这里如果不懂可以先忽略,看下面的部分。)
名称
|
将一个状态与其他状态区分开来的文本字符串;状态也可能是匿名的,这表示它没有名称。
|
进入/退出操作
|
在进入和退出状态时所执行的操作。
|
内部转移
|
在不使状态发生变更的情况下进行的转移。
|
子状态
|
状态的嵌套结构,包括不相连的(依次处于活动状态的)或并行的(同时处于活动状态的)子状态。
|
延迟的事件
|
未在该状态中处理但被延迟处理(即列队等待由另一个状态中的对象来处理)的一系列事件。
|
事件(Event):是转移的诱因,可以是一个信号,事件、条件变化(a change in some condition)和时间表达式。
警界条件(Guard Condition):当警界条件满足时,事件才会引发转移(Transition)。
结果(Effect)/动作(Action):对象状态转移后的结果(转移后做什么动作)。
上面三个经常被称为ECA规则。