UML之状态图

UML之状态图


          状态图——Statechart Diagram

          描写叙述一个实体基于事件反应的动态行为,显示了该实体怎样依据当前所处的状态对不同的事件做出反应的。

          通常我们创建一个UML状态图是为了下面的研究目的:研究类、角色、子系统、或组件的复杂行为。




          状态图用于显示状态机(它指定对象所在的状态序列)、使对象达到这些状态的事件和条件、以及达到这些状态时所发生的操作。

          状态的概念

          状态是对象运行某项活动或等待某个事件时的条件。对象可能会在有限的时间长度内保持某一状态。

          状态的特征

          名称:将一个状态与其它状态区分开来的文本字符串。状态也可能是匿名的,这表示它没有名称。

          进入、退出操作:在进入和退出状态时所运行的操作。

          内部转移:在不使状态发生变更的情况下进行的转移。

          子状态:状态的嵌套结构,包含不相连的(依次处于活动状态的)或并行的(同一时候处于活动状态的)子状态。

          延迟的事件:未在该状态中处理但被延迟处理(即列队等待由还有一个状态中的对象来处理)的一系列事件。




          转移的概念

          转移是两个状态之间的关系,它表示当发生指定事件而且满足指定条件时,第一个状态中的对象将运行某些操作并进入第二个状态。

当发生这样的状态变更时。即“触发”了转移。

          在触发转移之前。可觉得对象处于“源”状态;在触发转移之后,可觉得对象处于“目标”状态。

          转移的特征

          源状态:转移所影响的状态;假设对象处于源状态,当对象收到转移的触发事件而且满足警戒条件(假设有)时。就可能会触发输出转移。




          事件触发器:使转移满足触发条件的事件。

          当处于源状态的对象收到该事件时(如果已满足其警戒条件),就可能会触发转移。

          警戒状态:一种布尔表达式。

          在接收到事件触发器而触发转移时,将对该表达式求值;假设该表达式求值结果为True,则说明转移符合触发条件。假设该表达式求值结果为False。则不触发转移。

假设没有其它转移能够由同一事件来触发。该事件就将被丢弃。

          操作:可运行的、不可切割的计算过程,该计算可能直接作用于拥有状态机的对象,也可能间接作用于该对象可见的其它对象。

          目标状态:在完毕转移后被激活的状态。




          注意:一个转移可能有多个源状态,在这样的情况下。它将呈现为一个从多个并行状态出发的结合点;一个转移也可能有多个目标状态,在这样的情况下,它将呈现为一个到多个并发状态的叉形图。

 

原文地址:https://www.cnblogs.com/yangykaifa/p/7189836.html