
《UML建模语言及其开发工具Rose》由会员分享,可在线阅读,更多相关《UML建模语言及其开发工具Rose(25页珍藏版)》请在文档大全上搜索。
1、第9章状态机图在系统运行的某一时刻,每个对象都处于某种状态中,该状态表示对象执行了前一个活动或动作的结果,它通常由属性值和与其他对象的链接来确定。 例如,火车(对象)已出站(状态),张三(对象)在读博士(状态)等等。在对象的整个生命周期中,它的状态是会发生变化的,状态机用来表示一个对象在其的生命周期中所具有的各种状态和这个对象从一种状态到另一种状态的转换,以及引起状态转换的事件。状态机图,也称状态图,就是用来展示状态机的,重点在于描述状态之间的变化的控制流。状态:指对象在生命周期中的一个条件和或情况,在这种状态中,对象满足某些条件、执行某些活动或等待某些事件。状态类型细分有初态、终态、组合状态
2、、历史状态等。在一个状态机图中只能有一个初态、可以有一个或多个终态,也可以没有终态。一个状态可包含:名称、进入/退出活动、内部转换、子状态和延迟事件等。状态机:UML中的状态机模型是用来展示状态与状态之间转换的图。对象往往具有多个属性,被状态机建模的属性特性: 属性拥有较少的可能取值属性在这些值之间的转移有一定的限制 例 设备管理系统中,类“设备” 的属性使用时间:整型,随时候变动会有很多的取值,对设备管理意义不大。设备状况:枚举型,使用中、维修中、闲置和报废。取值有限,且每个取值的变换都受到发生事件的限制,因此应根据“设备状况”建模。核心元素用圆角矩形表示的状态(初态、终态除外)转换:状态之
3、间的、包含一些文字描述的有向箭头线源状态:受转换影响的状态目标状态:转换完成后对象的状态 (触发)事件:任何能够影响对象的东西都可称为事件,用来为转换定义一个事件,包括调用、改变(或称变化)、信号、时间四类事件。 调用事件:例如,使用某对象的成员方法就是调用事件 改变事件:指依赖属性值的布尔表达式得到满足 信号事件:例如,键盘和鼠标的操作均属于此类事件 时间事件:指满足某一时间表达式的情况的出现InCreditOverdrawnwithdraw( amt ) amtbal / bal- =amt源状态事件动作目标状态监护条件转换监护条件:通常是布尔表达式,决定是否激活转换。要区别变化事件和监护
4、条件动作:转换激活时的操作,它可以是一个赋值语句、简单的算术运算、发送信号、调用操作、创建和销毁地象、读取和设置属性值,甚至是一个包含多个动作的活动。转换:事件(参数)监护条件/动作InCreditOverdrawnwithdraw( amt ) amtbal / bal- =amt源状态事件动作目标状态监护条件转换外部转换:最普通的转换,是一种改变活动状态的转换。它用从源状态到目标状态的箭头表示,其他特征以文字串附加在箭头旁。exit/退出动作当离开某一状态时,执行相应活动退出转换entry/进入动作当进入某一状态时,执行相应活动进入转换事件(参数)监护条件/动作对事件做出响应,并执行一个特
5、定的活动,但并不引起状态变化或进入转换、离开转换内部转换事件(参数)监护条件/动作对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作,如果离开或进入状态将引发进入转换、离开转换外部转换语法描述转换类型进入转换:当进入一个状态时,执行某个动作;退出转换:退出某个状态时,执行某个动作。内部转换:用来处理一些不离开该状态的事件。例:用户在登录界面上单击清空按钮 活动:有时,对象在处于一个状态的同时,还做着某些工作,并一直继续到被某个事件中断。这种情形就是一个正在进行的活动。语法:do/动作 延迟事件:延迟事件是一种特殊的事件,它是指该事件不会触发状态的转换,当对象处于该状态时事件不会丢失,
6、但会被延迟执行。语法:事件/deferLightingentry/ turnOndo/ blinkFivetiomesevent powerOff/ powerSupplySelfexit/ turnOffevent selfTest/ defer活动延迟事件复合状态:包含一个或多个嵌套状态机的状态,它所包含的状态称为子状态。复合状态也称为组合状态。复合状态可以使用与关系分解为并发子状态,或者通过或关系分解为互斥的顺序子状态。 1 1、顺序复合状态图、顺序复合状态图 当复合状态被激活时,只有一个子状态会被激活。2 2、并发复合状态图、并发复合状态图 当进入并发复合状态时,每个并发区中都有一个直
7、接的子状态被激活。3 3、子状态机通信、子状态机通信Exit/ exam=trueexam4、历史状态历史状态代表上次离开复合状态时的最后一个子状态,它用一个圆圈中加上字母H表示。每当转换到历史状态时,对象便恢复到上次离开时的最后一个子状态。ActiveForwardStopPlayBackHForwardStopPlayBackPauseHResumeinterupt状态机图是一个用来描述局部信息的建模工具,它的主要应用有两种:一是对对象生命周期建模,二是对反应型对象建模。1、对对象生命周期建模:使用状态机为目的对象(主要是类和用例的实例)的生命周期建模。主要描述对象能够响应的事件、对这些事
8、件的响以及过去对当前行为的影响 2、对反应型对象建模:这个对象可能处于的稳定状态、从一个状态到另一个状态之间的转换所需的触发事件,以及每个状态改变时发生的动作 步骤:寻找主要的状态,确定状态之间的转换,细化状态内的活动与转换,用复合状态来展开细节订单对象有确认订单、等待到款、等待受理、已受理、已发货、交易成功和取消7种状态,状态间转换如下:确认订单后根据付款方式决定向下一个状态的转换。 付款方式=网银支付,订单对象进入等待到款 状态;用户付款成功后,订单对象由 等待到款 状态转换为 等待受理状态; 付款方式=货到付款,订单对象进入等待受理状态;订单对象处于 等待到款或 等待受理状态时,用户可取
9、消交易,由此订单对象转换为“取消”状态;订单对象处于 等待受理状态,若书店销售管理员受理了订单,则更新订单状态,订单对象转换为已受理状态;订单对象处于 已受理状态,书店发货,销售管理员更新订单状态订单对象转换为已发货状态;用户收到货物,书店确认后交易成功 。细化状态内部的转换和活动使用复合状态创建状态图状态工具栏按钮介绍增加初态和终态添加状态添加转换增加复合状态添加历史状态复习思考题复习思考题1.使用状态机对对象建模时,应在选择什么样的对象属性上建模?2.引发状态转换的事件有哪几种?3.在状态图中,状态可以由哪几部分组成?4.复合状态可分为哪两种类型,区别是什么?并举例说明。5.某电梯从第一层开始启动,他能上下移动。如果电梯在某一层上处于空闲状态,则当超时事件出现时,它就返回到第一层,请为其绘制简单的状态图。6.某销售POS即,它的工作流程是:当客户到收银台后,兽医院注意输入用户购买的商品,输入完后,计算出总金额,然后等待用户付款,确定支付成功后,完成收银,等待下一个用户。请为其绘制出相应的状态图。7.请根据第4章习题6的描述,绘出相应系统的状态图集。8.请根据第4章习题7的描述,绘出相应系统的状态图集。
文档来源:https://www.renrendoc.com/paper/212419803.html
文档标签:UML 建模 语言 及其 开发 工具 Rose