状态图有例题.ppt
模型,模型表示系统静态和动态的行为。这种表示形式可为同一系统提供不同的视角,静态模型,动态模型,系统结构方面,系统的过程和行为的集合,操作和维护模型比操作和维护实际系统容易得多,使用户和开发人员都能更容易地理解构思中的系统,可助于解释状态的改变和降低复杂度,可监视构思中的系统是否存在任何类型的缺陷,动态模型的优越性,动态模型的优越性,动态模型描述系统与操作时间和顺序有关的系统方面、影响更改的事件、事件的序列、事件的环境以及事件的组织,动态模型的组件,状态图,顺序图,活动图,协作图,动态模型的组件,动态模型的组件,动态模型的组件,状态1,状态2,初始状态,如果无效,则重复状态,1,如果有效,则转换状态 2,最终状态,状态图,状态图描述了单个事物如何为响应发生的事件而更改状态和生成响应,并通过此方式与其环境进行交互,浸泡,洗涤,漂洗,脱水,Wash clothes,Washing Machine User,动态模型的组件,状态图,动态模型的组件,顺序图,顺序图用于按时间顺序模拟控制流程。显示了在对象生命线上各点之间的对象传递的消息,演示了在时间序列中对象之间的交互,顺序图:表达一组对象以及这些对象发出与接受消息,重点在消息的时间顺序上。,。,8,洗衣机,进水管,洗涤缸,排水管,顺序图,动态模型的组件,洗衣机工作过程1.通过进水管向洗涤缸注水。2.洗涤缸保持5分钟静止状态3.水注满,停止注水。4.洗涤缸往返旋转15分钟。5.通过排水管排掉洗涤后的脏水。,6.重新开始注水。7.洗涤缸继续往返旋转洗涤8.停止向洗涤缸中注水。9.通过排水管排掉漂洗衣物的水。10.洗涤缸加速单方向旋转5分钟。11.洗涤缸停止旋转,洗衣过程结束。,9,动态模型的组件,顺序图洗衣过程,10,进水管,洗涤缸,排水管,注入新水,保持静止,停止注水,往返旋转,排掉洗涤后的脏水,注入新水,往返旋转,排掉漂洗过的水,单向旋转,停止转动,停止注水,浸泡状态,洗涤状态,漂洗状态,脱水状态,协作图,动态模型的组件,协作图将对象组织在一定的结构之下,通过消息在对象之间传递与协作来完成某项功能,其重点在于演示或检测对象间的协作,协作图:表达一组对象、对象之间的连接,以及对象发 出和接受的消息,重点在对象的结构组织方面。,。,12,内部计时器,洗涤缸,进水管,1.停止注水,2.往返旋转,客户-提供者实现模式,洗涤缸,进水管,协作图,动态模型的组件,活动图,动态模型的组件6,活动图显示活动与活动之间的流程。活动是状态机中当前执行的活动,由系统的操作而组成,操作活动1,操作活动2,操作活动3,操作活动4,洗涤缸往返旋转15分钟,排掉脏水,重新入新水注,14,第三章 状态图(State Diagram),状态图是系统分析的一种常见工具,用于描述系统或单独对象的外部可见行为。UML中的状态图主要用于建立类或对象的动态行为模型,表现一个对象所经历的状态序列,引起状态或活动转移的事件,以及因状态或活动的转移而伴随的动作。,状态图,实体的生存期比较复杂时,需要状态图对类的所有实例的生命周期建模。大多数面向商业的应用中的类不需要状态图以下情况经常使用状态图动态模型中产生或接收大量信息的类界面类实时系统中的类,状态图,状态图,18,实时系统中的类,闲置状态,拨号状态,通话状态,拿起听筒拨号,线路拨通,挂断电话,电话机,电话线状态图平p77 图5-8 p82 图517,19,第三章 主要内容,1.状态机 2.状态3.事件4。转移 5.组合状态6.状态图的应用,21,3.1 状态机1,UML用状态机对系统的动态特征建模。状态机表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起,响应事件,执行某些动作,引起转移到新状态,在新状态下响应事件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。状态机的组成:状态、转移、事件、活动、动作等。,22,3.1 状态机2,状态机用于对一个模型元素建立行为模型,一个对象类,一个子系统,整个系统。在UML中状态机用状态图可视化表示。状态图:状态的节点、转移的弧、事件等组成。,源状态,目标状态,事件,23,3.2 状态State,状态:对象全部属性的当前值。状态属性:对确定对象的状态有重要意义的属性。状态属性一般具有少量的值,而且这些属性的值的转换是有限的。并且其属性值反映所属对象的特定状态。在UML中,对一个对象(模型元素)的行为建模时,所选择的该对象的生存期中的状态数量是有限的,对象处于每个状态的持续时间也是有限的。当发生某个事件或完成某个动作,都会触发状态的转移。,24,3.2.1 状态图标,状态图标(状态节点)一个状态可以加入信息:活动 activity 动作action 事件Event 效应effect entry/exit,statement,entry/actiondo/activity event/effect,在某个时间内系统处于某一状态下发生的。do/将要发生的动作 p80 5-13,当系统发生特定的迁移、进入或退出特定状态下发生的瞬时行为p80 5-15,为响应事件而执行的行为p79 5-12,25,3.2.2 状态行为1,进入操作(entry)系统进入该状态时要发生的动作,前面加上entry和“/”。不可中断。活动(do)系统处于该状态时要发生的活动,前面加上do和“/”。活动是可中断行为,可以在对象处于该状态时运行完毕,也可以在对象转入另一状态时中断。,航班预定entry/将时刻表发布到 Internet,航班取消do/为客户寻找其它航班,26,3.2.2 状态行为2,退出操作(exit):系统离开该状态时要发生的动作,前面加上exit和“/”。不可中断。发送事件:在活动、进入和退出操作的动作中可以是对象内部发生的行为,也可能是向另外一个对象发送消息。,飞行状态exit/记录登陆时间,状态名entry/目标对象.消息名(消息参数)do/目标对象.消息名(消息参数)exit/目标对象.消息名(消息参数),27,3.2.3 初始与终结状态,状态图中定义的状态有:初态、终态、中间状态、组合状态、历史状态等。初始状态:模型元素的初始状况,代表一个状态图的起始点,是一个伪状态。初始状态是转移的初始源,而不能是转移的目标。终结状态:模型元素的最后状态,代表一个状态图的终止点,是一个伪状态。终结状态是转移的最后目标,而不能是转移的初始源。状态图只能有一个初态,而终态可以有多个,也可以没有终态,单触发状态图p78 图5-9,3.3 事件Event,事件是指某时刻发生的事情 事件是指已发生并可能引发某种活动的一件事 效应:为响应事件而执行的行为活动:由效应触发的实际行为,某个状态的多个活动迁移到达上的活动进入、推出活动do活动,3.3 事件Event,不同类型的事件信号事件信号是指从一个对象到另一个对象的单项数据流动信号事件指某时刻发生的事情变更事件满足布尔表达式而引起的事件when(battery power lower limit)时间事件在绝对时间上或某个时间间隔内发生的事情引起的事情When(date=2011/11/1)After(10s),练习,用状态图描述简单信号灯的变化,31,3.4 转移transition,当处于源状态的对象接收到一个事件,并且保护条件得到满足时,则执行相应的动作,并从源状态转移到目标状态。当发生一个转移时,该转移进入的状态为活动状态,它将执行相应的动作。当发生一个转移离开一个状态时,该状态变为非活动状态。转移类型:简单转移、自转移、自动转移、复合转移等。,源状态,目标状态,事件条件/动作,状态迁移的语法如下:事件 条件/动作表达式 事件:指已发生并可能引发某种活动的一件事;条件:由方括号围起的关系或逻辑表达式;动作表达式:一个触发状态迁移时可执行的过程表达式;,3.4 转移transition,练习,用状态图描述三岔口智能信号灯的变化,P76 图57 警戒迁移,练习:PC从开启到关机的GUI状态图,35,3.4.1 转移类型1,自动转移(Automatic-Transition)又称完成转移(Completion-Transition)。每个状态都可能有一个不由事件触发的转移,它是根据该状态内的动作完成而自动触发的。,初始化do/自启动,工作,p36,3.4.1 转移类型2,自身转移(Self-Transition)指那些源状态与目标状态是同一状态的转移。调用状态的入口和出口动作。如:卖票的航班中增加乘客或减少乘客时,航班是打开的。p81 图5-6,37,3.4.1 转移类型3,复合转移(Compound-Transition)由简单转移通过分支判定、分叉组成。判定:在状态图中的一个特定的位置,工作流在此依据条件的取值而发生的分支。判定用空心小菱形表示。,38,3.4.1 转移类型4,39,源状态,目标状态4,目标状态3,目标状态2,目标状态1,事件1,条件1/动作1,条件3/动作3,条件4/动作4,条件5/动作6,条件2/动作2,条件6/动作6,多条件链式分支,源状态,目标状态4,目标状态3,目标状态2,目标状态1,事件1条件1 and 条件3/动作1,动作3,多条件非链式分支,事件1条件2 and 条件6/动作2,动作6,事件1条件2 and 条件5/动作2,动作5,事件1条件1 and 条件4/动作1,动作4,40,3.4.2 转移示例,未分配任务,已分配任务,取消对任务的资源分配,NumAssTasks1/NumAssTasks-1,NumAssTasks=1/NumAssTasks=0,分配任务给资源/NumAssTasks+1,资源休闲,资源管理员,PRMS的一个资源状态图,分配任务给资源/NumAssTasks+1,41,3.5 组合状态,平面状态图的问题 n个属性,?状态,?连接 结构化机制简化状态图的冗余扩展的状态 自动收货机状态图P896-2嵌套状态/组合状态 电话线的状态图P906-4,42,3.5.1 组合状态子状态,一个状态内嵌套了若干个状态,则称该状态为组合状态。被嵌套的状态称为子状态。子状态本身仍然可以是组合状态。采用组合状态可以简化复杂行为的建模。,43,3.5.1 组合状态子状态,采用组合状态可以简化复杂行为的建模。,发货处理,取消,已发货,取消,网上商店处理送货过程的状态图,网上商店处理送货过程的状态图,网上商店处理送货过程的 组合状态图,46,3.5.1 组合状态子状态,一个组合状态可以有一个被嵌套的子状态图,它代表了该组合状态的一个活动。子状态图中必须有自己的初始和终结状态。对组合状态的一个入转移代表对其子区域内的初始状态的入转移,对子区域内的终结状态的转移代表包含它的组合状态的相应活动的完成。,47,在店内,entry/令store=theStore(本店),购入项目,已出租,归还项目,弃置项目,租出项目,已租出,正常,entry/令store=null(空值),do/每天检查到期时间,超过到期日子,过期,entry/通知会员,租借店软件系统中的租借项目(录像带、游戏等)状态图,租出项目,练习:PC从开启到关机的GUI状态图,顺序子状态并发子状态历史状态,49,3.5.2 顺序子状态,顺序子状态:子状态是一个一个顺序转移的,不是并发存在的。,等待用户输入,登记用户输入,显示用户输入,输入,工作,PC的GUI中“工作”的组合状态,50,活动,?,?,?,?,验卡,拨号,通话,挂断,休闲,继续,维修,结束,维修完成,维修,插卡,取消,IC卡电话机顺序状态示例,51,3.5.3 并发子状态1,并发状态图用于描述一个对象在某个时刻有多个并发的子状态机的情况,并发状态图是这些子状态图的组合。,等待用户输入,登记用户输入,显示用户输入,输入,工作,监视系统时钟,更新界面显示,时钟间隔已过,GUI中“工作”的并发组合状态,52,3.5.3 并发子状态2,网上商店系统中“订货”对象的并发状态图,等待,商品检查,办理装货,付款检查,已付款,取消,发货,拒绝,订货,53,3.5.4 同步,同步可定义为并发工作流的分劈(Fork)与接合(Join)。分劈:是一个源状态分为两个或两个以上的目标状态。接合:是两个以上的源状态连接为一个目标状态。同步在状态图中用一条粗短实线表示,称为同步杆。,源状态,目标状态,目标状态1,目标状态2,源状态1,源状态2,54,3.5.4 并发子状态同步,同步状态 在并发状态图中一个子状态图中的子状态,常常需要与另一个子状态图中的子状态的行为同步。并发子状态之间的同步状态用含“*”的小圆表示(伪状态),放在分隔子状态的虚线上。例:建筑住宅的并发状态图。二个并行子状态图 主体工程施工和水电工程施工,砌筑基础,铺设室内管线,安装水电设备,主体结构,水电准备,安装门框,室内装修,竣工验收,*,*,55,3.5.5 历史状态1,历史状态(History State)代表上次离开组合状态时的最后一个活动子状态。历史状态用含有字母“H”的小园圈表示。每当转移到组合状态中的历史状态时,对象便恢复上次离开该组合状态时最后一个子状态,并执行入口动作。历史状态是一个伪状态的图形标记,只能作为组合状态中的子状态,不能在顶层状态图中使用。,56,3.5.5 历史状态2,停止,播发,选择,暂停,H,恢复,活动,中断,影碟机对象工作的部分状态图,57,3.5.5 历史状态3,等待用户输入,登记用户输入,显示用户输入,输入,工作,PC的GUI中“工作”的历史状态,等待超时,移动鼠标或键盘,H,58,3.6 状态图的应用,状态图为一个对象的生命周期建立模型。状态图可以表示一个对象的历史,引起一个状态向另一个状态转移的事件,以及由于状态的转移而引发的动作。状态图适合描述一个对象穿越多个Use Case的行为,但不适合描述多个对象的协同行为。使用状态图可以对一个对象(类)的行为建模,也可以对一个子系统或整个系统的行为建模。,类,数字手表类及其状态机图,状态机图,3.6 状态图的应用,状态图的作用帮助分析员,设计人员和开发人员理解对象的行为,单个对象如何表现自己的行为,清楚的了解对象应该作什么而不用猜测。P845.2,60,3.6.1使用状态图设计类,类的状态图应该尽量简单。对象的行为依赖它的状态,状态越多,则越难理解。很难正确地为这样的类编写代码,最终的实现方法具有多个条件分支。很难测试该类。“单元测试”时,要测试对象状态图中的每个细节。如果类的行为以一种非常复杂的方式依赖它的状态,则外部编码很难正确使用该类。一个具有多个状态的类,应该考虑是否有好的设计方法。有时一个具有多个状态的类可以被分割成两个或多个具有简单行为的类。,具体步骤如下:1、找出适合用模型描述其行为的类。2、确定对象可能存在的状态。3、确定引起状态转换的事件。4、确定转换进行时对对象执行的相应动作。5、对建模的结果进行相应的精化和细化。,3.6.2 状态图的建立,建立状态图可以参照下列步骤:(1)确定状态机的上下文,可以是一个类、use、子系统或整个系统。(2)选择初始状态和终结状态。(3)发现对象的各种状态。应当仔细找出对问题有意义的对象的状态属性,这些属性具有少量的值且其转换受到限制。状态属性值的组合,结合行为有关的事件和动作,就可以确定具有特定的行为特征的状态。,3.6.2 状态图的建立,建立状态图可以参照下列步骤:(4)确定状态可能发生的转移。分析从一个状态可以转移到哪些状态,对象的哪些 行为可引起状态的转移并找出触发状态转移的事件。(5)把必要的动作加到状态或转移上。(6)利用子状态、分支、历史状态等概念组织 和简化一个复杂的状态机。(7)分析状态的并发和同步情况。,3.6.2 状态图的建立,建立状态图可以参照下列步骤:8)绘制状态图。9)确认每一个状态在某个事件组合之下都可达到。确认没有一个死端状态,对象不能从该状态中转移出来。,3.6.2 状态图的建立,65,项目,活动,任务,资源,PRMS系统的高层项目管理对象类图,*,*,1.*,1,1.*,1,66,PRMS系统总体状态图,备份系统未激活,PRMS未激活,备份系统已激活,PRMS已激活,退出系统,启动系统,启动备份系统/使PRMS备份例程工作,关闭备份系统/使PRMS备份例程不工作,启动PRMS第一次使用,启动PRMS非第一次使用/装载数据,关闭PRMS系统备份系统已激活/备份数据,67,PRMS已激活资源管理项目管理系统管理,休闲,忙,资源管理启动处理,完成处理,休闲,忙,项目管理启动处理,完成处理,休闲,忙,系统管理启动处理,完成处理,PRMS的激活状态的组合状态,68,用于预定的状态图,Waiting,没找到汽车,Notifiable,Needing,Renewal,Collectable,Storable,Concluded,会员取消,会员没有来,会员取车,返回汽车,助手找到汽车,没有汽车回来,会员取消,助手存储,会员再次预约,找不到会员,会员取消,助手已通知会员,会员取消,找不到会员,练习1:图书馆中“图书”的状态图,图书状态有:订购、编目、馆藏、借出。,练习2:手机的状态图,手机对象的各种场景1、呼叫对方成功2、呼叫对方不成功3、被呼叫,接听4、被呼叫,未听见铃声5、被呼叫,拒绝接听,手机状态图,练习3:一个股票订单的状态图,练习4:盘点状态图环球宇宙贸易公司的仓库管理部门固定的时间要执行各仓库的盘点工作,其盘点的方式是使用盘点器(掌上型数据收集器)跟公司的主要数据库服务器利用联机网络在线联接或者无线通讯联接。执行实时联机更新环境,其执行程序说明如下:A、联机环境建立 盘点使用盘点器(掌上型数据收集器)与公司的计算机设备联机,建立实时的在线处理环境。B、仓管人员使用盘点器开始盘点货品(利用盘点器读去产品条形码(Barcode),练习4:盘点状态图C、读入后、盘点器上会触发程序事件,检查读取的产品是否已在产品主文件和库文件中建立(实时联机处理)D、若不存在、则新增该产品的主文件和库存住文件中E、将产品的盘点数量写入数据库主文件的盘存字段中F、继续盘点下一产品G、全部盘完,则关闭盘点器和联机,练习:1、绘制打印机的状态图2、绘制电梯的状态图,作业,P84 5.2,5.4P101 6.2,6.8,