文档详情

IUML状态机图介绍.doc

发布:2017-01-09约2.19千字共7页下载文档
文本预览下载声明
UML状态机图 状态机图的作用 状态机图是用来为对象的状态及造成状态改变的事件建模。 状态机图表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起,响应事件,执行某些动作,引起转移到新状态,又在新状态下响应事件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。 状态机图的基本元素 状态机图的基本元素包括:状态、转移、事件、伪状态和复合状态。状态图由状态(state,圆角矩形)与转换(transition,连接状态的箭头)组成。引起状态改变的触发器(trigger)或者事件(event)沿着转换箭头标示。如图所示灯光有2个状态:off与on。当lift switch或者lower switch事件被触发时,灯光状态会改变。 图表 1 状态图的基本元素 状态图通常有初始伪状态(initial pseudostate)和最终状态(final state),分别表示状态机的开始和结束。初始状态用实心圆表示,终止状态用牛眼表示 图表 2状态图中的初始伪状态与最终状态 状态(state) 图表 3 带分栏的状态 在状态图的下面部分包括事件和动作(event/action)。Entry和exit事件是标准的,任何一个进入状态的转换都将会调用entry动作,任何一个退出状态的转换都将会调用exit动作,而且也可以添加自己的事件。 图表 4状态的 例如,咖啡机正在煮咖啡的状态(Brewing),并且可以把行为写在状态内。 图表 5状态中do的行为细节 转换(transition) 图表 6状态图为触发器、监护条件和转换行为之一建模 触发器(trigger)是能够引起转换的事件,在图表5处理用户输入的系统里,keystroke触发器可引发系统状态从Gathering input改变到Processing input。 监护条件(guard)是允许或封锁转换的一个Boolean条件。如果条件为真,接受该转换;否则,封锁该转换,停留在原状态。示例中,在按键盘键后,触发器运行,如果该输入少于要求的长度,guard可以用来封锁该转换。 转换行为(transition behavior)是转换发生时所执行的连续活动。例如,状态从Gathering input改变到Processing input时执行submit input的动作。图5也显示状态可以转换成自身,即self-transition。 伪状态(Pseudo State)伪状态指在一个状态机中具有状态的形式,同时具有特殊行为的顶点。它是一个瞬时状态,用于构造转换的细节。当伪状态处于活动时,状态机还没有完成从运行到完成的步骤,也不会处理事件。伪状态用来连接转换段,到一个伪状态的转换意味着会自动转换到另一个状态而不需要事件来触发。 伪状态包括:初始状态、入口点、出口点、选择和合并、结合和分叉、连接、终止和历史状态。 入口点是状态内的一个外部可见的伪状态,外部转换可以将它作为目标。包含入口点的状态将成为转换的有效目标状态,在UML中,用状态符号边框的空心圆表示。出口点也是状态内的一个外部可见的伪状态,外部转换可以将它作为源,它代表状态内的一个终态,在UML中,用状态符号边框的十字交叉圆表示。 图表 7入口点与出口点 选择,根据节点后的警戒条件动态计算选择转换路径,在UML中,用菱形表示,其输出必须包含警戒条件且不能有触发器。合并表示两个或者多个可选的控制路径汇合在一起,在UML中用菱形表示。 图表 8选择伪状态 分叉和结合表示。在UML中,用一段粗线表示。 图表 9分叉与结合伪状态 连接是状态机中表示整体转换为部分的一种伪状态。在UML中,连接用小的实心圆表示 图表 10连接伪状态 历史伪状态,用于表示退出所属的复合状态后,它会记录复合状态之前处于活动的子状态。历史伪状态包括浅度历史伪状态和深度历史伪状态。浅度历史伪状态用带字母H的圆表示,深度历史伪状态用带字母H和*的圆表示 UML中的复合状态(composite state)允许并发(concurrent)的状态,即处在某个状态的对象同时在做一个或多个事情。每个组成状态包含一个或多个状态图的状态,每个图属于一个区域,各区域以虚线分隔,区域内的状态被称为组成状态的子状态。 图表 11复合状态包含一个或多个状态图 状态 图表7表示CD播放器的状态图,包括了不同的状态及转换。通过分析这个例子,观察触发器与监护条件如何用来为不同类型的状态改变建模。 如果指定了触发器,但是没有监护条件。当触发器被触动时,接受转换。当press stop发生时,CD播放器从Playing状态变为Stopped状态。 如果指定了触发器和监护条件,当触发器被触动,并且监护条件为真时,接受转换。在press play发生,并
显示全部
相似文档