第9章状态机图

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第9章状态机图状态机图是系统分析的一种常用工具,它描述了一个对象在其生命期内所经历的各种状态,以及状态之间的转移,发生转移的原因,条件和转移中所执行的活动。所有的类,只要它标记的状态和复杂的行为,都应该有一个状态机图。状态机图用于指定对象的行为以及根据不同的当前状态行为之间差别。同时,它还能说明事件是如何改变一个类对象的状态。通过状态机图可以了解一个对象所能到达的所有状态以及对象收到的事件(收到的消息、超时、错误和条件满足等)对对象状态的影响等。2本章学习要点:•了解状态机•理解对象和状态•掌握状态机图中基本标记符•掌握动作•掌握事件•运用顺序子状态和并发子状态•理解子状态机引用状态•掌握同步状态和历史状态39.1定义状态机图•状态机图中包含了诸多元素,在学习状态机图之前先来学习一下有关状态机图的相关知识。包括了状态机的概念原理和状态机图中重要要领的说明。•状态机图可以用于对象和一些类来说明当调用对象的行为时对象的状态如何改变,但是状态机图还可以用于许多其他情况。例如,状态机图可以用来说明基于用户输入的屏幕状态的改变,也可以用来说明复杂的用例状态进展情况。49.1.1状态机•UML中用状态机对软件系统的动态特征建模,通常一个状态机依附于一个类,并且描述一个类的实例。状态机包含了一个类的对象在其生命周期间所有状态的序列以及对象对接收到的事件所产生的反应。•利用状态机可以精确地描述对象的行为:从对象的初始状态起,开始响应事件并执行某些动作,这些事件引起状态的转换;对象在新的状态下又开始响应状态和执行动作,如此连续直到终止状态。9.1.2对象、状态和事件•在状态机图中,对象和状态是一对不同分割的概念。状态机图是描述单个对象,以及对象的行为如何改变其状态。对象是某个状态下的对象,而状态则是描述当前对象。所有的对象均有状态,状态的改变由对象的属性值指向其他对象的链来决定。下面一些例子形像地说明了对象和状态。•(1)支票(对象)已付(状态)。•(2)汽车(对象)已启动(状态)。•(3)小王(对象)睡着了(状态)。•(4)小红(对象)未婚(状态)。59.1.3状态机图•状态机图实质上是一种由状态、转移、事件和动作组成的状态机,用来建模对象是如何改变其状态的,并且定义了状态机的表示符号。在对象生命周期中状态机被用来捕捉由外部事件引起的变化,事件对对象发出命令,该命令会导致对象发生转移,这又反过来影响对象行为。状态机图表示了对象在其生命周期各个时期的状态,以及引起变化的事件。•状态机图描述从状态到状态的控制流,学用于系统的动态特性建模。69.2认识状态机图中的标记符•状态机图中某些标记符与活动图的标记符非常相似,有时候会让人混淆。其实活动图是用来建模不同区域的工作如何彼此交互的,而状态机图用来表示单个对象,以及对象的行为如何改变其状态。状态机图由状态、转移和事件等组成,本节中将详细介绍状态和转移,另外状态机图中还包括了决策点和同步条来显示更高层次的细节信息。79.2.1状态态指对象的生命周期中满足某些条件、执行某些活动或者等待某些事件时的一个条件或情况。状态和事件之间的关系是状态机图的基础。状态与之前在活动图中讲到的相同,同样使用了圆矩形。中间状态的名称,名称也可以作为个标记置于状态机图标上面。除了简单的状态,UML还定义了两种特别的状态,即初始状态和终止状态。初始状态是使用一个填充的圆圈表示,终止状态类似在于在初始状态外加一个圆圈,图演示了状态标记符。8状态状态初始状态终止状态9.2.2转移•转移用来显示从一个状态到另一外状态的控制流,它描述了对象在两种状态间的转变。当对象在第一个状态中执行一定的动作,并在某个特定事件发生后并且满足特定的条件,然后进入第二个状态时。当状态间发生这种转移时,称转移被激活。转移被激活之前对象处于状态称为源状态;转移激活之后,称对象所在状态为目标状态。99.2.3决策点•在第四章活动图中讲到过决策点,在状态机图中也需要用到决策点。它在建模状态机图时提供了方便,因为它通过在中心位置分组转移到各自的方向,从而提高了状态机图的可视性。决策点标记符是一个空心菱形,图演示了决策点的使用方法。10State1State2State3State49.2.4同步•使用同步条可以显示并发转移,并发转移中可以有多个源状态和目标状态。并发转移表示一个同步将一个控制划分为并发的线程。状态机图中使用到同步条是为了说明某些状态在哪里需要跟上或者等待其他状态。状态机图中同步条是一条黑色的粗线,图显示了使用了同步条的状态机图。11State1State2State39.3指定状态机图中动作和事件•事件是一个在时间和空间上都占据一定位置有意义事情的规约,它能指示状态之间转移的条件。对应于消息的事件被发送到对象,要求对象做某件事情,这个事情被称为动作。动作改变了对象属性的值,导致对象的状态发生变化。本节将会对状态机图中动作和事件进行详细讲解。129.3.1事件•一个事件的发生能触发状态的转移,事件和转移总是相伴出现。事件既可以是内部事件又可以是外部事件,可以是同步的,也可以是异步的。内部事件是指在系统内部对象之间传送的事件。例如,异常就是一个内部事件。外部事件是指在系统和它的参与者之间传送的事件。例如,在指定文本框中输入内容就是一个外部事件。图显示了带有事件的状态机图13CleanOpenTextWrittingInputTextDeletedSavedExitTextSaveTextCreatNewCreatNew9.3.2动作•动作可以由对象(拥有所有状态的对象)的操作和属性组成,也可以由事件说明中的参数组成,在一个状态中允许有多个动作。149.4组成状态•在简单状态之外,还有一种可以包含嵌套子状态的状态,又称为组成状态。在复杂的应用中,当状态机图处于某种特定的状态时,状态机图描述的该对象行为仍可以用另一个状态机图描述,用于描述对象行为的状态机图又称为子状态。•子状态可以是状态机图中单独的普通状态,也可以是一个完整的状态机图来描述一个状态。组成状态中子状态可以是顺序子状态,也包含并发的子状态。如果包含顺序子状态的状态是活动的,则只有该子状态是活动的;如果包含并发子状态的状态是活动的,则与它正交的所有子状态都是活动的。159.4.1顺序子状态•如果一个组成状态的子状态对应的对象在其生命周期内的任何时刻都只能处于一个子状态,也就是说状态机图中多个子状态是互斥的,不能同时存在,这种子状态被称为顺序子状态或叫互斥子状态。在顺序子状态中最多只能有一个初态和一个终态。•当状态机图通过转移从某种状态转入组合状态时,该转移的目的可能是组成状态本身,也可能是这个组成状态的子状态。169.4.2并发子状态有时组成状态有两个或多个并发的子状态,此时称组成状态的子状态为并发子状态。并发子状态能说明很多事发生在同一时刻,为了分离不同的活动,组成状态被分解成区域,每个区域都包含一个不同的状态机图,各个状态机图在同一时刻分别运行。如果并发子状态中有一个子状态比其他并发子状态到达它的终态,那么先到的子状态的控制流将在它的终态等待,直到所有的子状态都达到终态。179.4.3子状态机引用状态•子状态机引用状态是表示激活其他地方定义的一个子状态机的状态。子状态机引用状态和宏调用非常相似,因为它实际上是一种用来表示将一个复杂的规约嵌入到另一个规约的简单记号。•声明子状态机引用状态时,使用关键字include来标记,具体标记信息如下所示:•include子状态机名189.4.4同步状态•同步状态是连接两个并发区域的特殊状态。在某些情况下,组合状态通常由同个并发区域组成,每个区域有自己的顺序子状态区域。当进入一个组合状态时,每个并发区域里在一个控制线程。其中,区域之间是独立的,如果要求对并发区域之间的控制进行同步,此时可使用同步状态。•在同步状态中使用了同步条,使用转移把一个区域里中分叉的输出连接到同步状态的输入上,同样再使用转移把同步状态的输出连接到另外一个区域中的汇合输入上。199.4.5历史状态•在UML建模中,转移进入组成状态并经历了许多状态,建模人员也许会在后面的步骤中返回到某个状态。如果返回到一个简单状态,那么就会很容易实现;如果返回一个组成状态,就没那么简单了,并且再次使用同样的组成状态机,状态机图会显得臃肿。使用历史状态就能解决这种问题,它允许组成状态记住从该组成状态出发的转移触发之前最后一个活动子状态。•UML状态机图中历史状态分为浅历史状态(简略历史状态)和深历史状态(详细历史状态)两种。209.5建造状态机图模型•本书以一个图书管理系统贯穿全书,前面已经建模图书管理系统的用例图、类图和活动图,本节将以前面章节中所建模图形为基础,建模图书管理系统的状态机图。建模状态机图可以按照以下五步进行。•(1)标识出需要进一步建模的实体。•(2)标识出每个实体的开始和结束状态。•(3)确定与每一个实体相关的事件。•(4)从开始状态建模完整状态机图。•(5)如果必要则指定组成状态。219.5.1分析状态机图•第一步就是要确定需要进一步建模的实体,标识需要建模的对象。状态机图应用于复杂的实体,而不必用于具有复杂行为的实体。对于有复杂行为或操作的实体,使用活动图会更加适合。具有清晰、有序状态的实体最适合使用状态机图进一步建模。这里建模一个Book对象作为建模图书馆管理系统状态机图的演练目标。229.5.2完成状态机图•利用前面分析的结果,建模一个简单的状态机图来描述Book对象的不同状态,以及触发状态改变的事件,如图所示。23NewBookAvailableBorrowedDeletedBorrowReturnBook

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功