- 1、本文档共44页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章-状态图
状态图 概述 现实世界中的事物都有一个创建、变迁、消亡的生命历程。 动物经历出生、成长、衰老、死亡的过程; 邮局邮寄物品时要填写邮寄单,邮寄单的状态可能为:发件人申请、发件人填写、邮局审查、邮局发送、递交到收件人、收件人用来取物品; 上述状态的变迁是一次性的,还有一类事物的状态变迁是可以循环的。 微波炉、汽车、电脑,可以被重复的使用 状态图 状态图 状态图和顺序图的比较 顺序图和状态图是系统动态行为的两个互补的视图。 顺序图显示了在较短的一段时间(通常是在单个用户产生的事务期间),在系统中的对象之间传递的消息,因此顺序图必须描述很多对象,即事务中所涉及的那些对象。 状态图自始至终在一个单一对象的整个生存期中跟踪该对象,指定该对象能够接收的所有可能的消息序列,以及它对这些消息的响应。 状态图和活动图的比较 活动图与状态图的区别: 活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。 状态图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与。 状态建模的意义 状态图的定义 状态图描述了一个对象在其生命期内因响应事件所经历的状态序列以及对这些事件所作出的反应。 状态图中的基本元素 电灯泡的状态图 事件 一般意义上,事件是指时间和空间上可以定位的、具有实际意义、值得注意的所发生的事情. 在OO中,事件是对事情的规格说明。 按照状态图的含义,事件是指可以引发状态转换的所发生的事情。 例如:存/取钱,启动汽车,按下play键等。 格式:事件名(参数列表) 参数格式:参数名:参数类型 多个参数之间用逗号隔开 事件 在UML中把事件分为若干种: 调用事件 对操作的调用的接收,导致一个调用事件,这样的操作由接收事件的对象实现。 时间事件 指定事件发生后,经过一段时间或到了指定时间,就导致一个时间事件。 如 “after(从状态X退出后经历了15秒)”、“after(5秒)”、“at(1 Jan 2011,12:00 UT)”。 改变事件 用布尔表达式描述的条件为真,就导致了一个改变事件。 如“when(转速=2000转/秒)” 事件 状态 状态是事物的一种属性,在一般情况下是指事物所表现出来的形态。 在UML中,状态定义为对象在其生命周期内满足某一条件、进行某种活动或等待某一事件的条件或状况。 现实世界中事物的状态,如果与系统责任有关,将在相应的对象中被抽象地表示为该对象的属性。 例如,现实中的一辆汽车,有停火、点火、行驶、故障等不同的状态,一个人有睡眠、兴奋、抑郁等不同状态。 如果系统需要辨别这些状态,则可以在相应的类中定义一个名为“状态”的属性,对象在不同时刻不同的属性值表示该事物处于不同的状态。 状态-表示法 状态的表示方法 名称分栏 在同一状态图里不应该出现具有相同名称的状态 没有名称的状态是匿名的 同一张图中的匿名状态被认为是互不相同的 状态-表示法 内部转移栏 该分栏标出对象在这个状态中所执行的内部活动。 事件名:触发相应动作的事件的名称。用户可自定义,但entry、exit、do除外,因为UML已经为他们规定了特别的含义。 监护条件:布尔表达式,当事件要触发时,对它求值。如果取值为真,则触发;否则,不触发。同一个状态下,监护条件不同,相同的事件名可出现多次,当事件发生时,根据监护条件判断执行哪些活动。 动作表达式:一些动作组成的动作序列。 状态-表示法-cont. UML预定义了三个标准事件:entry、exit、do 1、Entry事件 指明进入状态时的动作。 使用方式:entry/进入动作 2、Exit事件 指明退出状态时的动作 使用方式:exit/退出动作 3、Do事件 指明处于当前状态中所执行的动作 使用方式:do/活动 do活动可与其他的动作并发执行。 状态-表示法-cont. 在一个状态下,可能出现在当前状态下暂不处理,但将推迟到该对象的另一个状态下处理的事件,称作延迟事件。 也就是说,在某些情况下,针对一个状态,可以定义一组在该状态中允许发生但要延迟的事件。 在一个状态下,如果发生了一个延迟事件,它将保留在延迟事件队列中而不发挥作用;在适当的后续状态下,就按某种算法,从队列中取出某个事件,让它开始发挥作用。 用defer表明一个延迟事件,格式为:事件名/defer 状态-表示法-cont. 状态-表示法-cont. 转移 状态转移:是指两个状态之间的关系,表示当一个特定事件出现,且满足一定条件(如果有的话),对象就从源状态进入目标状态,并会执行一定动作。 转移的表示法 转移的表示法-cont. 事件特征标记:事件的规格描述 事件名(参数:参数类型,…) 监护条件:一个布尔表达式,当且仅当事件发生且布尔表达式为真时,才触发转移。 动
文档评论(0)