状态图是对系统动态方面建模的图之一,它通过建立类对象的生命周期模型来描述对象随时间变化的动态行为。

状态图用于描述模型元素的实例的行为,它适用于描述状态和动作的顺序,可以展现一个对象拥有的状态,还可以说明事件怎样随时间的推移来影响这些状态。

状态机

状态机是一种设备,一种记录下给定时刻状态的设备。它根据各种不同的输入对每个给定的变化而改变其状态或引发一个动作。在UML中,状态机由对象的各个状态和连接这些状态的转换组成,是展示状态与状态转换的图。在面向对象的软件系统中,对象必然会经历一个从开始创建到最终消亡的全过程,这个过程就是对象的生命周期。很显然,在对象的生命周期内,是不可能完全孤立的,它会接受消息来改变自身或发送消息影响其它对象。状态机就是用于说明对象在其生命周期中响应事件所经历的状态序列以及对这些事件的响应。在状态机的语境中,一个事件就是一次激发的产生,每个激发都可以触发一个状态的转换。

UML中,状态机常用于对模型元素的动态行为建模,也就是对系统行为中受事件驱动的方面的建模。它总是一个对象、协作或用例的局部视图,适合对细节建模。

状态图

状态图本质上是一个状态机,是一个状态机中的元素的投影,或是状态机的特例。

状态图的作用

状态图是对系统的动态方面的建模,适合描述跨越多个用例的对象在其生命周期中的各种状态及状态之间的转换。对象可以是类,接口,构件,节点。

状态图描述了状态间的转换顺序,通过状态的转换顺序可以得出事件的执行顺序;事件顺序可以避免在开发时出现事件错序的情况;状态图描述了状态转换时所必须触发的事件,监护条件和动作等影响转换的因素,避免程序中非法事件的介入;状态图通过判定来描述工作流程因条件不同发生的分支。

状态图的组成

状态图由初始状态,表示状态机的开始,一个终止状态,表示状态机的结束,还有元素状态,转换,判定。状态的转换由事件触发,状态间的转换由转换箭头连接。

1)状态

状态是对实体在其生命周期中的各种状况进行建模,一个实体总在有限的一段时间内保持一个。状态由圆角矩形表示,

状态描述了一个类对象生命周期中的一个时间段。状态一般是给定类的对象的一组属性值。状态可以分为简单状态和组成状态,此外,状态还包括状态名,内部活动,内部转换,入口动作,出口动作,历史状态等。

状态名用来与其它状态区分开来。名字一般放在状态图标的顶部。

内部活动,当状态进入时活动在进入动作完成后开始,如果活动结束就表示状态完成,然后一个从这个状态出发的转换被触发,否则状态等待触发转换以引起状态本身的改变。

内部转换,状态可能包含一系列内部转换,内部转换只有源状态而没有目标状态,所以内部转换的结果不改变状态本身。激发一个内部转换和激发一个外部转换的条件是相同的,但在顺序区域里每个事件只激发一个转换,而内部转换的优先级大于外部转换。与自转换不同,自转换是外部转换,可以强制从嵌套状态中退出,而内部转换不能。

入口和出口动作,依附于进入和出去的转换,通过封装状态,可以在不知道状态内部状态时使用它。

历史状态,组成状态可能包含历史状态,用来说明组成状态曾经有的子状态,它是一个伪状态。用带H的圆圈表示。

组成状态:内部嵌套有子状态的状态。多个子状态间是互斥,不能同时存在的,组成状态叫顺序组成状态;有两个或多个并发的子状态机,组成状态叫并发组成状态。

2)转换

转换用带箭头的线段表示,箭头所指方为目标状态,另一端为源状态端。转换可以标注与此状态相关的选项:事件,监护条件,动作。如果没有标注转换的事件,则表示此转换是自动进行的。

外部转换,最常见的一种转换,从源状态到目标状态用箭头线段表示。

内部转换:内部转换没有目标状态,只有源状态,不会激发入口和出口动作,因此内部转换激发的结果不改变本来的状态。

完成转换:没有明确标明触发事件的转换是由状态中活动的完成引起的。

复合转换:由简单转换通过分支和合并组合而成。空心菱形表示判定,也可以表示合并。

监护条件:监护条件是一个布尔表达式,是触发转换必须满足的条件。当一个触发器事件被触发时,监护条件被赋值,如果值为真,则转换可以激发,反之不能激发。如果转换没有监护条件,则监护条件被认为是真,一旦触发器事件发生,就会激活转换。监护条件的值只在事件被处理时计算一次。对于复杂的监护条件,可以拆解为一系列简单的监护条件,这些监护条件做为触发器事件或监护条件的分支,每个分支都是一个单独的转换。

触发器事件:能引起状态转换的事件,它可以是信号,调用,时间段等。对于没有明确触发器事件的转换称为结束转换。

动作:通常是一个简短的计算处理过程或一组可执行语句。动作是原子型的。它的执行是独立的,一旦开始,须执行完毕。动作的种类分为:赋值,调用,创建,销毁,返回,发送,终止,不可中断。

3)判定

根据不同的判断结果进行不同的转换,也就是工作流程在判定处按监护条件的取值发生分支。判定用空心菱形表示。通常情况下,判定 有一个转入两个转出,根据监护条件的真假可以触发不同的分支转换。

4)同步

同步用一条线段表示,用来说明并发工作流的分支和汇合。并发分支表示把一个单独的工作流分成两个或多个工作流,分支的工作流并行进行;并发汇合表示两个或多个并发的工作流再得到同步,表示先完成的工作流要等待,直到所有的工作流到达后,才能继续执行以下的工作流。与判定不同,分支是并行的。

5)事件

在状态机中,一个事件的出现可以触发状态的改变。它分为几种:信号事件,调用事件,改变事件,时间事件等。

 

例:

 

 

 

posted on 2011-08-10 23:24  梅桦  阅读(2529)  评论(0编辑  收藏  举报