面向对象技术-状态图活动图.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
状态图和活动图 5.1 状态图 UML中的状态图( statechart diagram)主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,以及对这些事件所作出的反应。 状态图主要是由状态和状态间转移对象构成的。而事件又是两者之间一个重要的概念。 状态图是UML中对系统的动态行为建模的5个图之一,状态图在检查、调试和描述类的动态行为时非常有用。一般可以用状态机对一个对象(这里所说的对象可以是类的实例、用例的实例或整个系统的实例)的生命周期建模,状态图是用于显示状态机的,重点在于描述状态之间的控制流。 5.1.1 状态图基本概念 状态图中的几个基本概念有:状态、组合状态、子状态、历史状态、转移、事件和动作。 5.1.1.1 状态 状态(state)是指在对象的生命期中的某个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。所有对象都具有状态,状态是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。 一个状态有以下几个部分:状态名(name )、进入/退出动作(entry/exit ation) ,内部转移(internal transition)、子状态(substate)、延迟事件(deferred event)。 状态可以细分为不同的类型,例如初态、终态、中间状态、组合状态、历史状态等。一个状态图只能有一个初态,但终态可以有一个或多个,也可以没有终态。 中间状态包括两个区域:名字域和内部转移域,如图5.2所示。其中内部转移域是可选的。 图5.2:状态的例子 图5.2的状态的名字是Lighting。当进入这个状态时,做开灯(turnOn)动作,离开这个状态时,做关灯(turnOf f)动作,当对象处于这个状态时,灯要闪烁5次(blinkFivetimes ),当电源关闭(pwoerOff)事件出现时,使用自供应电源(powerSupplySelf) e需要注意的是,对象在Lighting状态时,有一个被延迟处理的事件,即当出现自检(seflTest)事件时,对象将延迟响应这个事件。即不在Lighting这个状态中处理这个事件,而是延迟到以后在别的状态中处理这个事件。状态图的符号如下图所示: 5.1.1.2 组合状态和子状态 嵌套在另一个状态中的状态称作子状态(substate),一个含有子状态的状态被称作组合状态(composite state)。如图5. 3所示是组合状态和子状态的例子,其中W是组合状态,E,F是子状态。 图5.3组合状态和子状态 从图5. 3可以看出,组合状态中也可以有初态和终态。转移r是从状态B转移到组合状态W本身,转移P则是从A状态直接转移到组合状态中的子状态E 类似地,可以从组合状态中的子状态直接转移到目标状态(如转移s),也可以从组合状态本身转移到目标状态(如转移v). 子状态之间可分为or关系和and关系两种。or关系说明在某一时刻仅可到达一个子状态,and关系说明组合状态中在某一时刻可同时到达多个子状态。如图5.4所示是子状态之间or关系的例子。 图5.4:子状态之间的or关系 如图5.5所示是子状态之间and关系的例子。其中子状态Forward和Low speed之间,Forward和High speed之间,Backward和Low speed之间、Backward和High speed之间都是and的关系。 图5.5:子状态之间的and关系 5.1.1.3 历史状态 历史状态(history state)是一个伪状态(pseudostate),其目的是记住从组合状态中退出时所处的子状态。当再次进入组合状态时,可直接进人这个子状态,而不是再次从组合状态的初态开始。 在UML中,历史状态用符号或表示,其中是浅(shallow)历史状态的符号,表示只记住最外层组合状态的历史;是深(deep)历史状态的符号,表示可记住任何深度的组合状态的历史。顺便提一下, UML中其他建模元素的符号都是直接采用图形符号,没有采用英文字母,如类采用矩形符号,用例采用椭圆符号等,只有历史状态的表示符号中采用了英文字母。需要注意的是,如果一个组合状态到达了其终态,则会丢失历史状态中的信息,就好像还没有进人过这个组合状态一样。 如图5. 6所示是历史状态的例子。 图5.6历史状态 这是一个对数据进行备份时的状态图,备份时要经过Collecting, Copying,CleaningLlp等几个状态。如果在进行数据备份过程中,有数据查询请求,则可以中断当前的备份工作,然后回到Command状态进行查询操作。查询结束后,可以从Command状态直接到刚才中断时退出的状态接着进行备份操作。(例如,如果刚才是从Co

文档评论(0)

jkf4rty7 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档