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

下载本文档

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

文档简介

1、1状态图状态图2概述概述w现实世界中的事物都有一个创建、变迁、消亡的生命历程。现实世界中的事物都有一个创建、变迁、消亡的生命历程。n动物经历出生、成长、衰老、死亡的过程;动物经历出生、成长、衰老、死亡的过程;n邮局邮寄物品时要填写邮寄单,邮寄单的状态可能为:发件人申邮局邮寄物品时要填写邮寄单,邮寄单的状态可能为:发件人申请、发件人填写、邮局审查、邮局发送、递交到收件人、收件人请、发件人填写、邮局审查、邮局发送、递交到收件人、收件人用来取物品;用来取物品;w上述状态的变迁是一次性的,还有一类事物的状态变迁是上述状态的变迁是一次性的,还有一类事物的状态变迁是可以循环的。可以循环的。n微波炉、汽车、

2、电脑,可以被重复的使用微波炉、汽车、电脑,可以被重复的使用3状态图状态图通过对现实事物的考察通过对现实事物的考察, ,针对状态有如下结论:针对状态有如下结论:大多数事物在其生命期内经历了不同的状态;大多数事物在其生命期内经历了不同的状态;在任何特定时间在任何特定时间, ,一个事物精确地位于一个状态;一个事物精确地位于一个状态;在现实世界存在着引起状态变化的事件;在现实世界存在着引起状态变化的事件;事物在其状态间按次序转化;事物在其状态间按次序转化;事物从一个状态到另一个状态的转化是即时的事物从一个状态到另一个状态的转化是即时的; ;当事件发生时当事件发生时, ,事物可能需要采取一些动作事物可能

3、需要采取一些动作; ;状态图可对满足上述要求的现实事物的生命历程建模。状态图可对满足上述要求的现实事物的生命历程建模。4状态图状态图在对系统建模时,不需要对所有的对象都进行状态在对系统建模时,不需要对所有的对象都进行状态考察,只需要对考察,只需要对具有明确生命周期阶段具有明确生命周期阶段( (状态状态),),且需且需要通过状态分析对其复杂性进行深刻的认识的要通过状态分析对其复杂性进行深刻的认识的对象对象进行建模!进行建模!必须分清楚必须分清楚哪些状态对系统有重要影响哪些状态对系统有重要影响- -这一点对这一点对于状态图建模至关重要。于状态图建模至关重要。5状态图和顺序图的比较状态图和顺序图的比

4、较w顺序图和状态图是系统顺序图和状态图是系统动态行为动态行为的两个的两个互补互补的视图。的视图。n顺序图顺序图显示了在较短的一段时间(通常是在单个用户显示了在较短的一段时间(通常是在单个用户产生的事务期间),在系统中的对象之间传递的消息,产生的事务期间),在系统中的对象之间传递的消息,因此顺序图必须描述很多对象,即事务中所涉及的那因此顺序图必须描述很多对象,即事务中所涉及的那些对象。些对象。n状态图状态图自始至终在一个单一对象的整个生存期中跟踪自始至终在一个单一对象的整个生存期中跟踪该对象,指定该对象能够接收的所有可能的消息序列,该对象,指定该对象能够接收的所有可能的消息序列,以及它对这些消息

5、的响应。以及它对这些消息的响应。6w活动图与状态图的区别:活动图与状态图的区别:活动图着重表现从一个活动到另一个活动的控制流,是活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。内部处理驱动的流程。状态图着重描述从一个状态到另一个状态的流程,主要状态图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与。有外部事件的参与。 状态图和活动图的比较状态图和活动图的比较7状态建模的意义状态建模的意义在在OOOO建模中,对象的行为是通过其操作来描述的,而整个建模中,对象的行为是通过其操作来描述的,而整个系统的行为主要体现于其中各个对象的行为以及通过消息所系统的行为主要体现于其中

6、各个对象的行为以及通过消息所发生的行为联系。发生的行为联系。然而,对那些状态比较复杂,而且在不同状态下其行为将然而,对那些状态比较复杂,而且在不同状态下其行为将呈现许多变化的对象,如果不分析和辨别它的各种状态,只呈现许多变化的对象,如果不分析和辨别它的各种状态,只是笼统地来认识对象的行为,往往难以把各种情况都考虑得是笼统地来认识对象的行为,往往难以把各种情况都考虑得很周全。很周全。对一些状态复杂的对象进行状态建模,将有助于准确、精对一些状态复杂的对象进行状态建模,将有助于准确、精细地定义对象的属性和操作。细地定义对象的属性和操作。8状态图的定义状态图的定义w状态图描述了一个对象在其生命期内因响

7、应事件所经历的状态图描述了一个对象在其生命期内因响应事件所经历的状态序列以及对这些事件所作出的反应。状态序列以及对这些事件所作出的反应。w状态图中的基本元素状态图中的基本元素状态(状态(statestate)事件(事件(eventevent)转移(转移(transitiontransition)9电灯泡的状态图电灯泡的状态图初始状态初始状态状态状态终止状态终止状态状态转移状态转移事件事件10事件事件w一般意义上,事件是指时间和空间上可以定位的、具有实一般意义上,事件是指时间和空间上可以定位的、具有实际意义、值得注意的所发生的事情际意义、值得注意的所发生的事情. .w在在OOOO中,事件是对事情

8、的规格说明。中,事件是对事情的规格说明。w按照状态图的含义按照状态图的含义, ,事件是指可以引发状态转换的所发生的事件是指可以引发状态转换的所发生的事情事情。w例如例如: :存存/ /取钱取钱, ,启动汽车启动汽车, ,按下按下playplay键等。键等。w格式:格式:事件名(参数列表)事件名(参数列表)n参数格式:参数名:参数类型参数格式:参数名:参数类型n多个参数之间用逗号隔开多个参数之间用逗号隔开11事件事件w在在UMLUML中把事件分为若干种:中把事件分为若干种:w调用事件调用事件n对操作的调用的接收,导致一个调用事件,这样的操作由接收事件对操作的调用的接收,导致一个调用事件,这样的操

9、作由接收事件的对象实现。的对象实现。w时间事件时间事件n指定事件发生后,经过一段时间或到了指定时间,就导致一个时间指定事件发生后,经过一段时间或到了指定时间,就导致一个时间事件。事件。n如如 “ “afterafter(从状态(从状态X X退出后经历了退出后经历了1515秒)秒)”、“afterafter(5 5秒)秒)”、“atat(1 Jan 2011,12:00 UT1 Jan 2011,12:00 UT)”。w改变事件改变事件n用布尔表达式描述的条件为真,就导致了一个改变事件。用布尔表达式描述的条件为真,就导致了一个改变事件。n如如“whenwhen(转速(转速=2000=2000转转

10、/ /秒)秒)”12活动活动空闲空闲after(3分钟分钟)断电断电when(温度温度120度度)at(8:30am)/at(8:30am)/测试测试事件事件13状态状态w状态是事物的一种属性,在一般情况下是指事物所表现出状态是事物的一种属性,在一般情况下是指事物所表现出来的形态。来的形态。w在在UMLUML中,状态定义为对象在其生命周期内满足某一条件、中,状态定义为对象在其生命周期内满足某一条件、进行某种活动或等待某一事件的条件或状况。进行某种活动或等待某一事件的条件或状况。w现实世界中事物的状态,如果与系统责任有关,将在相应现实世界中事物的状态,如果与系统责任有关,将在相应的对象中被抽象地

11、表示为该对象的的对象中被抽象地表示为该对象的属性属性。n例如,现实中的一辆汽车,有停火、点火、行驶、故障等不同的状例如,现实中的一辆汽车,有停火、点火、行驶、故障等不同的状态,一个人有睡眠、兴奋、抑郁等不同状态。态,一个人有睡眠、兴奋、抑郁等不同状态。n如果系统需要辨别这些状态,则可以在相应的类中定义一个名为如果系统需要辨别这些状态,则可以在相应的类中定义一个名为“状态状态”的属性,对象在不同时刻不同的属性值表示该事物处于不的属性,对象在不同时刻不同的属性值表示该事物处于不同的状态。同的状态。14w状态的表示方法状态的表示方法w名称分栏名称分栏n在同一状态图里不应该出现具有相同名称的状态在同一

12、状态图里不应该出现具有相同名称的状态n没有名称的状态是匿名的没有名称的状态是匿名的n同一张图中的匿名状态被认为是互不相同的同一张图中的匿名状态被认为是互不相同的状态状态-表示法表示法名称栏名称栏内部转移栏内部转移栏15w内部转移栏内部转移栏n该分栏标出对象在这个状态中所执行的内部活动。该分栏标出对象在这个状态中所执行的内部活动。n事件名:事件名:触发相应动作的事件的名称。用户可自定义,但触发相应动作的事件的名称。用户可自定义,但entry、exit、do除外,因为除外,因为UML已经为他们规定了特别的含义。已经为他们规定了特别的含义。n监护条件:监护条件:布尔表达式,当事件要触发时,对它求值。

13、如果取值为布尔表达式,当事件要触发时,对它求值。如果取值为真,则触发;否则,不触发。同一个状态下,监护条件不同,相同真,则触发;否则,不触发。同一个状态下,监护条件不同,相同的事件名可出现多次,当事件发生时,根据监护条件判断执行哪些的事件名可出现多次,当事件发生时,根据监护条件判断执行哪些活动。活动。n动作表达式:动作表达式:一些动作组成的动作序列。一些动作组成的动作序列。状态状态-表示法表示法格式:事件名格式:事件名( (参数列表参数列表)监护条件监护条件/动作表达式动作表达式 16状态状态- -表示法表示法cont.cont.wUML预定义了三个标准事件:预定义了三个标准事件:entry、

14、exit、dow1 1、EntryEntry事件事件n指明指明进入状态时进入状态时的动作。的动作。n使用方式:使用方式:entry/entry/进入动作进入动作w2 2、ExitExit事件事件n指明指明退出状态时退出状态时的动作的动作n使用方式:使用方式:exit/exit/退出动作退出动作w3 3、DoDo事件事件n指明指明处于处于当前状态中当前状态中所执行的动作所执行的动作n使用方式:使用方式:do/do/活动活动ndo活动可与其他的动作并发执行。活动可与其他的动作并发执行。17状态状态-表示法表示法-cont.w在一个状态下,可能出现在当前状态下暂不处理,但将推在一个状态下,可能出现在

15、当前状态下暂不处理,但将推迟到该对象的另一个状态下处理的事件,称作迟到该对象的另一个状态下处理的事件,称作延迟事件。延迟事件。w也就是说,在某些情况下,针对一个状态,可以定义一组也就是说,在某些情况下,针对一个状态,可以定义一组在该状态中允许发生但要延迟的事件。在该状态中允许发生但要延迟的事件。w在一个状态下,如果发生了一个延迟事件,它将保留在延在一个状态下,如果发生了一个延迟事件,它将保留在延迟事件队列中而不发挥作用;在适当的后续状态下,就按迟事件队列中而不发挥作用;在适当的后续状态下,就按某种算法,从队列中取出某个事件,让它开始发挥作用。某种算法,从队列中取出某个事件,让它开始发挥作用。w

16、用用defer表明一个延迟事件,格式为:表明一个延迟事件,格式为:事件名事件名/defer18状态状态-表示法表示法cont.输入密码输入密码entry/entry/清空密码清空密码exit/exit/验证密码验证密码digit/digit/处理字符处理字符clear/clear/清空密码清空密码help/help/显示帮助信息显示帮助信息print/deferprint/deferdo/do/抑制回显抑制回显一个对象一个对象“打印服务器打印服务器”正处于状态正处于状态“输入密码输入密码”。延迟事件,例如延迟事件,例如打印管理员正处打印管理员正处于该状态,同时于该状态,同时接收到了一个打接收到

17、了一个打印请求,则把该印请求,则把该请求放入延迟队请求放入延迟队列。列。19状态状态-表示法表示法-cont.实心圆初始状态实心圆初始状态牛眼形状终止状态牛眼形状终止状态“伪状态伪状态”初始状态:状态图的默认开始状态;初始状态:状态图的默认开始状态;终止状态:状态图执行完毕后的结束状态终止状态:状态图执行完毕后的结束状态通常可以有一个初始状态通常可以有一个初始状态, ,多个终止状态多个终止状态20转移转移w状态转移状态转移: :是指两个状态之间的关系是指两个状态之间的关系, ,表示当一个特表示当一个特定事件出现定事件出现, ,且满足一定条件且满足一定条件( (如果有的话如果有的话),),对象就

18、从对象就从源状态进入目标状态源状态进入目标状态, ,并会执行一定动作。并会执行一定动作。 简单说简单说, ,一个事件可能导致对象从一个状态移动一个事件可能导致对象从一个状态移动到另外一个状态到另外一个状态, ,这样的移动称为这样的移动称为转移转移21转移的表示法转移的表示法当事件发生并且监护条件为真时当事件发生并且监护条件为真时, ,将执行动作将执行动作, ,源状态立即进入目标状态源状态立即进入目标状态22转移的表示法转移的表示法cont.事件特征标记事件特征标记: :事件的规格描述事件的规格描述事件名事件名( (参数参数: :参数类型参数类型, ,) )监护条件监护条件: :一个布尔表达式一

19、个布尔表达式, ,当且仅当事件发生且布尔表达式当且仅当事件发生且布尔表达式为真时为真时, ,才触发转移。才触发转移。动作表达式动作表达式: :是当转移激发时执行的操作是当转移激发时执行的操作, ,可使用对象内的操可使用对象内的操作、属性及事件的参数来表达作、属性及事件的参数来表达, ,多个表达式用多个表达式用/ /或或; ;分开。分开。wincrease( )/n:= n+1;m:= m + 1increase( )/n:= n+1;m:= m + 1wadd(nadd(n)/sum:=sum + n)/sum:=sum + n23转移的表示法转移的表示法cont.两个转移示例两个转移示例1

20、1、object_x.highlightobject_x.highlight; ; 调用调用object_xobject_x的的highlighthighlight操作,引发了一个转移,该操作,引发了一个转移,该转移无监护条件,转移时也不执行什么动作。转移无监护条件,转移时也不执行什么动作。2 2、right-mouse-down(location)location in right-mouse-down(location)location in window/object:=pick-object(locationwindow/object:=pick-object(location););

21、 当鼠标落在窗口中且按下右键,引发了一个转移,在转当鼠标落在窗口中且按下右键,引发了一个转移,在转移中把所选中的对象赋给变量移中把所选中的对象赋给变量objectobject。24状态转移的示例状态转移的示例25与状态与状态off相关的转移有两个,其触发事件都是相关的转移有两个,其触发事件都是turnOn,只不过其,只不过其监护条件不同。如果对象收到事件监护条件不同。如果对象收到事件turnOn,那么将判断壶中是否,那么将判断壶中是否有水;如果有水;如果没水没水,则仍然处于,则仍然处于off状态;如果状态;如果有水有水则转为则转为on状态,状态,并执行并执行“烧水烧水”动作动作而与状态而与状态

22、on相关的转移也有两个,如果相关的转移也有两个,如果“水开了水开了”就执行就执行turnOff,关掉开关;如果烧坏了,就进入了终态了关掉开关;如果烧坏了,就进入了终态了 状态转移的示例状态转移的示例26自转移自转移 self-transitionw自转移是源状态和目标状态相同的转移自转移是源状态和目标状态相同的转移, ,但它是一但它是一个状态改变。个状态改变。w当它激活时当它激活时, ,源状态会先退出源状态会先退出, ,然后再进入然后再进入, ,所以所以,退退出动作和进入动作会被激发。出动作和进入动作会被激发。w它不同于内部转移。它不同于内部转移。活动活动空闲空闲after(3分钟分钟)断电断电when(温度温度bal)state=Overdrawn;amt-=bal;break;/其他略其他略;39下面是某租车管理信息系统的介绍:下面是某租车管理信息系统的介绍:该车库中备有若干车辆,每辆车有车号、车

温馨提示

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

评论

0/150

提交评论