1、Click to edit Master title style,面向对象技术及,UML,教程,第,9,章,状态图和活动图,第,9,章 状态图和活动图,状态图和活动图是用来描述系统的动态行为特征的,主要用于描述事物的状态变化和处理过程。,状态图(,Statechart,Diagram,)是附加到类和用例的状态机图,,描述对象响应外部激励时所经历的各种状态和转换。,活动图(,Activity Diagram,)是一种描述系统行为的图,,它用于展现参与行为的类所进行的各种活动的顺序关系。,9.1,状态图概述,状态机视图是一个类对象所可能经历的所有历程的模型图。,状态机由对象的各个状态和连接这些状态
2、的转换组成。,状态机视图通过对类和对象的生存周期建立模型来描述对象随时间变化的动态行为。,状态机主要用于描述类的行为。,状态机是一个类的对象所有可能的生命历程的模型。,状态机是一个对象的局部视图。,9.1.1,状态机,9.1,状态图概述,状态图主要由起点、终点和状态组成,各状态由转移连接在一起。,状态图适合于描述跨越多个用例的单个对象的行为。,状态图由状态、事件和转换三个主要元素构成。,9.1.2,状态图概述,参加高考,学前,在校,录取,休学,毕业,退学,康复,生病,完成学业,学籍处理,9.1,状态图概述,状态图与顺序图的区别,顺序图不显示对象所有可能的动态行为,只显示特定交互场景(一个具体的
3、用例)中对象的行为。,状态图可以显示对象所有的动态行为。,笔 完整 折断两种状态,是由谁折断?只能由顺序图看出,9.2,状态图元素,状态图元素,起点,终点,状态,事件,转换,符合状态和子状态,9.3,状态图图符,常见图符,起点,状态,符合状态,终点,转换,注释体,注释连接,9.2,状态图元素,事件,发生,执行某动作后,,状态,1,转换,为状态,2,接到订单,记账,9.2,状态图元素,起点表示所有对象的源,,起点不是一个标准的状态,因为在此状态中对象还不存在。,9.2.1,起点终点,终点表示素有对象生命周期的结束,,终点也不是一个实际的状态,因为处于该状态的对象已经消亡。,9.2,状态图元素,初
4、态,start state,显示状态图中状态机执行(,execution,)的开始,一个状态机,只能有一个,初态,因为每一个执行都是从相同的地方开始的。如果一个状态机用多张状态图描述,则多张图用一个初态,Rose,中只允许画一个初态,其它地方拖动使用,嵌套状态中可以使用新的初态,9.2,状态图元素,终态,end state,表示最后的或者终端状态;,终态,数目可以不确定,也可以没有。,电扇 坏了,/,没坏,但拆下闲置,9.2,状态图元素,对象的状态始终是由其属性和关联决定,状态图中的状态表示的是给定类对象的一组属性值,状态图中状态用圆角矩形表示,9.2.2,状态,状态名称,9.2,状态图元素,
5、什么是状态(,state,),状态是指在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况。,万事俱备,只欠东风,学生正在上课,网络购物,订单等待处理,9.2,状态图元素,理解,对象在任何时候都会处于某种状态中,所有对象都有状态,对象所处的状态决定了它如何响应所检测到的事件或所接收的消息。清醒(被批评)生气 醉酒(被批评)无反应,通常,事件使对象从一个状态转向另一个状态(即状态的转换),9.2,状态图元素,CD Player,需要,stop,状态吗?,9.2,状态图元素,中间状态的组成(除初态终态外,最常见的状态),状态名(,name,),入口,/,出口动作(,entr
6、y/exit action,),内部转化(,internal transition,),子状态(,substate,),延迟事件(,deferred event,),9.2,状态图元素,状态详细描述,9.2.2,状态,输入密码,entry/,pwd.reset,(),exit/,pwd.test,(),clear/,pwd.reset,(),help/display help,print/defer,do/suppress echo,状态名称,入口动作,出口动作,内部转换,延迟事件,内部活动,9.2,状态图元素,状态名(,name,),是可以把该状态和其他状态区分开的字符串,;,状态也可能是匿
7、名的,即没有名称。,9.2,状态图元素,内部转换(,internal transition,),不导致状态改变的转换,不会执行,entry,和,exit,动作,内部转换和自转换的区别:,前门入口,后门出口,不出去,只在内部发生的转换内部转换,从后门出去,又从前门进来自转换,自转换会引起,entry,和,exit,动作的执行,9.2,状态图元素,子状态(,substate,),嵌套在另外一个状态中的状态,空调:停止、运行状态,运行状态中可嵌套制 冷、制热、除湿等子状态,延迟事件(,deferred event,),是指在该状态下暂不处理,但将推迟到该对象的另一个状态下排队处理的事件,9.2,状态
8、图元素,名字域,转换域,可选,当转入该状态时,做开灯动作,当转出该状态时,做关灯动作,当处于该状态时,灯闪烁,5,次,当电源关闭事件发生时,用自备电源,当,selfTest,事件发生时,对象将延迟响应,到别的状态中再处理,用,defer,这个特定动作表示延迟,do,活动是只在状态内出现的活动,不能附加到转换上。,内部转换,9.2,状态图元素,“事件”指发生在时间和空间某点上的且能够引起某些动作执行的事情,事件可以是内部事件也可以是外部事件,四类事件:,调用事件,信号事件,改变事件,时间事件,9.2.3,事件,9.2,状态图元素,信号,signer,事件,所谓,信号,,是指由一个对象,异步,地发
9、送,并由另外一个对象接收的一个已命名的,对象,。,信号事件表示对象接收到某个信号。,信号间可以有泛化,信号可以是其他信号的子信号,它们继承父信号的属性,并可以触发包含信号类型的转换。,9.2,状态图元素,接收到,input,信号这一事件发生,9.2,状态图元素,调用,call,事件,表示一个操作的调度。请求调用另一个对象的操作,信号是一个异步事件,而调用事件一般是,同步,的。也就是说,当对象调用另一对象的操作时,控制就从发送者传送到接收者,该事件触发转换,完成操后,接收者转换到一个新的状态,控制返还给发送者。,9.2,状态图元素,变化,change,事件,用关键字,When,,后面跟布尔表达式
10、When(temperature,120)/alerm(),变化事件的意图是要频繁测试表达式,只要表达式由假变为真,事件就会发生。,9.2,状态图元素,时间(,time,)事件,时间事件是指在绝对时间或在某个时间间隔内发生的事情所引起的事件。,例如到达某一时间或经过了某一时间段。用关键字,When,或,After,表示。,9.2,状态图元素,对象从一个状态改变成另一个状态称为转换,。,当状态发生转换时,称转换被激活。,转换激活前,对象为,源状态,。,激活后,对象为,目标状态,。,9.2.4,转换,9.2,状态图元素,转换的五要素(注意格式),源状态,目标状态,触发事件,如果箭头上不带任何事件
11、名,表示是一个,自动转换,,当与源状态相关的活动完成时就会自动触发。,监护条件,动作,9.2,状态图元素,动作,可执行的原子计算,不可中断,其执行时间可忽略不计,当转换被引发时,它对应的动作被执行。它一般是一个简短的处理过程。,两种特殊动作(只要进入或离开该状态一定会执行该动作),入口动作(,entry,),进入状态时执行的动作,退出动作(,exit,),退出状态时执行的动作,9.2,状态图元素,9.2,状态图元素,9.2,状态图元素,外部转换,自转换也是外部转换,外部转换,9.2,状态图元素,复合状态是包含有子状态即嵌套状态的状态,9.2.5,复合状态和子状态,外借,在库中,正常,过期,借书
12、还书,9.2,状态图元素,组合,/,嵌套状态,含有子状态的状态被称为组合或嵌套状态,为何不在组合中加初态、终态?,可以将任一子状态作初态,去掉运行这个大的状态行吗?,行,但效果不好,隐藏子状态,简化模型复杂度,增强清晰性,9.2,状态图元素,两种表示方法,顺序子状态,如果一个组成状态的子状态对应的对象在其生命期内的任何时刻都只能处于一个子状态,即多个子状态之间是互斥的,不能同时存在,这种子状态称为顺序子状态。,并发子状态,有时组合状态有两个或者多个并发的子状态机,此时称组成状态的子状态为并发子状态。,9.2,状态图元素,顺序子状态与并发子状态的区别在于后者在同一层次给出两个或多个顺序子状态,
13、对象处于同一层次中来自每个并发子状态的一个时序状态中。,9.2,状态图元素,Complete,Lab1,Lab2,Laboring,完成实验,完成实验,Term Project,完成项目,Projecting,Final Test,通过测试,Testing,9.4,状态图应用,首先需要找到与系统中对象相关的转换事件,通过以下几个方面来寻找转换事件,哪些事件可以创建或删除对象,哪些事件可以定义或修改属性值,哪些事件可以创建或结束与其他对象的关系,哪些事件可以导致对象状态的转换,根据事件找到状态,9.4.1,状态分析,9.4,状态图应用,举例:学生学习过程状态,首先分析事件:,参加高考,录取,生病
14、康复,完成学业,学籍处理,9.4.1,状态分析,9.4,状态图应用,接下来分析转换事件:,参加高考:高考后进入“学前”状态,录取:学生被录取后变成“在校”的学生,生病:学生长时间生病则进入“休学”状态,康复:学生再回到学校转为“在校”状态,完成学业:学生毕业进入“毕业”状态,学籍处理:学生被学籍处理,进入“退学”状态,9.4.1,状态分析,9.4,状态图应用,最后得到状态:,学前,在校,退学,毕业,休学,9.4.1,状态分析,9.4,状态图应用,状态图:,9.4.1,状态分析,参加高考,学前,在校,录取,休学,毕业,退学,康复,生病,完成学业,学籍处理,9.4,状态图应用,可以对每个状态进行
15、详细分析,例如前例中的状态“在校”可以细化为,9.4.2,状态图描述,在校,二年级,一年级,四年级,三年级,升级,升级,升级,降级,降级,降级,降级,9.4,状态图应用,步骤,寻找主要的状态,确定状态之间的转换,细化状态内的活动与转换,用组合,/,嵌套状态来展开细节,航班预定系统(无预定,预定关闭,部分预定,预定完),9.4,状态图应用,9.4,状态图应用,细化状态内的活动与转换,9.4,状态图应用,使用复合状态,9.4,状态图应用,订单处理系统,9.4,状态图应用,9.4,状态图应用,练习,1,电水壶:,on,和,off,两个状态,初态,off,,烧坏则转换到终态。,trunOn,事件发生时
16、判断水壶是否有水,若没有水,则仍处于,off,状态,若有水,则,turnOn,事件引起烧水活动,使状态从,off,转入,on,,水开,则从,on,转入,off,状态,9.4,状态图应用,9.4,状态图应用,练习,2,进程,就绪 运行 阻塞三个状态,初态就绪,;,程序运行结束后终态,就绪状态获得,CPU,时间片转为运行态;运行态时间片用完转为就绪态;运行态不满足所需资源转为阻塞态,阻塞态若资源满足则回到就绪态,9.4,状态图应用,9.4,状态图应用,图书馆管理系统中的还书业务,还书业务的动态行为是由:空闲(,idle,)、图书查找(,finding,)、还书(,reversion,)、失败(,
17、Failure,)、归还成功(,Success,),5,种状态及激活相互转换的事件。,请根据分析运用,UML,绘制还书的状态图。,9.5,活动图概述,活动图是用来描述达到一个目标所实施一系列活动的过程,描述了系统的动态特征。,活动图主要由起点,/,终点、活动、分支、分岔,/,汇合、泳道等元素组成。,示例:学生作业处理过程,布置作业,下发作业,做作业,提交作业,批改作业,9.5,活动图概述,Activity Diagram,用于描述活动流程的图形称为活动图,和结构化方法中的工具程序流程图作用基本一致。,是一种特殊的状态图,。,与状态图的区别,活动图着重表现从一个活动到另一个活动的控制流,是内部处
18、理驱动的流程;,状态图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与。,9.5,活动图概述,活动图可以用作以下目的:,描述一个操作执行过程中所完成的工作(动作),这是活动图最常见的用途。,描述对象内部的工作。,显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。,显示用例的实例如何执行动作以及如何改变对象状态。,说明一次业务流程中的人(参与者)和对象是如何工作的。,9.5,活动图概述,9.6,活动图元素,主要元素:,起点和终点,活动,转移,接收信号和发送信号,决策点和汇合点,分叉和汇合,控制流终点,泳道,9.7,活动图图符,活动名称,起点,终点,活动,判断条件,同步条,
19、接收信号,发送信号,泳道,转移,注释体,注释连接,9.6,活动图元素,活动图有一个起点一个终点,起点用黑圆点表示,终点用黑圆点外加一个圈表示,9.6.1,起点和终点,起点,终点,9.6,活动图元素,活动图中,可以包含活动状态也可以包含动作状态,活动图中,活动使用带圆边的矩形表示,9.6.2,活动,活动名称,活动,9.6,活动图元素,动作状态,对象的动作状态是活动图中最小单位的构造块,表示原子动作。,动作状态有三个特性:,原子性;,不可中断性:,瞬时性:,9.6,活动图元素,活动状态,表示的是可以分割的动作,特点是:它可以被分解成若干活动状态或动作状态,它能够被中断,占有有限的时间。,活动状态可
20、以理解为一个组合,它的控制流由其他活动状态或动作状态组成。,动作状态和活动状态使用带圆端的方框表示,9.6,活动图元素,转移使用带箭头的线段表示,连接活动、起点、终点、同步条、判断等,9.6.3,转移,9.6,活动图元素,接收信号表示当前需要等待某个事件的发生,发送信号表示把某个信号发送给一个等待接收的活动,9.6.4,接收信号和发送信号,接收信号,发送信号,9.6,活动图元素,决策点用来描述具有条件的行为,验证打印机链接活动后是一个决策点,9.6.5,决策点和汇合点,验证打印机连接,打印,屏幕显示“未连接打印机”,连接,否则,9.6,活动图元素,汇合点与决策点相反,它拥有多个输入转换,却只有
21、一个输出转换,汇合点的作用是合并控制流,9.6.5,决策点和汇合点,9.6,活动图元素,活动图中可以包含并发线程的分岔控制,并行的行为可以用分岔和汇合来描述,分岔和汇合在活动图中必须匹配,9.6.6,分岔和汇合,获得订单,安排付款,调货,交货,9.6,活动图元素,分叉表示把一个单独的控制流分成两个或多个并发的控制流。一个分叉可以有一个进入转移和两个或多个输出转移,每一个转移表示一个独立的控制流。,汇合表示两个或多个并发控制流的同步发生,一个汇合可以有两个或多个进入转移和一个输出转移。,分叉和汇合在图形上都使用同步条来表示,同步条通常用一条粗的水平线表示,9.6,活动图元素,示例:描述打电话活动
22、中的并发事件,9.6,活动图元素,泳道是为组织活动图而对活动进行的分组,用来划分状态图的状态,每个泳道代表整个活动的部分高级职责,整个活动可能最后由一到多个泳道实现,使用泳道可以把活动按照功能或所属对象的不同来进行组织。,属于一个对象的所有活动都放在同一个泳道内,对象的名字放在泳道的顶部。,9.6.7,泳道,9.6,活动图元素,泳道(,swimlane,),“,泳道,”,技术,是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动。,“,泳道,”,技术来描述每个活动是由哪个对象负责完成,UML,中,每个组被称为一个泳道,用一条垂直的实线与邻居分开,每个活动
23、都明确属于,一个,泳道,不可以跨越泳道,而转移则可以,跨越,泳道,9.6,活动图元素,9.6.7,泳道,货,调配货物,获得订单,判断需求,安排付款,交付货物,销 售,配 货,9.6,活动图元素,9.6,活动图元素,对象流(,object stream,),对象流是动作状态或活动状态与对象间的依赖关系。,对象流可用于对下列关系建模:,动作状态对对象的使用,动作状态对对象的影响。,在,UML,中,使用矩形表示对象,对象和动作之间使用带箭头的虚线连接,带箭头的虚线表示对象流。,工具栏,customize,9.6,活动图元素,用活动图描述客户在商店中购买物品的过程。,(,使用对象流技术描述购物这个动态
24、过程中系统内对象的状态变化),9.6,活动图元素,9.8,活动图应用,构建活动图首先需要找到业务过程中的活动,,可以通过以下的问题来帮助寻找业务过程中的活动:,该业务过程需要完成哪些工作步骤。,每个参与者都将执行哪些操作。,有没有哪些事件启动了哪些工作步骤。,9.8.1,过程分析,9.8,活动图应用,举例,-,旅客登机过程:,领取登机牌,办理行李托运,通过安检,旅客登机,行李装载,飞机起飞,9.8.1,过程分析,9.8,活动图应用,得到了业务过程中的主要活动后,就需要进一步考虑这些活动的执行顺序,考虑下面的问题有助于理解业务控制流:,所有活动的执行顺序。,执行某个活动时需要满足什么条件。,哪里
25、有必要的分支。,哪些操作是同时发生的。,必须先完成某些操作,才能执行其他操作。,9.8.2,活动链接,9.8,活动图应用,9.8.3,活动图描述,领取登机牌,托运行李,安检,旅客登机,随身携带行李,否则,行李装载,飞机起飞,9.8,活动图应用,实例,新增读者,用例属于读者信息管理中的一个功能,主要用于在系统中增加新的读者信息,其具体的办理流程是:,(,1,),读者,填写申请表,并交给,图书管理员,;,(,2,),图书管理员,将申请表中的信息通过录入界面,输入到图书管理系统;,(,3,)系统中的,业务逻辑,组件将判断输入的信息是否合法;,(,4,)如果不合法则转入步骤(,5,),否则转入步骤(,
26、6,),;,(,5,)显示,添加错误信息,,转到(,8,);,(,6,)在,“,数据库,”,添加相信的用户信息;,(,7,)显示,添加成功信息,;,(,8,)结束。,9.8,活动图应用,9.8,活动图应用,作业:绘制,“,删除读者信息,”,用例的活动图。删除读者信息按照以下步骤进行:,(,1,)管理员在录入界面,输入待删除的读者名;,(,2,),“,业务逻辑,”,组件在数据库中,查找待删除的读者名;,(,3,)如果不存在,则显示出错信息,返回步骤(,1,),如果存在则继续;,(,4,),“,业务逻辑,”,组件判断,“,待删除的读者,”,是否可以删除;,(,5,)如果不可以,则显示出错信息,返回步骤(,8,),如果可以则继续;,(,6,)在数据库中,删除相关信息;,(,7,)显示删除成功信息;,(,8,)结束。,9.9,小结,状态图和活动图都是用来描述系统的动态行为。,状态图主要用于描述系统中主要对象的状态变化过程,活动图主要用于描述用户的业务流程或者是某个具体的程序流程,这两类图在面向对象分析过程中使用相对少一些,只有在需要对某些对象或过程进行详细描述时才使用。,






