UML状态图与活动图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.
状态图通常作为对类图的补充
软件开发生命周期与统一建模语言
8.3 状态图建模技术
静态模型 动态模型
建模步骤: ① 找出适合用模型描述其行为的类。 ② 确定对象可能存在的状态。 ③ 确定引起状态转换的事件。 ④ 确定转换进行时对象执行的相应动作。 ⑤ 对建模的结果进行相应的精化和细化。
软件开发生命周期与统一建模语言
静态模型 动态模型
Βιβλιοθήκη Baidu
中间状态的组成
状态名(name) 进入/退出动作(entry/exit action) 内部转移(internal transition)
- 不导致状态改变的转换,不会执行entry和exit动作
子状态(substate)
嵌套在另外一个状态中的状态
延迟事件(deferred event)
一个状态机只能有一个初态,因为每一个执行都是从相同的 地方开始。如果一个状态机是由多个状态图描述,则多张图 用同一个初态; 嵌套状态中可以使用新的初态;
终态(end state)
表示一个最后的或者终端状态; 终态的数目可以是不确定的(可以不用画出来)
软件开发生命周期与统一建模语言
2、中间状态组成
软件开发生命周期与统一建模语言
动作流(transition)
静态模型 动态模型
所有动作状态之间的转换流称之为动作流。 与状态图的转换相同,活动图的转换也用带箭头的 直线表示,箭头的方向指向转入的方向。
软件开发生命周期与统一建模语言
决策(decision)
静态模型 动态模型
用于表示对象类所具有的条件行为(警戒条件 ); 条件行为用分支和合并表达; 一个分支有一个入转换和两个带条件的出转换,出 转换的条件应当是互斥的,这样可以保证只有一条 出转换能够被触发; 一个合并有两个带条件的入转换和一个出转换,合 并表示从对应的分支开始的条件行为的结束;
活动图用来建模某个过程的活动序列,以活动为中心;
状态图用来建模对象生命周期中的所有阶段,以状态为中心;
软件开发生命周期与统一建模语言
8.2 活动图
静态模型 动态模型
存款
软件开发生命周期与统一建模语言
8.2.1 基本概念
静态模型 动态模型
活动 决策 同步 泳道 对象流和对象
静态模型 动态模型
第8章 状态图与活动图
软件开发生命周期与统一建模语言
回顾
静态模型 动态模型
协作图的定义 协作图的建模过程
软件开发生命周期与统一建模语言
学习目标
静态模型 动态模型
状态图的定义
状态图的建模
活动图的建模
软件开发生命周期与统一建模语言
8.1 状态图(Statechart Diagram)
建模主事件流
静态模型 动态模型
软件开发生命周期与统一建模语言
建模扩展事件流
静态模型 动态模型
软件开发生命周期与统一建模语言
划分游泳道后的活动图
静态模型 动态模型
软件开发生命周期与统一建模语言
8.6 活动图实例
静态模型 动态模型
1、图书馆系统管理员通过图书管理系统对读者的 借阅进行管理(查询、添加、删除和更新借阅信 息),请画出系统管理员维护借阅者账户信息的活 动图。
软件开发生命周期与统一建模语言
泳道(swimlane)
静态模型 动态模型
软件开发生命周期与统一建模语言
对象流(objectFlow)
静态模型 动态模型
对象流是动作状态或者活动状态与对象之间的依赖 关系,表示动作使用对象或者动作对对象的影响。 对象流中的对象特点:
① 一个对象可以由多个动作操纵; ② 一个动作输出的对象可以作为另一个动作输入的对象; ③ 在活动图中,同一个对象可以多次出现,它的每一次出现表 明该对象正处于对象生存期的不同时间点;
软件开发生命周期与统一建模语言
8.1.1 基本概念
静态模型 动态模型
CD播放器(正常状态下)
软件开发生命周期与统一建模语言
动作
静态模型 动态模型
Action
可执行的原子计算; 不可中断,其执行时间可忽略不计;
两种特殊动作(只要进入或离开状态都会执行该动作): 进入动作(entry action)
- 进入状态时执行的动作
- Entry/setMode(onTrack)
退出动作(exit action)
- 退出状态时执行的动作
- Exit/setMode(offTrack)
软件开发生命周期与统一建模语言
转移
静态模型 动态模型
Transition
两个状态之间的一种关系,表示对象在第一个状态 执行一定的动作,并在某个特定事件发生而且满足 某个条件时进入第二个状态。
信号事件
调用事件
变化事件
时间事件
软件开发生命周期与统一建模语言
8.1.2 状态的类型
静态模型 动态模型
几种状态类型:
-
初态
终态
-
中间状态
组合状态
-
历史状态
软件开发生命周期与统一建模语言
1、初态与终态
静态模型 动态模型
初态(start state)
显示状态图中状态机的执行(execution)的开始;
静态模型 动态模型
状态机
用于描述一个对象在其生存期间的动态行为,响应事件所经 历的状态序列以及伴随的动作。
状态图
用于描述状态机,一个状态机可以用多个状态图描述。
软件开发生命周期与统一建模语言
静态模型 动态模型
状态图与交互图的区别
交互图为了显示某个特定的用例某个特定的场景 下对象发生了哪些交互
格式:
事件(参数)[条件] / 动作
help[length(password)< >6] / verifyPassword.help()
软件开发生命周期与统一建模语言
事件
静态模型 动态模型
Event
是对一个时间和空间上占有一定位置的有意义的事情的规格 说明;
事件触发状态的转移;
四类主要事件
8.4 状态图实例
静态模型 动态模型
书的状态图:
软件开发生命周期与统一建模语言
8.4 状态图实例
静态模型 动态模型
借阅证的状态图:
软件开发生命周期与统一建模语言
8.2 活动图
静态模型 动态模型
Activity Diagram
提供了建模业务工作流的一种方法;
是一种特殊的状态图;
同状态图的区别:
延迟到下一状态中处理的事件
软件开发生命周期与统一建模语言
3、组合/嵌套状态
静态模型 动态模型
含有子状态的状态被称为组合状态
状态名(name)
进入/退出动作(entry/exit action)
软件开发生命周期与统一建模语言
3、组合/嵌套状态
静态模型 动态模型
两种类型:
与子状态
或子状态
软件开发生命周期与统一建模语言
活动
静态模型 动态模型
活动状态
用于表达状态机中的一个非原子的运行; 可以给出入口动作和出口动作等信息;
软件开发生命周期与统一建模语言
活动
静态模型 动态模型
理解:
① ② ③ ④ 分解成其他子活动或动作状态; 可以被中断; 活动状态的内部活动可以用另一个活动图来表示; 和动作状态不同,活动状态可以有入口动作和出口 动作,也可以有内部转移; ⑤ 动作状态是活动状态的一个特例,如果某个活动状 态只包括一个动作,那么它就是一个动作状态。
静态模型 动态模型
软件开发生命周期与统一建模语言
泳道(swimlane)
静态模型 动态模型
对活动图中的活动分组,并把每一组指定给负责这组活动的 业务组织即对象; 泳道区分了负责活动的对象,明确地表示了哪些活动是由哪 些对象进行的; 每个活动只能明确地属于一个泳道; 泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并 发进行,动作流和对象流允许穿越分隔线。
软件开发生命周期与统一建模语言
8.5 实例
静态模型 动态模型
软件开发生命周期与统一建模语言
8.5 实例 ——“餐馆订餐”系统的用例图
静态模型
软件开发生命周期与统一建模语言
“记录预约”用例的事件路径如下:
静态模型 动态模型
1.接待员输入要预约的日期 2.系统显示该日的预约 3.有一张合适的餐桌可以使用,接待员输入顾客的姓名和 电话号码、预约的时间、用餐人数和餐桌号
的目的;
理解: 汇合代表两个或多个并发控制流同步发生,当所有的控制
流都达到汇合点后,控制才能继续往下进行。每个汇合可以 有两个或多个输入转换和一个输出转换;
分叉可以用来描述并发线程,每个分叉可以有一个输入转
换和两个或多个输出转换,每个转换都可以是独立的控制流;
软件开发生命周期与统一建模语言
同步(synchronization)
软件开发生命周期与统一建模语言
活动
静态模型 动态模型
动作状态
指执行原子的、不可中断的动作; 并在此动作完成后通过完成转换转向另一个状态的状态; 动作状态使用平滑的圆角矩形表示,动作状态所表示的动作 写在圆角矩形内部。
软件开发生命周期与统一建模语言
活动
静态模型 动态模型
理解:
① ② ③ ④ 动作状态是原子的; 不可中断的状态; 瞬时的行为,它所占用的处理事件极短; 动作状态和状态图中的状态不同,它不能有入口动 作和出口动作,更不能有内部转移; ⑤ 在一张活动图中,动作状态允许多处出现。
3a) 没有合适的餐桌可以使用 3a1) 用例终止
4.系统记录并显示该预约
4a) 输入的预约人数多于餐桌能容纳的人数 4a1) 系统发出一个警告信息,询问用户是否想要继续预约 4a1a) 如果回答“否”,用例将不进行预约而终止 4a1b) 如果回答“是”,预约将被输入,并附有一个警告标志
软件开发生命周期与统一建模语言
软件开发生命周期与统一建模语言
对象流(objectFlow)
静态模型 动态模型
软件开发生命周期与统一建模语言
8.2.2 活动的分解
静态模型 动态模型
一个活动可以分为若干个动作或子活动,这些动作和子活动 本身可以组成一个活动图; 一个包含子活动的活动和嵌套了子状态的组合状态类似,概 念上也相对统一。 一个不含内嵌活动或动作的活动称之为简单活动;一个嵌套 了若干活动或动作的活动称之为组合活动,组合活动有自己 的名字和相应的子活动图。
软件开发生命周期与统一建模语言
8.2.3 活动图
静态模型 动态模型
软件开发生命周期与统一建模语言
8.5 活动图建模技术
静态模型 动态模型
① ② ③ ④ ⑤ ⑥
识别要对其工作流描述的类或对象。 确定工作流的初始状态和终止状态,明确工作流的边界。 对动作状态或活动状态建模。 对动作流建模。 对对象流建模。 对建立的模型进行精化和细化。
软件开发生命周期与统一建模语言
决策(decision)
静态模型 动态模型
软件开发生命周期与统一建模语言
同步(synchronization)
静态模型 动态模型
显示业务用例的工作流程中的并行线程;
分叉用于将动作流分为两个或者多个并发运行的分支; 汇合则用于同步这些并发分支,以达到共同完成一项事务
状态图描述对象整个生命其中表现的动态行为, 对象响应事件的动作,对象的状态会发生哪些改 变
软件开发生命周期与统一建模语言
8.1.1 基本概念
静态模型 动态模型
什么是状态(state)?
对象生命期中的某个条件或状况,在此期间对象将满足某些 条件、执行某些活动或等待某些事件。
理解
对象在任何时候都会处于某种状态中,所有对象都有状态; 对象所处的状态决定了它如何响应所检测到的事件或所接受 的消息; 通常,事件使对象从一个状态转向另一个状态(状态转移);
8.1.3 状态图
静态模型 动态模型
订单处理系统
软件开发生命周期与统一建模语言
8.3 状态图建模技术
静态模型 动态模型
为什么要对状态图进行建模?
1. 对象可能会有不同的状态,某些行为依赖于这些状态。例
如,按下开关按钮时,电灯将改变当前的状态(由关变开
或由开变关),因此:
1. 2. 3. 需要记录对象当前的状态 发生了某种事件才会引起状态间的转移 由一个状态转到另一个状态的过程通常通过方法调用实现
软件开发生命周期与统一建模语言
4、历史状态
静态模型 动态模型
History state
使用历史状态,则可以存储给退出组合状态时所处的子状态, 则返回组合状态时可以直接回到相应的子状态;
软件开发生命周期与统一建模语言
8.1.3 状态图
静态模型 动态模型
订单处理系统
软件开发生命周期与统一建模语言
软件开发生命周期与统一建模语言
8.6 活动图实例
静态模型 动态模型
软件开发生命周期与统一建模语言
8.6 活动图实例
静态模型 动态模型
图书管理员的日常工作主要是通过图书管理系统处 理借书与还书,借阅者借阅书籍的数量是受限制的, 超过还书期限需要缴纳罚金。请给出图书管理员的 活动图