本节和大家一起学习一下UML状态机视图,状态机用于描述类的行为,但它们也描述用例、协作和方法的动态行为。这里主要介绍一下UML状态机和组成状态两大部分内容,希望本节的介绍对你有所帮助。
UML状态机视图概述
概述
UML状态机视图通过对类对象的生存周期建立模型来描述对象随时间变化的动态行为。每一个对象都被看作是通过对事件进行探测并做出回应来与外界其他部分通信的独立的实体。事件表示对象可以探测到的事物的一种运动变化—如接受到从一个对象到另一个对象的调用或信号、某些值的改变或一个时间段的终结。任何影响对象的事物都可以是事件,真实世界所发生的事物的模型通过从外部世界到系统的信号来建造的。
状态是给定类的对象的一组属性值,这组属性值对所发生的事件具有相同性质的反应。换而言之,处于相同状态的对象对同一事件具有同样方式的反应,所以当给定状态下的多个对象当接受到相同事件时会执行相同的动作,然而处于不同状态下的对象会通过不同的动作对同一事件做出不同的反应。例如,当自动答复机处于处理事务状态或空闲状态时会对取消键做出不同的反应。
状态机用于描述类的行为,但它们也描述用例、协作和方法的动态行为。对这些对象方面而言,一个状态代表了执行中的一步。我们通常用类和对象来描述状态机,但是它也可以被其他元素所直接应用。
状态机
状态机是展示状态与状态转换的图。通常一个状态机依附于一个类,并且描述一个类的实例对接受到的事件所发生的反应。状态机也可以依附于操作、用例和协作并描述它们的执行过程。
状态机是一个类的对象所有可能的生命历程的模型。对象被孤立地从系统中抽出和考察,任何来自外部的影响被概述为事件。当对象探测到一个事件后,它依照当前的状态做出反应,反应包括执行一个动作和转换到新状态。状态机可以构造成继承转换,也能够对并发行为建立模型。
状态机是一个对象的局部视图,一个将对象与其外部世界分离开来并独立考查其行为的图。利用状态机可以精确地描述行为,但不适合综合理解系统执行操作。如果要更好地理解整个系统范围内的行为产生的影响,那么交互视图将更有用些。然而,状态机有助于理解如用户接口和设备控制器这样的控制机。
组成状态
一个简单状态没有子结构,只带有一组转换和可能的入口和出口动作。UML状态机视图的组成状态是一个被分解成顺序的或并发的子状态的状态。表6–4列出了各种状态。
表6–4状态的种类
将状态分解成互斥的子状态是对状态的一种专门化处理。一个外部状态被细分成多个内部子状态,每一个子状态都继承了外部状态的转换。在某一时间只有一个子状态处于激活状态。外部状态表达了每一个内部状态都具有的条件。
进入或离开一个组成状态的转换会引起入口动作或出口动作的执行。如果有多个组成状态,跨越多个层次的转换会引起多重入口动作(最外层***执行)和出口动作(最内层***执行)的执行。如果转换带有动作,那么这个动作在入口动作执行后,出口动作执行前执行。
UML状态机视图中组成状态也可能在其内部具有一个初始状态。组成状态边界上的转换隐含为初始状态上的转换。一个新对象起始于它的最外层的初始状态。如果一个对象到达了它最外层状态的终止状态,那么该对象将被销毁。初始状态、终止状态、入口动作和出口动作封装了状态的定义,使状态的定义与进出状态的转换无关。
图6–5展示了一个状态的顺序分解,其中包括一个初始状态。这是售票系统的状态机模型。
图6-5状态机
将一个状态分解成并发的多个子状态代表相互独立的并行处理过程。当进入一个并发超状态时,控制线程的数目增加;当离开一个并发超状态时,控制线程的数目减少对于每一个状态而言,并发通常依靠不同的对象实现,但是,并发子状态还可以代表一个单独状态内部的逻辑并发关系。图6–6展示了选修一门大学课程的并发分解。
图6–6带有并发组成状态的状态机
图6–7子机器状态
UML状态机视图中通常,可以在一个状态机中使用其他状态机的一部分,这种可重用性会带来一些方便。状态机可以命名,并可以用名字引用其他一个或多个状态机。目标状态机是一个子机器,引用这个子机器的状态叫做子机器引用状态。它的含义是在需要引用的地方用一个状态机来替换原有内容。一个状态机可以包含一个活动,即可以包含一个处理过程或一个需要消耗时间才能完成的持续过程或是可以被中断的事件,而子机器不能图6-7演示了子机器的引用。
进入一个子机器引用状态的转换会激活目标子机器的初始状态。要进入其他状态的子机器,需要在子机器引用状态中安置一个或多个桩状态。桩状态用于在子机器中标识状态。
【编辑推荐】