我爱Aspx >> VC.Net >> 第6章 状态机视图一个自身转移会激发状态上的入口动作和出口动作的执行(从概念上来讲,自身转换从一个状态出发后又会到自身状态),因此,自身转换不等价于内部转换。图6-4 说明了入口动作、出口动作和内部转换。
图6-4 内部转、入口动作和出口动作
6.6 组成状态
一个简单状态没有子结构,只带有一组转换和可能的入口和出口动作。组成状态是一个被分解成顺序的或并发的子状态的状态。表 6-4 列出了各种状态。
表6-4 状态的种类
将状态分解成互斥的子状态是对状态的一种专门化处理。一个外部状态被细分成多个内部子状态,每一个子状态都继承了外部状态的转换。在某一时间只有一个子状态处于激活状态。外部状态表达了每一个内部状态都具有的条件。
进入或离开一个组成状态的转换会引起入口动作或出口动作的执行。如果有多个组成状态,跨越多个层次的转换会引起多重入口动作(最外层最先执行)和出口动作(最内层最先执行)的执行。如果转换带有动作,那么这个动作在入口动作执行后,出口动作执行前执行。
组成状态也可能在其内部具有一个初始状态。组成状态边界上的转换隐含为初始状态上的转换。一个新对象起始于它的最外层的初始状态。如果一个对象到达了它最外层状态的终止状态,那么该对象将被销毁。初始状态、终止状态、入口动作和出口动作封装了状态的定义,使状态的定义与进出状态的转换无关。
图6-5展示了一个状态的顺序分解,其中包括一个初始状态。这是售票系统的状态机模型。
图6-5 状态机
将一个状态分解成并发的多个子状态代表相互独立的并行处理过程。当进入一个并发超状态时,控制线程的数目增加;当离开一个并发超状态时,控制线程的数目减少对于每一个状态而言,并发通常依靠不同的对象实现,但是,并发子状态还可以代表一个单独状态内部的逻辑并发关系。图6-6展示了选修一门大学课程的并发分解。
图6-6 带有并发组成状态的状态机
图6-7 子机器状态
通常,可以在一个状态机中使用其他状态机的一部分,这种可重用性会带来一些方便。状态机可以命名,并可以用名字引用其他一个或多个状态机。目标状态机是一个子机器,引用这个子机器的状态叫做子机器引用状态。它的含义是在需要引用的地方用一个状态机来替换原有内容。一个状态机可以包含一个活动,即可以包含一个处理过程或一个需要消耗时间才能完成的持续过程或是可以被中断的事件,而子机器不能图6-7演示了子机器的引用。
进入一个子机器引用状态的转换会激活目标子机器的初始状态。要进入其他状态的子机器,需要在子机器引用状态中安置一个或多个桩状态。桩状态用于在子机器中标识状态。
【我对这篇文章有话说?】
迎接CDMA时代吧[05-21]
第9章 物 理 视 图[05-21]
第8章 交 互 视 图[05-21]
第7章 活 动 视 图[05-21]
第4章 静 态 视 图[05-21]
第5章 用 例 视 图[05-21]
第3章 UML初览[05-21]
第2章 模型的性质与目标[05-21]
第1章 UML综述[05-21]
用Junit Framework编写单元测试[05-21]