第六章状态图和活动图_精品文档.ppt

上传人:b****2 文档编号:2582155 上传时间:2022-11-02 格式:PPT 页数:75 大小:1.07MB
下载 相关 举报
第六章状态图和活动图_精品文档.ppt_第1页
第1页 / 共75页
第六章状态图和活动图_精品文档.ppt_第2页
第2页 / 共75页
第六章状态图和活动图_精品文档.ppt_第3页
第3页 / 共75页
第六章状态图和活动图_精品文档.ppt_第4页
第4页 / 共75页
第六章状态图和活动图_精品文档.ppt_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

第六章状态图和活动图_精品文档.ppt

《第六章状态图和活动图_精品文档.ppt》由会员分享,可在线阅读,更多相关《第六章状态图和活动图_精品文档.ppt(75页珍藏版)》请在冰豆网上搜索。

第六章状态图和活动图_精品文档.ppt

第6章状态图,活动图东北大学信息科学与工程学院东北大学信息科学与工程学院杨雷杨雷E-Mail:

E-Mail:

1/336主要内容状态图状态图活动图活动图2状态图状态机状态机:

一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成。

状态机是一个状态和装换的图,它说明对象在它的生命期中响应事件所经历的状态序列以及它对那些事件的响应。

状态图状态图:

状态图实际上是一种由状态、变迁、事件和活动组成的状态机。

状态图描述从状态到状态的控制流,常用于系统的动态特性建模。

3状态图的用途UML的状态图主要用于:

建立一个对象在其生存期间的动态行为表现一个对象所经历的状态序列引起状态转移的事件以及因状态转移而伴随的动作4状态是对象的一组属性值,这组属性对所发生的事件具有相同性质的反应。

状态图所描述的对象往往具有多个属性,一般状态图应该在具有以下两个特性的基础上建模:

属性拥有很少的值;属性在这些值之间的转移有一定的限制。

例:

类SellableItem有两个属性salePrice:

Money和status:

枚举型。

其中salePrice的取值范围为正实数,status的取值为received,inInspection,accepted,rejected等,则应根据属性status建立状态图。

5说明:

状态图状态图是对系统的动态行为建模。

状态图描述了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移。

状态图是显示状态机的一种方式,另一种显示状态机的方式是活动图活动图。

Rose中,状态图不生成代码,但状态图在检查,调试和描述类的动态行为时非常有用。

6状态机图与交互图的区别:

交互图不显示对象所有可能的动态行为,只显示特定交互(一个具体的用例)中多个对象的行为。

状态图适合于描述跨越多个用例的单个对象的行为。

7状态图中的基本概念State(状态)Transition(转移)Event(事件)Action(动作)8基本组成基本组成9状态(State)定义:

定义:

一个状态是指在对象的生命期中的一个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。

说明:

对象在任何时候都会处于某种状态中,所有对象都具有状态。

对象所处的状态决定它如何响应所检测的事件或所接收的消息。

通常,事件使对象从一个状态转向另一个状态。

10一个状态有以下几个部分:

状态名状态名进入进入/退出动作退出动作(entry/exitaction)内部转移内部转移(internaltransition)不导致状态改变的转移,不会执行不导致状态改变的转移,不会执行entry和和exit动作动作子状态子状态(substate)嵌套在另外一个状态中的状态嵌套在另外一个状态中的状态延迟事件延迟事件(deferredevent)延迟到下一状态中处理的事件延迟到下一状态中处理的事件状态的构成状态的构成11状态的类型分为:

初态初态一个状态图只能有一个初态一个状态图只能有一个初态终态终态终态可以有一个或多个,也可以没有终态可以有一个或多个,也可以没有中间状态中间状态组合状态组合状态历史状态历史状态状态的类型状态的类型12组合状态子状态子状态是嵌套在另一个状态中的状态。

一个含有子状态的状态被称作组合状态组合状态。

13例:

组合状态和子状态的例子。

14说明:

组合状态中也有初始状态和终结状态。

从源状态可以转移到组合状态本身,也可以直接转移到组合状态中的子状态。

子状态之间可分为“or”关系关系和“and”关系关系两种。

“or”关系说明在某一时刻仅可到达一个子状态,“and”关系说明复合状态中在某一时刻可同时到达多个子状态。

15例2:

子状态之间“and”关系的例子。

例1:

子状态之间“or”关系的例子。

16历史状态(HistoryState)一种伪状态,其目的是记住从组合状态中退出时所处的子状态,当再次进入组合状态时,可直接进入到这个子状态,而不是再次从组合状态的初态开始。

17历史状态例历史状态例当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开时的历史状态。

也就是说,转到购物或结账区之后,再回到“浏览目录”的页面时,其中的内容是不变的,仍然保留原来的信息。

18H和H*的区别:

H只记住最外层的组合状态的历史。

H*可记住任何深度的组合状态的历史。

19转移(Transition)一个转移转移是两个状态之间的一种关系,当指定的事件发生,指定的监护条件得到满足的时候,处于第一个状态的对象执行的指定的效果(指转移激发时执行的动作或活动),进入第二种状态。

转换表示在一个对象的生命历史中所有状态之间可能有的路径,以及在状态变化时执行的动作。

转移说明了处于一个状态的对象响应事件发生的方式。

20状态的之间的转移转移通常是由事件事件触发的,此时应在转移上标出触发转移的事件表达式。

如果转移上未标明事件,则表示在源状态的内部活动执行完毕后自动触发转移。

Transition的格式:

event-signatureguard-condition/action其中event-signature的格式为:

event-name(comma-separated-parameter-list)21对于一个给定的状态,最终只能产生一个转移,因此从相同的状态出来的、事件相同的几个转移之间的条件应该是互斥的。

例:

22Event(事件)事件是系统执行中发生的值得建模的事物。

一个事件事件是对一个在时间和空间上占有一定位置的有意义的事情的规格说明。

在状态机中,一个事件的出现可以触发状态的转换。

事件产生的原因包括:

调用、满足条件的状态的出现、到达时间点或经历某一时间段、发送信号等。

在UML中,事件分为四类:

(1)Callevent(调用事件调用事件)

(2)Changeevent(变化事件变化事件)(3)Timeevent(时间事件时间事件)(4)Signalevent(信号事件信号事件)23

(1)表示一个操作的调度。

请求调用另一表示一个操作的调度。

请求调用另一个对象的操作。

个对象的操作。

Callevent的语法格式如下:

事件名事件名(逗号分隔的参数列表逗号分隔的参数列表)其中参数列表中的参数格式为:

参数名:

类型参数名:

类型例:

调用事件24

(2)Changeevent:

如果一个布尔表达式中的变量发生变化,该布尔表达式的值相应的变化,从而满足某些条件,则这种事件称为变化事件。

变化事件隐含了对于控制条件的不间断测试。

Changeevent用关键字when表示。

Changeevent和警戒条件(guardcondition)的区别:

警戒条件只在所相关的事件出现后计算一次,如果值为false,则不进行状态转移。

变化事件表示的是一个要不断测试的事件变化事件25(3)Timeevent:

是指满足某一时间表达式的情况的出现。

时间表达式可以表示绝对时间/相对时间分别用关键字when/after表示。

例:

时间事件26Signal(信号)所谓信号,是指由一个对象异步地发送、并由另外一个对象接收的一个已命名的对象。

信号是作为对象之间的通信的信息块的规范。

信号是一个显式命名的类元,其目标是对象之间进行显示通讯,它有一些属性,构成它的信息。

通过一个发送动作,它被显式地从一个对象发送到另一个对象。

信号事件表示对象接收到某个信号。

信号可以作为状态机中一个状态转换的动作而被发送,也可作为交互中一个的消息发送。

27(4)Signalevent:

表示的是对象接收到了信号这种情况,信号事件往往会触发状态的转移。

Signalevent的语法格式和Callevent一样。

信号事件是一个异步事件,调用事件一般是一个同步事件。

信号事件28信号用版型为的类图标表示。

信号之间可以具有泛化关系,形成层次结构。

在UML中,例外(exception)是信号的一种。

例:

信号之间泛化关系的例子。

29Action(动作)一个动作动作是一个可执行的原子计算。

它的执行会导致系统状态的改变或者值的返回。

是基本的活动节点,是UML能够表达的最小计算单元。

说明:

从概念上讲,动作时瞬间的,是原子的,不可被中断的,其执行时间可忽略不计的。

UML并没有规定描述action的语言格式,一般建模时采用实际的程序设计语言来描述。

30两种特殊的动作:

entryaction(进入动作)和exitaction(退出动作)。

Entry动作:

进入状态时执行的活动,格式如下:

entry/action-expressionExit动作:

退出状态时执行的活动,格式如下:

exit/action-expression(其中action-expression可以用到对象本身的属性和输入事件的参数)例如;entry/setMode(onTrack)exit/setMode(offTrack)31绘制状态图绘制状态图寻找主要的状态确定状态之间的转换细化状态内的活动与转换用组合状态来展开细节32寻找主要的状态,确定之间的转换寻找主要的状态,确定之间的转换33细化状态内的活动与转换细化状态内的活动与转换34使用组合状态使用组合状态35课程注册系统中的状态图例子36类型为RegistrationController的对象的状态图:

37订单处理系统的例子订单处理系统的例子38使用组合状态使用组合状态39状态图的工具支持正向工程:

根据状态图生成代码。

逆向向工程:

理论上可行,但实际上不大可能。

所生成的代码示例:

40classMessageParserpublicbooleanput(charc)switch(state)caseWaiting:

if(c=)state=GettingBody;elsetoken.append(c);break;caseGettingBody:

if(c=;)state=Waiting;returntrue;elsebody.append(c);returnfalse;publicStringBuffergetToken()returntoken;publicStringBuffergetBody()returnbody;privatefinalstaticintWaiting=0;privatefinalstaticintGettingToken=1;privatefinalstaticintGettingBody=2;privateintstate=Waiting;privateStringBuffertoken,body;41状态图的应用状态图的应用用途对象生命周期建模主要描述对象能够响应的事件,对这些事件的响应以及过去对当前行为的影响对反应型对象建模这个对象可能处于稳定状态,从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作状态及既可以用来表示一个业务领域的知识,也可以用来描述设计阶段对象的状态变迁42主要内容状态图状态图活动图活动图43活动图(ActivityDiagram)活动图是任何系统活动以及活动之间数据流或判断的可视表示。

活动图是一种表述过程基理、业务过程以及工作流的技术。

它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模。

活动图(ActivityDiagram)的应用非常广泛,它既可用来描述操作(类的方法)的行为,也可以描述用例和对象内部的工作过程,并可用于表示并行过程。

44说明:

活动图活动图是对系统的动态行为建模的五个图之一。

活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的转移可能需要事件的触发)。

活动图是状态图的特例。

UML2.0而言,而言,去除了这一规定。

去除了这一规定。

45活动图的例子活动图的例子46活动图中的基本概念活动(activity)转移(transition)泳道(swimlane)分支(branch)分叉和汇合(forkandjoin)对象流(objectflow)47活动(activity)活动是对行为的说明,它描述了计算过程顺序和并发的步骤。

活动关注计算

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1