




已阅读5页,还剩82页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象技术及UML教程 第9章 状态图和活动图 第9章 状态图和活动图 状态图和活动图是用来描述系统的动态行为 特征的,主要用于描述事物的状态变化和处理 过程。 状态图(Statechart Diagram)是附加到类和 用例的状态机图,描述对象响应外部激励时所 经历的各种状态和转换。 活动图(Activity Diagram)是一种描述系统 行为的图,它用于展现参与行为的类所进行的 各种活动的顺序关系。 9.1 状态图概述 状态机视图是一个类对象所可能经历的所有历程的 模型图。状态机由对象的各个状态和连接这些状态 的转换组成。 状态机视图通过对类和对象的生存周期建立模型来 描述对象随时间变化的动态行为。 状态机主要用于描述类的行为。 状态机是一个类的对象所有可能的生命历程的模型 。 状态机是一个对象的局部视图 。 9.1.1 状态机 9.1 状态图概述 状态图主要由起点、终点和状态组成,各状态由转 移连接在一起 。 状态图适合于描述跨越多个用例的单个对象的行为 。 状态图由状态、事件和转换三个主要元素构成。 9.1.2 状态图概述 参加高考 学前 在校 录取 休学 毕业 退学 康复 生病 完成学业 学籍处理 9.1 状态图概述 状态图与顺序图的区别 顺序图不显示对象所有可能的动态行为 ,只显示特定交互场景(一个具体的用 例)中对象的行为。 状态图可以显示对象所有的动态行为。 笔 完整 折断两种状态,是由谁折断 ?只能由顺序图看出 9.2 状态图元素 状态图元素 起点 终点 状态 事件 转换 符合状态和子状态 9.3 状态图图符 常见图符 起点 状态 符合状态 终点 转换 注释体 注释连接 9.2 状态图元素 n事件发生,执行某动作后,状态1转换为状态2 接到订单 记账 9.2 状态图元素 起点表示所有对象的源,起点 不是一个标准的状态,因为在此 状态中对象还不存在。 9.2.1 起点终点 终点表示素有对象生命周期的 结束,终点也不是一个实际的状 态,因为处于该状态的对象已经 消亡。 9.2 状态图元素 初态 start state 显示状态图中状态机执行(execution)的开始 一个状态机只能有一个初态,因为每一个执行都 是从相同的地方开始的。如果一个状态机用多张状 态图描述,则多张图用一个初态, Rose中只允许画 一个初态,其它地方拖动使用 嵌套状态中可以使用新的初态 9.2 状态图元素 终态 end state 表示最后的或者终端状态; 终态数目可以不确定,也可以没有 。 电扇 坏了/没坏,但拆下闲置 9.2 状态图元素 对象的状态始终是由其属性和关联决定 状态图中的状态表示的是给定类对象的 一组属性值 状态图中状态用圆角矩形表示 9.2.2 状态 状态名称 9.2 状态图元素 什么是状态(state) 状态是指在对象的生命周期中满足某些条件、 执行某些活动或等待某些事件时的一个条件或 状况。 万事俱备,只欠东风 学生正在上课 网络购物,订单等待处理 9.2 状态图元素 理解 对象在任何时候都会处于某种状态 中,所有对象都有状态 对象所处的状态决定了它如何响应 所检测到的事件或所接收的消息。 清醒(被批评)生气 醉酒 (被批评)无反应 通常,事件使对象从一个状态转向 另一个状态(即状态的转换) 9.2 状态图元素 nCD Player 需要stop状态吗? 9.2 状态图元素 中间状态的组成(除初态终态外,最常见的 状态) 状态名(name) 入口/出口动作(entry/exit action) 内部转化(internal transition) 子状态(substate) 延迟事件(deferred event) 9.2 状态图元素 状态详细描述 9.2.2 状态 输入密码 entry / pwd.reset() exit / pwd.test() clear / pwd.reset() help / display help print / defer do / suppress echo 状态名称 入口动作 出口动作 内部转换 延迟事件 内部活动 9.2 状态图元素 状态名(name) 是可以把该状态和其他状态区分开的 字符串;状态也可能是匿名的,即没有 名称。 9.2 状态图元素 内部转换(internal transition) 不导致状态改变的转换,不会执行 entry和exit动作 内部转换和自转换的区别: 前门入口,后门出口 不出去,只在内部发生的转换内 部转换 从后门出去,又从前门进来自转 换,自转换会引起entry和exit动作的 执行 9.2 状态图元素 子状态(substate) 嵌套在另外一个状态中的状态 空调:停止、运行状态,运行状态中可 嵌套制 冷、制热、除湿等子状态 延迟事件(deferred event) 是指在该状态下暂不处理,但将推 迟到该对象的另一个状态下排队处 理的事件 9.2 状态图元素 名字域 转换域, 可选 当转入该状态 时,做开灯动 作 当转出该状 态时,做关 灯动作 当处于该状态 时,灯闪烁5 次 当电源关闭 事件发生时 ,用自备电 源 当selfTest事件 发生时,对象 将延迟响应, 到别的状态中 再处理,用 defer这个特定 动作表示延迟 do活动是只 在状态内出 现的活动, 不能附加到 转换上。 内部转换 9.2 状态图元素 “事件”指发生在时间和空间某点上的且 能够引起某些动作执行的事情 事件可以是内部事件也可以是外部事件 四类事件: 调用事件 信号事件 改变事件 时间事件 9.2.3 事件 9.2 状态图元素 信号signer事件 所谓信号,是指由一个对象异步地发送,并由另外一 个对象接收的一个已命名的对象。 信号事件表示对象接收到某个信号。 信号间可以有泛化,信号可以是其他信号的子信号, 它们继承父信号的属性,并可以触发包含信号类型的 转换。 9.2 状态图元素 接收到input信号 这一事件发生 9.2 状态图元素 调用call事件 表示一个操作的调度。请求调用另一个对象 的操作 信号是一个异步事件,而调用事件一般是同 步的。也就是说,当对象调用另一对象的操作 时,控制就从发送者传送到接收者,该事件触 发转换,完成操后,接收者转换到一个新的状 态,控制返还给发送者。 9.2 状态图元素 变化change事件 用关键字When,后面跟布尔表达式 When(temperature120)/alerm() 变化事件的意图是要频繁测试表达式,只要表 达式由假变为真,事件就会发生。 9.2 状态图元素 时间(time)事件 时间事件是指在绝对时间或在某个时间间隔内发生的 事情所引起的事件。 例如到达某一时间或经过了某一时间段。用关键字 When 或After表示。 9.2 状态图元素 对象从一个状态改变成另一个状态称为转 换 。 当状态发生转换时,称转换被激活。 转换激活前,对象为源状态。 激活后,对象为目标状态。 9.2.4 转换 9.2 状态图元素 转换的五要素(注意格式) 源状态 目标状态 触发事件 如果箭头上不带任何事件名,表示是一个自 动转换,当与源状态相关的活动完成时就会 自动触发。 监护条件 动作 9.2 状态图元素 动作 可执行的原子计算 不可中断,其执行时间可忽略不计 当转换被引发时,它对应的动作被执行。它一 般是一个简短的处理过程。 两种特殊动作(只要进入或离开该状态一定会执行 该动作) 入口动作(entry) 进入状态时执行的动作 退出动作(exit) 退出状态时执行的动作 9.2 状态图元素 9.2 状态图元素 9.2 状态图元素 外部转换,自转 换也是外部转换 外部转换 9.2 状态图元素 复合状态是包含有子状态即嵌套状态的 状态 9.2.5 复合状态和子状态 外借 在库中 正常 过期 借书 还书 9.2 状态图元素 组合/嵌套状态 n含有子状态的状态被称为组合或嵌套状态 为何不在组合中 加初态、终态? 可以将任一子状 态作初态 去掉运行这个大的 状态行吗? 行,但效果不好 隐藏子状态,简 化模型复杂度, 增强清晰性 9.2 状态图元素 两种表示方法 顺序子状态 如果一个组成状态的子状态对应的对象 在其生命期内的任何时刻都只能处于一个 子状态,即多个子状态之间是互斥的,不 能同时存在,这种子状态称为顺序子状态 。 并发子状态 有时组合状态有两个或者多个并发的子 状态机,此时称组成状态的子状态为并发 子状态。 9.2 状态图元素 n顺序子状态与并发子状态的区别在于后者在同一层次给 出两个或多个顺序子状态,对象处于同一层次中来自每 个并发子状态的一个时序状态中。 9.2 状态图元素 Complete Lab1Lab2 Laboring 完成实验 完成实验 Term Project 完成项目 Projecting Final Test 通过测试 Testing 9.4 状态图应用 首先需要找到与系统中对象相关的转换事件 通过以下几个方面来寻找转换事件 哪些事件可以创建或删除对象 哪些事件可以定义或修改属性值 哪些事件可以创建或结束与其他对象的关系 哪些事件可以导致对象状态的转换 根据事件找到状态 9.4.1 状态分析 9.4 状态图应用 举例:学生学习过程状态 首先分析事件: 参加高考 录取 生病 康复 完成学业 学籍处理 9.4.1 状态分析 9.4 状态图应用 接下来分析转换事件: 参加高考:高考后进入“学前”状态 录取:学生被录取后变成“在校”的学生 生病:学生长时间生病则进入“休学”状态 康复:学生再回到学校转为“在校”状态 完成学业:学生毕业进入“毕业”状态 学籍处理:学生被学籍处理,进入“退学”状 态 9.4.1 状态分析 9.4 状态图应用 最后得到状态: 学前 在校 退学 毕业 休学 9.4.1 状态分析 9.4 状态图应用 状态图: 9.4.1 状态分析 参加高考 学前 在校 录取 休学 毕业 退学 康复 生病 完成学业 学籍处理 9.4 状态图应用 可以对每个状态进行详细分析 例如前例中的状态“在校”可以细化为 9.4.2 状态图描述 在校 二年级一年级 四年级三年级 升级 升级 升级 降级 降级 降级降级 9.4 状态图应用 步骤 寻找主要的状态 确定状态之间的转换 细化状态内的活动与转换 用组合/嵌套状态来展开细节 航班预定系统(无预定,预定关闭, 部分预定,预定完) 9.4 状态图应用 9.4 状态图应用 细化状态内的活动与转换 9.4 状态图应用 使用复合状态 9.4 状态图应用 n订单处理系统 9.4 状态图应用 9.4 状态图应用 n练习1 n电水壶:on和off两个状态,初态off,烧 坏则转换到终态。trunOn事件发生时,判 断水壶是否有水,若没有水,则仍处于 off状态,若有水,则turnOn事件引起烧 水活动,使状态从off转入on,水开,则 从on转入off状态 9.4 状态图应用 9.4 状态图应用 练习2 进程 就绪 运行 阻塞三个状态 初态就绪; 程序运行结束后终态 就绪状态获得CPU时间片转为运行态;运 行态时间片用完转为就绪态;运行态不满 足所需资源转为阻塞态,阻塞态若资源满 足则回到就绪态 9.4 状态图应用 9.4 状态图应用 图书馆管理系统中的还书业务 还书业务的动态行为是由:空闲(idle )、图书查找(finding)、还书( reversion)、失败(Failure)、归还 成功(Success)5种状态及激活相互转 换的事件。 请根据分析运用UML绘制还书的状态图。 9.5 活动图概述 活动图是用来描述达到一个目标所实施一系 列活动的过程,描述了系统的动态特征。 活动图主要由起点/终点、活动、分支、分岔 /汇合、泳道等元素组成。 示例:学生作业处理过程 布置作业 下发作业 做作业 提交作业 批改作业 9.5 活动图概述 Activity Diagram 用于描述活动流程的图形称为活动图 和结构化方法中的工具程序流程图作用基本 一致。 是一种特殊的状态图。 与状态图的区别 活动图着重表现从一个活动到另一个活动的 控制流,是内部处理驱动的流程; 状态图着重描述从一个状态到另一个状态的 流程,主要有外部事件的参与。 9.5 活动图概述 活动图可以用作以下目的: 描述一个操作执行过程中所完成的工作(动作 ),这是活动图最常见的用途。 描述对象内部的工作。 显示如何执行一组相关的动作,以及这些动作 如何影响它们周围的对象。 显示用例的实例如何执行动作以及如何改变对 象状态。 说明一次业务流程中的人(参与者)和对象是 如何工作的。 9.5 活动图概述 9.6 活动图元素 主要元素: 起点和终点 活动 转移 接收信号和发送信号 决策点和汇合点 分叉和汇合 控制流终点 泳道 9.7 活动图图符 活动名称 起点 终点 活动 判断条件 同步条接收信号 发送信号 泳道 转移 注释体 注释连接 9.6 活动图元素 活动图有一个起点一个终点 起点用黑圆点表示 终点用黑圆点外加一个圈表示 9.6.1 起点和终点 起点终点 9.6 活动图元素 活动图中,可以包含活动状态也可以包含动 作状态 活动图中,活动使用带圆边的矩形表示 9.6.2 活动 活动名称 活动 9.6 活动图元素 动作状态 对象的动作状态是活动图中最小单位的构造 块,表示原子动作。 动作状态有三个特性: 原子性; 不可中断性: 瞬时性: 9.6 活动图元素 活动状态 表示的是可以分割的动作 特点是:它可以被分解成若干活动状态或动作 状态,它能够被中断,占有有限的时间。 活动状态可以理解为一个组合,它的控制流由 其他活动状态或动作状态组成。 动作状态和活动状态使用带圆端的方框表示 9.6 活动图元素 转移使用带箭头的线段表示 连接活动、起点、终点、同步条、判断等 9.6.3 转移 9.6 活动图元素 接收信号表示当前需要等待某个事件的发生 发送信号表示把某个信号发送给一个等待接 收的活动 9.6.4 接收信号和发送信号 接收信号 发送信号 9.6 活动图元素 决策点用来描述具有条件的行为 验证打印机链接活动后是一个决策点 9.6.5 决策点和汇合点 验证打印机连接 打印 屏幕显示“未连接 打印机” 连接 否则 9.6 活动图元素 汇合点与决策点相反,它拥有多个输入转换 ,却只有一个输出转换 汇合点的作用是合并控制流 9.6.5 决策点和汇合点 9.6 活动图元素 活动图中可以包含 并发线程的分岔控 制 并行的行为可以用 分岔和汇合来描述 分岔和汇合在活动 图中必须匹配 9.6.6 分岔和汇合 获得订单 安排付款调货 交货 9.6 活动图元素 分叉表示把一个单独的控制流分成两个或多个并 发的控制流。一个分叉可以有一个进入转移和两 个或多个输出转移,每一个转移表示一个独立的 控制流。 汇合表示两个或多个并发控制流的同步发生,一 个汇合可以有两个或多个进入转移和一个输出转 移。 分叉和汇合在图形上都使用同步条来表示,同步 条通常用一条粗的水平线表示 9.6 活动图元素 n示例:描述打电话活动中的并发事件 9.6 活动图元素 泳道是为组织活动图而对活动进行的分组, 用来划分状态图的状态 每个泳道代表整个活动的部分高级职责 整个活动可能最后由一到多个泳道实现 使用泳道可以把活动按照功能或所属对象的 不同来进行组织。 属于一个对象的所有活动都放在同一个泳道 内,对象的名字放在泳道的顶部。 9.6.7 泳道 9.6 活动图元素 泳道(swimlane) “泳道”技术,是将一个活动图中的活动状态 进行分组,每一组表示一个特定的类、人或部门 ,他们负责完成组内的活动。 “泳道”技术来描述每个活动是由哪个对象负 责完成 UML中,每个组被称为一个泳道,用一条垂直的 实线与邻居分开 每个活动都明确属于一个泳道,不可以跨越泳 道,而转移则可以跨越泳道 9.6 活动图元素 9.6.7 泳道 货 调配货物 获得订单 判断需求 安排付款 交付货物 销 售配 货 9.6 活动图元素 9.6 活动图元素 对象流(object stream) 对象流是动作状态或活动状态与对象间的依赖关 系。 对象流可用于对下列关系建模: 动作状态对对象的使用 动作状态对对象的影响。 在UML中,使用矩形表示对象 , 对象和动作之间 使用带箭头的虚线连接,带箭头的虚线表示对象 流。 工具栏customize 9.6 活动图元素 n用活动图描述客户在商店中购买 物品的过程。(使用对象流技术 描述购物这个动态过程中系统内 对象的状态变化 ) 9.6 活动图元素 9.8 活动图应用 构建活动图首先需要找到业务过程中的活动 ,可以通过以下的问题来帮助寻找业务过程 中的活动: 该业务过程需要完成哪些工作步骤。 每个参与者都将执行哪些操作。 有没有哪些事件启动了哪些工作步骤。 9.8.1 过程分析 9.8 活动图应用 举例-旅客登机过程: 领取登机牌 办理行李托运 通过安检 旅客登机 行李装载 飞机起飞 9.8.1 过程分析 9.8 活动图应用 得到了业务过程中的主要活动后,就需要进 一步考虑这些活动的执行顺序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论