zhjr-第八章状态图_第1页
zhjr-第八章状态图_第2页
zhjr-第八章状态图_第3页
zhjr-第八章状态图_第4页
zhjr-第八章状态图_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

授课:张金荣Email:zhjr2000@163.com

zhjr@QQ:zhjr@(即1211460305)电话:13983103704107030803、04班《统一建模语言与建模工具》教学要求状态图概念、定义、作用状态及其表示法、状态图的标记符状态转换、事件、条件的概念掌握状态图的阅读和绘制方法。重点:状态图的基本概念和元素难点:复合状态图的表达第

8

章状态图2目录8.1状态图的基础知识8.2状态图组成8.2.1状态、状态表示法包括名称、入口/出口动作、内部转换、子状态(嵌套状态)和延迟事件等五个部分8.2.2初始状态(initialstate)8.2.3终止状态(finalstate)8.2.4转换和转换的五要素8.2.5判定与复合转换8.2.6状态嵌套和历史状态8.3并发状态图(不做要求)8.4状态图设计实例8.5绘制状态机图38.1状态图的基础知识1.状态机状态机是一种记录下给定时刻状态的设备,它可以根据各种不同的输入对每个给定的变化而改变其状态或引发一个动作,如计算机、各种客户端软件、Web上的各种交互页面都是状态机。在UML中状态机由对象的各个状态和连接这些状态的转换组成,是展示状态与状态转换的图。在面向对象的软件系统中,一个对象无论多么简单或者多么复杂,都必然会经历一个从开始创建到最终消亡的完整过程,这个过程通常被称为对象的生命周期。一般说来,对象在其生命周期内是不可能完全孤立的,它必然会接受消息来改变自身或者发送消息来影响其他对象。而状态机就是用于说明对象在其生命周期中响应事件所经历的状态序列以及对这些事件的响应。在状态机的语境中,一个事件就是一次激发的产生,每个激发都可以触发一个状态转换。48.1状态图的基础知识2.状态图定义:状态图是众多开发人员都十分熟悉甚至经常使用的工具,它描述了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移。大多数面向对象技术都使用状态图来描述一个对象在其生命周期中的行为,尤其是通过给单个类绘制状态图以表该类单个对象的生存期行为。对象从产生到结束,可以处于一系列不同的状态。状态影响对象的行为,当这些状态的数目有限时,就可以用状态图来为对象的行为建模,显示其生命的整个进程。状态图把系统或对象所经历的状态以及导致状态转变的事件以图的方式显示出来。53.在画对象的状态图时,需要考虑以下因素:1)对象有哪些有意义的状态。2)如何决定对象的可能状态。3)对象的状态图和其他模型之间如何进行映射。68.2状态图组成在UML中状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。状态的转换由事件触发,状态和状态之间由转换箭头连接。每一个状态图都有一初始状态(实心圆),用来表示状态机的开始,还有一个终止状态(半实心圆),用来表示状态机的终止。一个简单的状态图如下图所示。7一个简单的状态图最为核心的元素无外乎是两个:一个是用圆角矩形表示的状态(初态和终态例外);另一个则是在状态之间的、包含一些文字描述的有向箭头线,这些箭头线称为转换。8状态图的基本符号

基本状态图主要由元素状态、转换、初始状态、终止状态等组成98.2.1状态、状态表示法状态是指在对象生命周期中满足某些条件、执行某些活动或等待某些事件的一个条件和状况一个状态通常包括名称、入口/出口动作、内部转换、子状态(嵌套状态)和延迟事件等五个部分组成101.状态名

状态名指的是状态的名字,通常用字符串表示,其中每个单词的首字母大写。状态名可以包含任意数量的字母、数字和除冒号“:”以外的一些符号,可以较长,连续几行。但是一定要注意一个状态的名称在状态图所在的上下文中应该是惟一的,能够把该状态和其他状态区分开。112.入口和出口动作

一个状态可以有或者没有入口和出口动作。入口和出口动作分别指的是进入和退出一个状态时所执行的“边界”动作。这些动作的目的是封装这个状态,这样就可以不必知道状态的内部状态而在外部使用它。入口动作:【用entry/动作】表示出口动作:【exit/动作】表示123.内部活动(inneractivity)状态可以包含表达式的内部活动。【do/活动】表示当状态进入时活动在进入动作完成后就开始。如果活动结束,状态就完成,执行出口动作,然后一个从这个状态出发的转换被触发,否则状态等待触发转换以引起状态本身的改变。如果在活动正在执行时转换触发,那么活动被迫结束并且退出动作被执行。134.內部转换

内部转换指的是不导致状态改变的转換。跟外部转换形式是一样的。内部转换事件动作监护条件145.延迟事件延迟事件是一种特殊的事件,它是指该事件不会触发状态的转换,当对象处于该状态时事件不会丢失,但会被延迟执行。例如,当E-mail程序中正在发送第一封邮件时,用户下达发送第二封邮件执令就会被延迟,但第一封邮件发送完成后,这封邮件就会被发送。这种事件就属于延迟事件;再如打印事件。在状态内部用/defer表示延迟事件158.2.2初始状态(initialstate)每个状态图都应该有一个初始状态,它代表状态图的起始位置。初始状态是一个伪状态(一个和普通状态有连接的假状态),对象不可能保持在初始状态,必须要有一个输出的无触发转换(没有事件触发器的转换)。通常初始状态上的转换是无监护条件的并且初始状态只能作为转换的源,而不能作为转换的目标在UML中一个状态图只能有一个初始状态,用一个实心的圆表示。168.2.3终止状态(finalstate)终止状态是一个状态图的终点一个状态图可以拥有0个或者多个终止状态。对象可以保持在终止状态但是终止状态不可能有任何形式的触发转换,它的目的就是为了激发封装状态上的完成转换。因此终止状态只能作为转换的目标而不能作为转换的源在UML中终止状态用一个含有实心圆的空心圆表示。17需要注意的是,对于一些特殊的状态图,可以没有终止状态如图所示为一部电的状态图,在这个状态图中没有终止状态。因为不管在什么样的情况下,电话的状态都在“空闲”和“忙”之间转换。188.2.4转换和转换的五要素源状态(SourceState):即受转换影响的状态目标状态(TargetState):当转换完成后对象的状态触发事件(EventTrigger):用来为转换定义一个事件,包括调用、改变、信号、时间四类事件监护条件(GuardCondition):布尔表达式,决定是否激活转换、动作(Action):转换激活时的操作19与状态off相关的转换有两个,其触发事件都是turnOn,只不过其监护条件不同。如果对象收到事件turnOn,那么将判断壶中是否有水;如果[没水],则仍然处于off状态;如果[有水]则转为on状态,并执行“烧水”动作而与状态on相关的转换也有两个,如果“水开了”就执行turnOff,关掉开关;如果烧坏了,就进入了终态了20转换的分类、描述和语法转换类型描述语法①外部转换对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转换事件(参数)[监护条件]/动作②内部转换对事件做出响应,并执行一个特定的活动,但并不引起状态变化或进入转换、离开转换同①③进入转换当进入某一状态时,执行相应活动entry/动作④退出转换当离开某一状态时,执行相应活动exit/动作⑤自转换一种特殊的外部转换,起始状态和终止状态为同一状态同①21自转换内部转换退出转换进入转换228.2.5判定与复合转换判定用空心小菱形表示。工作流在此处按监护条件的取值而发生分支,各个分支组成复合转换。23它的变体:可以看成是两个转换24链式分支(链式复合转换)25非链式分支(非链式复合转换)可以看成是多个转换(如果把事件[监护条件]/动作看做是转换的签名的话)268.2.6状态嵌套和历史状态1.状态嵌套

状态分为筒单状态(SimpleState)和组成状态(CompositeState)。简单状态是在语义上不可分解的、对象保持一定属性值的状况,简单状态不包含其他状态;组成(复合)状态是内部嵌套子状态的状态,在组成状态的嵌套状态图部分包含的就是此状态的子状态。27(一)跟复合状态关联的转换可以直接关联子状态复合状态转换的表达形式28(二)关联外围框的转换从复合状态外围框出来的转换若复合状态内有终点状态,则表示该出转换是从终点状态出来的若复合状态内无终点状态,则表示该出转换可以从该复合状态任意状态出来指向复合状态外围框的转换:直接指向外围框表示指向该复合状态的开始状态两者都可以对出入点命名确定,或用事件签名约定(此时应该认为该事件签名对应的出入口点是唯一确定的)29复合状态表示法两种表示方法:一种是子图和父图合在一块,叫嵌套区域表示法另一种是子图和父图分开表示,叫分解指示符法第二种方法要注意高层状态图的出入口数和子图的出入口数要平衡30(1)如果一个复合状态只有一个入口点或出口点新图例31若不使用则为了明确其复合状态的身份,可以如此引用:32(2)如果一个复合状态有多个入口点或出口点,若高层图和子图画一块,转换可直接和子图的状态关联若高层图和子图分离,要对出入口点命名处理。如图:33Rose里面可用事件签名区分出入口点342.历史状态组成状态可能包含历史状态(HistoryState),历史状态本身是个伪状态,用来说明组成状态曾经有的子状态。一般情况下,当状态机通过转换进入组成状态嵌套的子状态时,被嵌套的子状态要从子初始状态进行。但是如果一个被继承的转换引起从复合状态的自动退出,状态会记住当强制性退出发生的时候处于活动的状态。这种情况下就可以直接进入上次离开组成状态时的最后一个子状态,而不必从它的子初始状态开始执行历史状态代表上次离开组成状态时的最后一个活动子状态,它用一个包含字母H的小圆圈表示。H35图中的含义是:当从状态“结账”和“显示购物车”返回子状态“显示索引信息”时,将进入的是离开时的历史状态。也就是说,转到购物

车或结账区之后,

再回到“浏览目录”的

页面时,其中的内容

是不变的,仍然保留

原来的信息。368.3并发状态图(不做要求)用同步棒表示Rose里面,状态图默认没有分叉汇合,要在工具条上自定义添加37教材8.4的说明!!!分区,可以有自己的区名38软考试题:UML的状态图展示了一个特定对象的所有可能状态,以及由于各种事件的发生而引起的状态间的转移(transition)。如果一个并发的状态由m个并发的子状态图组成,那么该并发状态在某时刻的状态由()个子状态图中各取一个状态组合而成。

A.任意一

B.任意两

C.每一

D.任意n(n≤m)398.4状态图设计实例408.5绘制状态机图绘制状态机图的理想步骤是:寻找主要的状态,确定状态之间的转换,细化状态内的活动与转换,用复合状态来展开细节41以航班机票预订系统为例:寻找主要状态:在刚确定飞机计划时,显然是没有任何预订的,并且在有人预订机票之前都将处于这种“无预订”状态对订座而言显然有“部分预订”和“预订完”两种状态而当航班快要起飞时,显然要“预订关闭”总结一下,主要有四种状态:无预订、部分预订、预订完以及预订关闭42确定状态间转换源目标无预订部分预订预订完预订关闭无预订预订()不直接转换关闭()部分预订退订(),使预订人=0预订(),无空座关闭()预订完不直接转换退订()关闭()预订关闭无转换无转换无转换43细化状态内的活动与转换44使用复合状态45本章小结首先介绍了“状态”的概念和UML表示法,然后引入了状态机的概念通过三个例子逐一说明简单状态机图、包含复杂转换的状态机图以及包含复合状态的状态机图的阅读方法,紧接着通过一个航班机票预订系统来阐述了状态图的绘制过程:确定状态,分析状态间的转换,细化活动与内部转化,通过复合状态来组织简明地点出状态图的两大功能:对对

象的生命周期建模以及对反应型对象

的行为建模46为什么要建模状态图

对象可能会有不同的状态,某些行为依赖于这些状态。例如,按下开关按钮时,电灯将改变当前的状态(由关变开或由开变关),因此:需要记录对象当前的状态发生了某种事件才会引起状态间的转移由一个状态转到另

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论