第五讲——对高级行为建模.ppt_第1页
第五讲——对高级行为建模.ppt_第2页
第五讲——对高级行为建模.ppt_第3页
第五讲——对高级行为建模.ppt_第4页
第五讲——对高级行为建模.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、对高级行为建模,行为建模状态图,什么是状态图 如何使用事件、动作和保护条件 如何对子状态、历史状态和连接点建模,什么是状态图,一个普遍的现象是随着时间的流逝,周围的对象都要经历变化 任何计算机系统也是如此。当系统与用户(也可能是其他系统)交互的时候,组成系统的对象为了适应交互需要经历必要的变化 如果要对系统建立模型,那么模型中必须要反映出这种变化,一种表征系统变化的方法可以说成是对象改变了自己的状态(state)以响应事件和时间的流逝 UML状态图(state diagram)能够展示这种变化。它描述了一个对象所处的可能状态以及状态之间的转换,并给出了状态变化序列的起点和终点。 状态图,又叫状

2、态机或状态表,只是对单个对象建立模型,状态名的首字母大写 圆角矩形代表一个状态,状态间带箭头的实线代表状态的迁移(转换) 箭头指向目标状态 图中的实心圆代表状态转换的起点,公牛眼形圆圈代表终点。 三种状态类型 简单状态:不包含任何其他状态 组成状态:在分离的区域中包含一个或多个状态机 子状态机状态:包含带有入口和出口的可重用状态机。包含状态被称为子状态机状态,被包含的状态机被称为子状态机,在状态图标中增加细节,可以把状态图标分成两个区域 最上面的区域保存状态名(不管分不分区都得有状态名) 下面的区域保存在该状态中发生的活动 3个常用的活动是 入口动作(entry),即系统进入该状态时要发生的动

3、作 出口动作(exit),即系统离开该状态时要发生的动作 动作(do)是系统处于该状态时要发生的动作。还可以增加其他的动作或事件,增加转换的细节:事件和动作,状态转换线添加一些细节。可以指明引起转换发生的事件(触发器事件,trigger event)和引起状态变化所需执行的计算(动作,action) 添加的事件和动作写在转换线上,触发器事件和动作名之间用反斜杠隔开 有时候一个事件会引起没有相关动作的状态转换,或者有时一个转换是由于某个状态完成了它的活动所引起(无触发器转换或自动转换或完成转换),增加转换的细节:保护条件,保护条件(guard condition)当满足这个条件时,转换才能发生,

4、组成状态,一个状态可以被分解成多个状态,从而更详细地描述对象内部的转换 GUI处于Working状态时仍然要经历变化,即状态的变化 组成状态包含一个或多个区域,最简单的组成状态只包含一个区域,在区域里是两个或多于两个的状态 因为这些状态存在于单个状态之中,因此它们被称为子状态(substate)。状态可以任意嵌套,区域,组成状态可以拥有任意数量的区域,每个区域包含一个状态机,区域与区域之间的状态是互斥 如果组成状态包含两个或更多的区域,那么就说该状态是正交的,并且isOrthogonal属性被设置为true 如果每个区域的操作都是互相独立的,那么就可以并发地运行同一状态内的各个区域,子状态以两

5、种形式出现: 顺序子状态(sequential substate) 并发子状态(concurrent substate),顺序子状态,顺序子状态按照顺序一个接着一个出现 重新分析前面提到的子状态GUI的Working状态,可以得到以下的状态序列: Awaiting User Input(等待用户输入,简单记为Awaiting状态) Registering User Input(登记用户输入,简单记为Registering状态) Visualizing User Input(显示用户输入,简单记为Visualizing状态),并发子状态,转换和转换类型,伪状态为管理组成状态的复杂转换提供条件 分

6、叉 结合 汇合 选择 4种伪状态由枚举类型PseudostateKind定 义,并可以分配给Pseudostate的实例,分叉伪状态,分叉伪状态应用于组成状态中不同区域状态之间的转换,它将单独的一个转换分成多个路径,每个路径指向不同区域的不同状态,分叉的结果是导致不同区域中的行为并发执行,分叉伪状态,分叉转换也可以来自组成状态内部的一个区域,结合伪状态,结合伪状态指的是有很多转换进来,但只有一个转换出去 在结合点,状态机要等待所有的输入转换都到达以后才可以触发新的转换,结合伪状态,同样的技术也适用于转换到的状态在组成状态之外,汇合伪状态和选择伪状态,选择伪状态的标准表示方法是菱形 有两种方法来

7、表示选择伪状态 左边的表示方法将布尔表达式置于各个分支之上 右边的表示方法则将布尔表达式的共同元素置于菱形之内,同时将表达式的不同部分置于各个分支上,汇合提供了将多个转换指向同一个目标的方法,如果所有转换到同一目标状态的状态是由相同的事件触发的,并且没有各自的约束或事件动作,那么可以将这些状态表示成状态列表,即表示一组状态的状态,它列出了所包含的各个状态的名称,终止状态,当一个类元被终止时,该类元的所有状态机都会被终止 终止伪状态在状态机图上使用大写的X表示,进入和退出状态或区域,任何区域都可以拥有初始状态和终止状态,但这并非是必需 每个区域都有一个边界和一组自己所包含的状态与转换 有很多方法

8、可以进入一个状态 默认的入口 明确定义的入口 浅历史入口 深历史入口,默认入口,默认入口指的是输入的转换停在组成状态的边界上,这表明组成状态会决定如何处理该转换 这种方法为状态的使用提供了一定程度的封装性,进入带有多个区域的组成状态与进入带有一个区域的组成状态的方法基本相同,明确定义的入口,明确定义的入口指的是转换的目标是组成状态内的某个特定的子状态,如果存在嵌套状态,那么该入口规则也适用于所有的嵌套状态 混合使用默认入口和明确定义的入口也是合法的,历史状态,UML提供了一个符号,这个符号能够用来表示当对象转换出该组成状态后,该组成状态能够记住它的活动子状态 这个符号是一个小圆圈中字母“H”,

9、并用一条实线连接到被记忆的子状态,箭头指向子状态 当一个历史状态记忆了各个嵌套层次的子状态时,这个历史状态就是深度(deep)。深的历史状态用圆圈中的“H*”来表示 如果它只记忆了最高层次嵌入的子状态,那么就说这个历史状态是浅的(shallow),离开组成状态也有很多种方法 当一个区域完成它所有的活动后,会触发一个完成事件 对于非正交组成状态,这意味着触发一个完成转换 对于正交状态(即拥有多个区域的组成状态),在每个区域都执行完毕后才会触发完成转换,子状态机状态,当一个状态机或状态机的一部分被其他上下文引用的时候,它被定义为可重用状态机,即子状态机 状态机图:描述行为的状态和转换的最高层视图。

10、状态机则泛指一切表示状态转换的图形,它被用来描述各个区域中嵌套的状态转换图形 子状态机:可重用的状态机。每个状态机的细节在其状态机图中定义,并在其他状态中被引用 子状态机状态:包含子状态机的状态,在内部转换分栏中使用include语句表示 从语义上说,子状态机状态和组成状态是一样的,名称的不同只说明子状态机的用法不同,子状态机可以具有入口动作、出口动作、活动、初始状态以及终止状态 不同的是,子状态机状态可以提供入口点和出口点 对子状态的访问必须通过连接参考点来完成。连接参考点提供了和子状态机关联的入口和出口,必须通过它们才可以进入或退出子状态机 入口是和连接参考点关联的初始状态,一个连接参考点可以和多个入口关联。出口是和连接参考点关联的一个或多个终止状态,状态图的重要性,UML状态图提供了多种符号表示法,并且包括了许多建模思想如何对单个对象所经历的变化建模 它能帮助分析员、设计员和开发人员理解系统中对象的行为,因此状态图是很

温馨提示

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

评论

0/150

提交评论