Presentation is loading. Please wait.

Presentation is loading. Please wait.

8.1 状态机 8.2 状态图 8.3 状态 8.4 事件 8.5 转换 8.6 状态图建模技术 8.5 实例——图书馆管理系统的状态图

Similar presentations


Presentation on theme: "8.1 状态机 8.2 状态图 8.3 状态 8.4 事件 8.5 转换 8.6 状态图建模技术 8.5 实例——图书馆管理系统的状态图"— Presentation transcript:

1 8.1 状态机 8.2 状态图 8.3 状态 8.4 事件 8.5 转换 8.6 状态图建模技术 8.5 实例——图书馆管理系统的状态图
第8章 状态图 8.1 状态机 8.2 状态图 8.3 状态 8.4 事件 8.5 转换 8.6 状态图建模技术 8.5 实例——图书馆管理系统的状态图 状态图(Statechart Diagram)是系统分析的一种常用工具,它通过建立类对象的生存周期模型来描述对象随时间变化的动态行为。系统分析员在对系统建模时,最先考虑的不是基于活动之间的控制流,而是基于状态之间的控制流,因为系统中对象的状态变化最易发现和理解。

2 门的状态 状态机:用于描述一个对象在其生存期间的动态行为,表现对象响应事件所经历的状态序列以及伴随的动作。
状态图:用来描述状态机的,一个状态机可以用多张状态图来描述。 门的状态

3 8.1 状态机 状态机是展示状态与状态转换的图。 状态机由状态、转换、事件、活动和动作5部分组成。
8.1 状态机 状态机是展示状态与状态转换的图。 状态机由状态、转换、事件、活动和动作5部分组成。 (1)状态表示一个模型在其生存期内的状况,一个状 态的生存期是有限的一个时间段。 (2)转换表示两个不同状态之间的联系,事件可以触 发状态之间的转换。 (3)事件是在某个时间产生的,可以触发状态转换。 (4)活动是在状态机中进行的一个非原子的执行,由 一系列动作组成。 (5)动作是一个可执行的原子计算,它导致状态的变 更或者返回一个值。 一个状态机可以用多个状态图来描述

4 8.2 状态图 状态图主要用于表现从一个状态到另一个状态的控制流。它不仅可以展现一个对象拥有的状态,还可以说明事件如何随着时间的推移来影响这些状态。 状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。若干个状态由一条或者多条转换箭头连接,状态的转换由事件触发。组成UML的图形元素有状态、转换、初始状态、终结状态和判定等,一个简单的状态图如下图所示。

5 一个简单的状态图示意图

6 8.2.1 状态 状态是状态机的重要组成部分,它描述了状态机所建模对象的动态行为产生的结果。
状态 状态是状态机的重要组成部分,它描述了状态机所建模对象的动态行为产生的结果。 状态由一个带圆角的矩形表示,状态图的图标可以分为3部分:名称、内部转换和嵌套状态图。 名称 内部转换 嵌套状态图 状态图的图标表示

7 (1)名称。名称表示状态的名字,通常用字符串表示。
(2)内部转换。在内部转换中可以包含进入或者退出此状态应该执行的活动或动作,它们将响应对象所接收到的事件,但是不改变对象的状态。 (3)嵌套状态图。状态图中的状态有两种:一种是简单状态,简单状态不包含其他状态;一种是组成状态,组成状态是包含子状态的状态。 (1)名称。名称表示状态的名字,通常用字符串表示。一个状态的名称在状态图所在的上下文中应该是唯一的,不过,状态允许匿名。 (2)内部转换。在内部转换中可以包含进入或者走出此状态应该执行的活动或动作,它们将响应对象所接收到的事件,但是不改变对象的状态。 (3)嵌套状态图。状态图中的状态有两种:一种是简单状态,简单状态不包含其他状态;一种是组成状态,组成状态是包含子状态的状态。

8 8.2.2 转换 转换用带箭头的直线表示,一端连接源状态,即转出的状态,箭头一端连接目标状态,即转入状态。转换可以标注与此转换相关的选项。
转换 转换用带箭头的直线表示,一端连接源状态,即转出的状态,箭头一端连接目标状态,即转入状态。转换可以标注与此转换相关的选项。 从图中可以看出,当源状态接收到一个事件,并且监护条件得到满足,则执行相应的动作,同时从源状态转换到目标状态。一个转换只允许一个事件,一个事件只允许一个动作。

9 初始状态 每个状态机都应该有一个初始状态。初始状态代表状态机的起始位置,初始状态只能作为转换的源,而不能作为转换的目标,用一个实心的圆来表示。 初始状态

10 终止状态 终止状态是模型元素的最后状态,是一个状态图的终止点。终止状态只能作为转换的目标,而不能作为转换的源。终止状态在一个状态图中可以有多个,它用一个含有实心圆的空心圆表示。 终止状态

11 8.2.5 判定 判定处在状态图中这样一个位置:工作流在此处按监护条件的取值而发生分支。
判定 判定处在状态图中这样一个位置:工作流在此处按监护条件的取值而发生分支。 因为监护条件为布尔表达式,所以通常条件下的判定只有一个入转换和两个出转换,根据监护条件的真假可以触发不同的分支转换。 判定的示例

12 8.3 状态 状态描述了对象生命期中某个条件或者状况,在此期间对象将: 满足某些条件 等待某些事件 执行某些活动
8.3 状态 状态描述了对象生命期中某个条件或者状况,在此期间对象将: 满足某些条件 等待某些事件 执行某些活动 对象在任何时候都会处于某种状态中,所有对象都有状态。 对象所处的状态决定了它如何响应所检测到的事件或所接收的消息。 万事具备只欠东风 网上购物时,订单不一定会马上处理,此时订单的状态处于等待处理的状态 正在干什么

13 概述 事实上,类对象的任何一个属性值都是一个状态,全部的状态构成一个庞大的状态空间。我们只关心那些明显影响对象行为的属性,以及由它们表达的对象状态,而不理睬那些与对象行为无关的状态。 状态分为简单状态和组成状态,状态包括状态名、活动、入口动作和出口动作等。

14 状态名 内部转换 内部转换只有源状态而没有目标状态,因此转换激发的结果并不改变状态本身。如果一个内部转换带有动作,动作也要被执行,但是由于没有状态改变发生,因此不需要执行入口和出口动作。 内部转换和自转换不同,虽然两者都不改变状态本身,但是自转换会激发入口动作和出口动作的执行,而内部转换却不会。

15 入口动作与出口动作 入口动作和出口动作表示进入或退出某个状态所要执行的动作。入口动作用“entry/要执行的动作”表达,而出口动作用“exit/要执行的动作”表达。 简单状态 简单状态是指不包含其他状态的状态。简单状态没有子结构,但它可以具有内部转换、进入动作和退出动作等。

16 组成状态 组成状态可以使用 “或”关系分解为并发子状态,或者通过 “与”关系分解为互相排斥的顺序子状态。因此,嵌套的子状态可能是顺序子状态,也可能是并发子状态。如果包含顺序子状态的组成状态是活动的,则只有一个子状态是活动的;如果包含并发子状态的组成状态是活动的,则与它正交的所有子状态都是活动的。

17 (1)顺序子状态 如果一个组成状态的子状态对应的对象在其生命周期内的任何时刻都只能处于一个子状态,即多个子状态之间是互斥的,不能同时存在,这种子状态称为顺序子状态。

18 (2)并发子状态 有时组合状态有两个或者多个并发的子状态机,此时称组成状态的子状态为并发子状态。顺序子状态与并发子状态的区别在于并发子状态在同一层次给出两个或多个顺序子状态,对象处于同一层次中来自每个并发子状态的一个时序状态中。

19

20 历史状态 当离开一个组成状态重新进入此状态时不希望从它的子初始状态开始执行,而是希望直接进入上次离开组成状态时的最后一个子状态,在这种情况下就要用到历史状态。 历史状态代表上次离开组成状态时的最后一个子状态,它用一个包含字母“H”的小圆圈表示。每当转换到组成状态的历史状态时,对象便恢复到上次离开该组成状态时的最后一个活动子状态,并执行入口动作。

21

22 8.4 事件 事件表示在某一特定的时间或空间出现的能够引发状态改变的运动变化。
8.4 事件 事件表示在某一特定的时间或空间出现的能够引发状态改变的运动变化。 事件有多种,大致可以分为入口事件、出口事件、动作事件、信号事件、调用事件、修改事件、时间事件和延迟事件等几种。

23 (1)入口事件 入口事件表示一个入口的动作序列,它在进入状态时执行。 (2)出口事件 出口事件表示一个出口的动作序列,它在退出状态时执行。 (3)动作事件 动作事件也称为“do事件”,它表示对一个嵌套状态机的调用。与动作事件相关的活动必定引用嵌套状态机,而非引用包含它的对象的操作。

24 信号是两个对象之间的通信媒介,信号的接收是信号接收对象的一个事件。
(4)信号事件 信号是两个对象之间的通信媒介,信号的接收是信号接收对象的一个事件。 (5)调用事件 调用事件是一个对象对调用的接收,这个对象用状态的转换而不是用固定的处理过程实现操作。调用事件至少涉及两个以上的对象,一个对象请求调用另一个对象的操作。 信号事件:马路红灯(异步的) 调用事件:函数调用(同步的)

25 (6)修改事件 修改事件依靠特定属性值的布尔表达式所表示的条件满足来触发状态的转换。监护条件与修改事件的区别在于监护条件只是在引起转换的触发器事件触发时和事件接收者对事件进行处理时被赋值一次,而修改事件则可以被多次赋值直到条件为真,多次赋值满足条件后转换也会被激发。

26 时间事件代表时间的流逝。时间事件既可以被指定为绝对形式,也可以被指定为相对形式。
(7)时间事件 时间事件代表时间的流逝。时间事件既可以被指定为绝对形式,也可以被指定为相对形式。 (8)延迟事件 延迟事件是在本状态不处理,要推迟到另一个状态才处理的事件。 时间事件:当某一时间到达,应转换的状态。下课

27 8.5 转换 转换表示两个状态之间的一种关系,当一个特定事件发生或者某些条件得到满足时,一个源状态下的对象在完成一定的动作后将发生状态转变,转向另一个称之为目标状态的状态。当发生转换时,转换进入的状态为活动状态,转换离开的状态变为非活动状态。 转换通常分为外部转换、内部转换、完成转换和复合转换4种。一个转换一般包括5部分的信息:源状态、目标状态、触发事件、监护条件和动作。

28 外部转换 外部转换是一种改变对象状态的转换,它是最常见的一种转换。外部转换用从源状态到目标状态的箭头表示。下图描述了一个火车上的卫生间的简单状态转换,图中箭头上标注的都是引发状态转换的外部事件。这种转换就称之为外部转换。

29 内部转换 内部转换有一个源状态但是没有目标状态,它转换后的状态仍旧是它本身。内部转换的激发规则和改变状态的外部转换的激发规则相同,如果一个内部转换带有动作,动作也要被执行。内部转换用于对不改变状态的插入动作建立模型。 睡觉拍了一下但没有拍醒

30 8.5.3 完成转换 完成转换又称为自转换,它是由状态中活动的完成引起的,是自然而然地完成的转换。
完成转换 完成转换又称为自转换,它是由状态中活动的完成引起的,是自然而然地完成的转换。 内部转换和自转换的区别:自转换是离开本状态后重新进入该状态,它会激发状态的入口动作和出口动作的执行;而内部转换自始至终都不离开本状态,所以没有入/出口事件,也就不执行入/出口动作。

31 复合转换 复合转换由简单转换组成,这些简单转换通过分支判定、分叉或接合组合在一起。由判定参与的转换就是复合转换。除了简单的两个分支判定之外还可以有多条件的分支判定。多条件的分支判定又分为链式的和非链式的分支,这两种分支如下图所示。

32 链式分支

33 非链式分支

34 触发事件 状态机描述了对象的具有事件驱动的动态行为,对象动作的执行、状态的改变都是以特定事件的发生为前提的,触发事件就是能够引起状态转换的事件。触发事件可以是信号、调用和时间段等。

35 监护条件 转换可能具有一个监护条件,监护条件是触发转换必须满足的条件,它是一个布尔表达式。当事件被触发时,监护条件被赋值,如果布尔表达式的值为真,那么转换被触发,为假则不会引起转换,监护条件只能在触发事件发生时被赋值一次。

36 动作 动作是一组可执行语句或者计算处理过程。动作可以包含发送消息给另一个对象、操作调用、设置返回值、创建和销毁对象等。动作也可以是一个动作序列,即一系列简单的动作的组合。动作的执行时间非常短,与外界事件所经历的时间相比是可以忽略的,因此,在动作的执行过程中不能再插入其他事件。下表列出了UML中的各种动作。 眼睛眨了一下

37 opertionComplete(arg)
UML中的各种动作 动作种类 对动作的描述 语法 赋值 对一个变量赋值 target:=expression 调用 调用目标对象的一个操作,等待操作执行完成,可能会有返回值 setname(arg) 创建 创建一个新对象 new Student() 销毁 销毁一个已存在的对象 object.destroy() 返回 为调用者指定返回值 return value 发送 创建一个信号实例并将其发送到目标对象(一个或者一组) opertionComplete(arg) 中止 对象的自我销毁 terminate

38 8.6 状态图建模技术 状态图一般用于对系统中的某些对象和系统的行为建模。建模的时候要找出对象所处的状态、触发状态改变的动作,以及对象状态改变时应执行的动作。具体建模步骤如下: (1)找出适合用模型描述其行为的类 (2)确定对象可能存在的状态 (3)确定引起状态转换的事件 (4)确定转换进行时对象执行的相应动作 (5)对建模的结果进行相应的精化和细化

39 8.7 实例—图书馆管理系统的状态图 使用Rose绘制状态图的步骤 图书馆管理系统的状态图

40 使用Rose绘制状态图的步骤 1. 创建状态图 2. 加入开始状态和终止状态 3. 增加状态 4. 增加转换 5. 增加历史状态

41 8.7.2 图书馆管理系统中的状态图 在图书馆管理系统中,有明确状态转换的类包括:书籍和借阅者的帐户(相当于包含特定个人信息的电子借阅证)。可以在系统中为这两类事物建立状态图。

42 书的状态图

43 状态图说明: (1)New book:还未入库的新书。 (2)Delete:已经从书库里删除的书。 (3)Available:书籍处于可用状态,即可 以外借的状态。 (4)Reserved:预订状态。 (5)Borrowed:借出状态。

44 借阅者帐户的状态图

45 状态图说明: (1)New Borrower:新加入的借阅者的帐户。 (2)Account Available:借阅帐户为可用状态,即未达到所规定的书籍借阅数目上限。 (3)Account Unavailable:借阅帐户为不可用状态,即所借的书籍已达到规定的书籍借阅数目上限,不能再借阅书籍了。 (4)Delete Account:个人帐户被删除状态。

46 CD机的状态图

47 洗衣机状态图


Download ppt "8.1 状态机 8.2 状态图 8.3 状态 8.4 事件 8.5 转换 8.6 状态图建模技术 8.5 实例——图书馆管理系统的状态图"

Similar presentations


Ads by Google