- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
状态图
10.1 状态图的基本概念
状态机
状态图
状态机
状态机是一种行为,它说明对象在其生命周期中响应事件所经历的状态变化序列以及对那些时间的响应。
一般情况下,一个状态机依附于一个类,用来描述这个类的实例的状态及其转换,和对接收到的事件所做出的响应。此外,状态机也可以依附于用例、操作、协作等元素上,描述它们的执行过程。
状态机从对象的初始状态开始,响应事件并执行某些动作,从而引起状态的转换;在新状态下又继续响应事件并执行动作,如此循环进行到对象的终结状态。
状态机
状态机主要由状态、转换、事件、动作和活动5部分组成。
状态表示对象的生命周期中的一种条件或情况。
转换表示两种状态间的一种关系。
事件表示在某一时间与空间下所发生的有意义的事情。
动作表示一个可执行的原子操作,是UML能够表达的最小计算单元
活动表示状态机中的非原子执行,一般由一系列动作组成。
状态图
状态图,UML 2规范后称状态机图,是一个展示状态机的图。
状态图基本上就是一个状态机中元素的投影,这也就意味着状态图包括状态机的所有特征。状态图显示了一个对象如何根据当前状态对不同事件做出反应的动态行为。
状态图主要由状态和转换两种元素组成。
状态图
状态图
状态图用于对系统的动态方面进行建模,适合描述一个对象在其生命周期中的各种状态及状态的转换。
状态图的作用主要体现在以下几点:
状态图描述了状态转换时所需的触发事件和监护条件等因素,有利于开发人员捕捉程序中需要的事件。
状态图清楚地描述了状态之间的转换及其顺序,这样就可以方便地看出事件的执行顺序,状态图的使用节省了大量的描述文字。
清晰的事件顺序有利于开发人员在开发程序时避免出现事件错序的情况。
状态图通过判定可以更好地描述工作流在不同的条件下而出现的分支。
10.2 状态图的组成
简单状态
转换
伪状态
简单状态
状态是状态图的重要组成部分,它描述了一个对象稳定在的某一个持续过程或所处状况,与动态行为的执行所产生的结果。
当对象满足某一状态的条件时,该状态被称为激活的。
在UML中,状态分为简单状态与复合状态。
简单状态就是没有嵌套的状态。
初态和终态是两个特殊的状态,分别表示状态机的入口状态和出口状态。对于一个不含嵌套结构的状态机,只能有一个初态,可以有一个或多个终态甚至没有终态。
简单状态
简单状态
状态一般由状态名称、子状态、入口动作和出口动作、内部执行活动、内部转换和可推迟事件组成。对于简单状态而言,不会有子状态。
状态名称:可以把一个状态与其他状态分别开来,即状态名称必须在当前层次内保持唯一。没有名称的状态被称为匿名状态。
入口动作与出口动作:由其它状态转移到当前状态或从当前状态转移到其它状态时要附带完成的动作。表示为“entry /动作表达式”和“exit /动作表达式”。
简单状态
内部执行活动:当对象进入一个状态时,在执行完入口动作后就开始执行该活动。使用“do/活动表达式”来表示。
内部转换:指的是不导致状态改变的转换。内部转换只有源状态而没有目标状态。表示为“事件名称(事件参数)/活动表达式”。
可推迟事件:不会触发状态的转换,且当对象处于该状态时事件可能会被推迟,但不会丢失。格式为“事件名称/defer”。
转换
转换是两种状态间的一种关系。它指明当特定事件发生或特定条件满足时,处于某状态(源状态)的对象将执行某一动作或活动并进入另一状态(目标状态)。
转换表示为从源状态指向目标状态的实线箭头,并附有转换的标签。转换的标签格式如下:
⌊转换名称:⌋opt 事件名称opt ⌊(参数列表)⌋opt ⌊[监护条件]⌋opt ⌊/效果列表⌋opt
转换——转换名
转换名称是转换的标识符。在实际使用中,为了防止转换名称与转换的触发器或监护条件混淆,一般不必为转换命名。
对于一个转换,除了源状态、目标状态外,还要有事件、监护条件和效果列表等内容。这三个部分的内容对转换不是必需的,在使用时要根据转换所表达的具体语义来添加相应内容。
转换——事件
事件是在某一时间与空间下所发生的有意义的事情,是系统执行中发生的值得建模的事物。
事件一般被状态或转换所发送和接收。在转换中被接收的事件也被称为该转换的触发器或触发事件。
事件包含一个参数列表(可能为空),用于从事件的产生者向其接收者传递信息。
对应于触发器转换,没有明确的触发器的转换成为结束转换或无触发器转换,是在状态的内部活动执行完毕后隐式触发的。
转换——事件
能够在触发器中接收的事件有以下四种:
调用事件:调用事件表示对象接收到一个调用操作的请求。其期待的结果是事件的接收者触发一个转换并执行相应的操作。
改变事件:改变事件的发生依赖于事件中某个表达式所表达的布尔条件。改变事件没有参数,要一直等到条件被满足才能发生。
信号事件:信号由一个对象准确地
文档评论(0)