- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
I 引 言 根据当前事件,以及对以前事件的响应的结果决定对当前事件的响应的软件对象的动态行为,称为是事件驱动的。 在UML里,最适合于描述这类动态行为的建模手段,就是状态机。 状态机 用状态:记录以前的动态行为的结果 用转移(迁移):描述软件对象对外来事件的响应以及响应的状态的变化。 第一节 状态机(状态)图的概念 一、状态机定义 表示对象状态与状态转化,它是一个类的对象的所有可能的生命历程的模型。主要用来捕捉外部事件引起的变化,它将一个对象与其外部世界隔离开来独立考察其行为。 从该模型对象的开始状态起,响应事件,执行某些动作,引起转移到新状态,在新状态下响应事件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。 状态机的组成: 状态、转移、事件、活动、动作等。 二、状态机图的定义 状态机图展示了一个对象在其生命期内所经历的各种状态,以及引起状态变化的事件。 三、状态机与状态机图 二、状态、事件、动作 问题:对象任何一个新的属性值组合就是一个新状态,状态空间太大 如:对于“汽车”对象,可能有“型号”、“车况”、“使用情况”、“公里数”、“汽油剩余量”等属性。 不应取“公里数”或“汽油剩余量”作为状态属性,可取“使用情况”作为属性状态。则,“汽车”对象的有限个不同状态:“使用”、“停车”、“维修”、“闲置”、“报废”等。 3、动作的概念 动作说明了当事件发生时发生了什么行为。动作可由对象的操作和属性构成。动作是一个可执行的计算,它能引起一个状态变化。 第二节 状态机图的符号 一、状态 状态标识 状态表示的是一个对象或交互过程中的一个特定阶段: 状态对应一段有限的时间 状态对应于一组对象属性的值。 状态的图符用一个圆角的矩形框表示。 一个完整的状态包括三个组成部分,它们是: 状态名 状态变量 活动 (1)、状态名 由一个字符串构成,用以标识不同的状态。 状态名字可以省略,称为匿名状态。 (2)、状态变量 状态图所描述的类的属性,也可以是临时变量。 (3)、活动 状态还可以添加活动。活动是在该状态时要执行的动作。其格式: [Entry|exit|do]/动作 列出了在该状态时要执行的事件和动作,是任选项,活动有三个标准活动: entry事件:指明在进入该状态时的特定动作(入口动作); exit事件:指明退出该状态时的特定动作(出口动作); do事件:指明在该状态中执行的动作; 二、转移 内部转移 状态的内部转移(迁移)是不会引起状态变化的转移(迁移),内部转换用来处理一些不离开该状态的事件。它有一个源状态但是没有目标状态,它转换后的状态仍旧是它本身。内部转换自始至终都不离开源状态,此转移(迁移)的触发不会导致状态的入口/出口动作的被执行。因此,当对象处于某个状态,进行一些动作时,我们可以把这些动作看成是内部转换。 转移的类型[2] ① 自身转移: 源状态和目标状态为同一状态的转移。 转移发生时执行的顺序: 首先当前状态下正在执行的do动作全部停止, 然后执行退出动作, 接着执行引起转移事件的相关动作, 紧接着回到该状态,开始执行该状态的入口动作和其他动作 不会改变对象的状态;调用状态的入口和出口动作。 转移的类型[3] ② 自动转移: 一个 状态根据本状态的有关情况,自动触发进入目标状态,在转移上没有事件。 转移条件(触发条件) 状态转移触发表示当一个特定的事件发生或某些条件满足时,一个源状态下的对象将完成一些特定的动作,称为转移条件。 描述状态转态的形式化语法格式如下: 事件[条件]/动作表达式 发送子句 事件:指已发生并可能引发某种活动的一件事; [条件]:由方括号围起的关系或逻辑表达式; 动作表达式:一个触发状态迁移时可执行的过程表达式。 发送子句:动作的一个特例,说明调用的事件名(操作)是哪个对象的。 简单状态转移的表达 简单状态变化指的是同一个对象的两个状态之间的变化。它表示一个对象从一个状态进入了另一个状态,表示当一个条件满足时要发生的一个事件。整个事件可以有参数。这些参数可能用于描述这个变化过程的活动之中,也可能用于下一个状态的初始活动。 变化是用一根带有实心箭头的直线来表示的。该直线可以有一个用字符串表示的标识: event-signature ‘[’guard-condition ‘]’ ‘/’action-expression ‘^’ send-clause 其中的事件签名 (event-signature) 描述了一个事件以及它的参数:event-name ‘(‘ parameter ‘,’…’)’ 简单状态变化的表达 发送说明
文档评论(0)