UML状态图(statechart)


一、状态图简介(Brief introduction)

状态图(Statechart Diagram)主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Action)。一般可以用状态机对一个对象的生命周期建模,状态图用于显示状态机(State Machine Diagram),重点在与描述状态图的控制流。UML里面的状态图基于Prof. David Harel 1987年发表的论文:"Statecharts: A Visual Formalism for Complex Systems" 增加了一些面向对象针对面向对象的概念。


如下图“门”的状态变化例子,状态机描述了门对象的生存期间的状态序列,引起转移的事件,以及因状态转移而伴随的动作


一扇门自从建造好了,总是不停的处于打开或者锁住状态。这里所描述的状态是离散了,不连续的。

二、状态图元素(State Diagram Elements)


1、状态(State)

指在对象的生命周期中的某个条件或者状况,在此期间对象将满足某些条件执行某些活动等待某些事件。所有对象都有状态,状态是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。

状态用圆角矩形表示(如下图)(传统的有限状态机:FSM的状态图  状态用圆形表示


一个状态有如下几个部分:(看到这里如果不懂可以先忽略,看下面的部分。)

名称
将一个状态与其他状态区分开来的文本字符串;状态也可能是匿名的,这表示它没有名称。
进入/退出操作
在进入和退出状态时所执行的操作。
内部转移
在不使状态发生变更的情况下进行的转移。
子状态
状态的嵌套结构,包括不相连的(依次处于活动状态的)或并行的(同时处于活动状态的)子状态。
延迟的事件
未在该状态中处理但被延迟处理(即列队等待由另一个状态中的对象来处理)的一系列事件。
图形表述如下



2、转移(Transition)

转移(Transitions)是两个状态之间的一种关系,表示对象将在源状态(Source State)中执行一定的动作,并在某个特定事件发生而且某个特定的警界条件满足时进入目标状态(Target State

      事件(Event):是转移的诱因,可以是一个信号,事件、条件变化(a change in some condition)和时间表达式。

      警界条件(Guard Condition):当警界条件满足时,事件才会引发转移(Transition)。

      结果(Effect)/动作(Action):对象状态转移后的结果(转移后做什么动作)。

     上面三个经常被称为ECA规则。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章