行为模型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
响应的状态的变化。
用处
描述交互对对象内部的影响,交互图中的消息
在这里变成外部事件对对象发出的命令,对象 对这些命令的响应导致对象的状态发生变化。 因此,从这个意义上说,状态图是顺序图的进 一步细化,并且是对核心对象(选择核心对象 的依据是看是否在多个交互图中有多个消息指 向该对象)的细化。
状态图的符号
行为模型
软件学院 代飞 2013·秋
内容
1、建立行为模型的背景及主要 内容 2、交互图(时序图和协作图)
3、行为图(状态图和活动图)
1、背景
用例视图--需求捕获
领域模型--系统的静态分析
行为模型--系统的动态分析
为什么要建立行为模型?
用例模型中的对系统的功能(用例)进行 了描述,其关注的重点是:从用户的角度 ,系统能提供什么。 领域模型中,确定了构成系统的概念类、 类间的关联以及类的重要属性,其关注的 重点是:系统的静态结构。
1: 插卡 22: 出卡
: 显示 器
: 收据
: 用户
7: 输入密码 4: 卡号合法
3: 验证卡号
13: 取款(1000RMB)
15: 验证取款是否合法 16: 帐户扣款
8: 验证密码 : 键盘 9: 密码合法 : 银行信息 系统
17: 出款数
: 出钞 口
时序图的组成元素
时序图包含四个元素:
1)对象(Object) 2)生命线(Lifeline)
放入处 理队列 或直接 处理
异步消息的例子(2/2)
在许多情况下客户 端与服务器联系后 ,并不需要等待应 答或不需要立即应 答。 客户建立异步联系 后(只需建立对异 步回答的监听)可 以做自已另外的事 情。
五官科患者
挂眼科号 需要等待 挂牙科号 牙科叫号 看牙科 眼科叫号 看眼科 需要等待
眼科
牙科
3)消息(Message)
4)激活(Activation)
对象
对象(通常是对象、类或参与者)
:Class O:Class
表示法一
表示法二
生命线
生命线是一条垂直的虚线,从时序图的顶 部一直延伸到底部,所有的时间取决于交 互持续的时间。每个对象的底部中心的位 臵都带有生命线。
对象1 对象2
消息
do事件:指明在该状态中执行的动作;
子状态
在UML里,一个状态内部可以包含其它状 态,它们在此状态的内部构成了另一个状 态机。
在UML里,子状态被定义为是包含在某一 状态内部的状态。
包含子状态的状态称为复合状态( composite state)。 不包含子状态的状态称为简单状态(simple state)。
对象的动态合作关系? 对象在生命周期内状态的变化? 对象的操作的执行过程?
根据用例模型建立行为模型
用例模型
行为模型
交互图
行为图
时序图
协作图
状态图
活动图
2、交互图
定义:对象之间的合作(协作)在UML里被称 作交互。交互是为了达到某一目的而在一 组对象之间进行消息传递的行为。
作用:交互是用于对软件系统为实现某一 功能而必须在一组对象之间必须实施的动 态行为进行建模。
供应商
计算新商 品1的价格 发送新商品1的价格 对新商品1价格 更新的应答 计算新商 品2的价格 发送新商品2的价格 对新商品2价格 更新的应答 对新商 品2的价 格更新
销售商
对新商 品1的价 格更新
异步消息
表示异步控制流或并发。 当调用者发出消息后不用等待消息的返回即可继 续执行自己的操作。
异步消息的发送者和接收者是并发工作的。
一般一个同步消息必有一个配对的返回消息。 同步消息的接收者必须是一个被动对象。
同步消息的表示:
客户端与服务器联系后 ,即等待应答。 应答信息对客户端是较 重要的。 客户端可以确定服务器 确实处理了它的请求。
Web客户端
Web服务器
请求一个页面
同步消息的例子
同步方式的时间问题 。
如果供应商(计算价 格)和销售商(存储价 格)都需要1秒钟来处 理消息(不考虑网络 连接通讯时间),至 少需要4秒。
对象1 对象2
简单消息
异步消息
同步消息
发消息 给自己
返回消息
简单消息
表示简单的控制流。用于描述控制如何在 对象间进行传递,而不考虑通信的细节。
简单消息的表示:
同步消息
调用者发出消息后必须等待消息返回(暂停活动 ),只有消息接收者处理消息的操作执行完毕 (或 放弃)后返回控制,调用者才可以继续执行自己的 操作。
有什么用??
赤壁之战的时序图
Public class 刘备 { public void 应战(); }
Public class 孔明 { public void 拟定策略(); public void 联合孙权(); private void 借东风火攻(); }
Public class 关羽 { Public void 防守荊州(); }
时序图中大量的消息是异步消息。 异步消息的接收者必须是一个主动对象。 异步消息的表示:
异步消息的例子(1/2)
异步方式的时间问题 。 因为供应商不需要等 待销售商(存储价格) 的处理所以节省了2 秒钟时间。
供应商
计算新商 品1的价格
销售商
发送新商品1的价格
计算新商 品2的价格 发送新商品2的价格
放入处 理队列 或直接 处理
取款
8、用户取出银行卡或信用卡。
读卡器 出钞口 显示器 钥匙开关
储蓄卡
日志
查询 取款 存款
ATM机
交易
银行信息系统
键盘
打印机
转账
收据
: 读卡器 : 用户 1: 插卡 2: 读卡号
: 键盘
: 显示器
: 出钞口
: 收据
: 银行信息 系统
3: 验证卡号 4: 卡号合法 5: 屏幕初始化 6: 提示输入密码 7: 输入密码 8: 验证密码 9: 密码合法 10: 提示选择事务 11: 选取事务(取款) 12: 提示取款金额 13: 取款(1000RMB) 14: 输入金额(1000RMB)
i==0 [ else ] [ i<controls.length ] [ state==CustomControlsContext.START ] [ else ] [ else ]
开机器
冲咖啡
倒咖啡
喝饮料
操作建模
Public void handleThread(int state){ for(int i=0;i<controls.length;i++){ if(state==CustomControlsContext.START){ if(controls[i] instanceof CustomControls){ ((CustomControls)controls[i]).start(); } }else if(state==CustomControlsContext.STOP){ if (controls[i] instanceof CustomControls){ ((CustomControls)controls[i]).stop(); } } } }
消息是两个对象之间的单路通信,从发送 方到接受方的控制信息流。
消息可以用于在对象间传递参数。 消息可以是信号,也可以是调用。
消息类型
对象可以发消息给自己 简单消息从一个对象到另 一个对象的控制流的转移 同步消息需要等待对方对 消息的回答后才能继续自 已的操作 异步消息不需要等待对方 对消息的回答便可以继续 自已的操作 返回消息表示从同步消息 创建的激活返回到调用者 激活
15: 验证取款是否合法
16: 帐户扣款 17: 出款数
18: 提示用户取钱
19: 提示用户打印收据 20: 用户选择打印收据 21: 打印收据
22: 出卡
2: 读卡号 11: 选取事务(取款) 14: 输入金额(1000RMB) 20: 用户选择打印收据5: 屏幕初始化 : 读卡 器 6: 提示输入密码 10: 提示选择事务 12: 提示取款金额 18: 提示用户取钱 19: 提示用户打印收据 21: 打印收据
各个步骤。
用处:
1.
业务流程建模:对系统的工作流(workflow)建 模,描述系统的业务过程。
操作建模:对类具体的操作建模,描述程序 算法的细节。
2.
业务过程建模
找饮料 [ 没有咖啡 ] [ 发现咖啡 ] [ 发现可乐 ] 把咖啡放入 滤器 将滤器放入 机器 往容器里加 水 拿茶杯 拿可乐
[ 没有可乐 ]
激活
激活表示该对象被占用以完成某个任务, 去激活指的则是对象处于空隙状态、在等 待消息。 在时序图中,为了表示对象是激活的,将 对象的生命线拓宽成为矩形,称为激活条 。对象在激活条的顶部被激活,处于激活 状态;对象在完成自己的工作后被去激活 对象1 对象2 。
需求分析阶段建立的时序图,对于设计而言,
时序图 协作图 动态合作关系建模
时序图 (Sequence Diagram)
• 用来描述对象之间发送消息 的时间顺序,即显示多个对 象之间的动态交互关系
协作图 (Collaboration Diagram)
• 用来描述对象间的交互关系
2.1 时序图
时序图的本质就是将系统中对象之间的交 互建模成消息传递。 特点:时序图强调消息发送的时间先后顺 序,即对象间消息的发送和接受的顺序。 时序图用来表示用例中的行为顺序,揭示 了一个特定场景的交互,即系统执行期间 发生在某个时间点的对象之间的特定交互 ,即描述了如何一步步实现系统的某项功 能。
Public class 张飞 { public void 防守荆州前线(); }
Public class 孙权 { public void 领兵相助(); }
3、行为图
定义:用来建模对象在生命周期内状态的 变化以及对象操作的执行过程 状态图着重从一个状态到另一个状态的流 程,主要有外部事件的参与。 活动图着重表现从一个活动到另一个活动 的控制流程,是内部处理的流程。
keyPres sg
finishe d
出生
睡眠
enty/暂停有意识的思维 do/说梦话 do/梦游 do/打呼噜
[闹钟响]/睁眼
清醒
enty/恢复有意识的思维 do/吃饭 do/工作 do/锻炼身体
[静躺15分钟] 死亡
状态机
组成
用状态:记录以前的动态行为的结果, 用变迁:描述软件对象对外来事件的响应以及
子状态
转移
转移(transition): 是一个状态向另外一个状态 的转换。对象处在源状态时,发生一个事件, 如果条件满足,则执行相应的动作,对象由源 状态转移到目标状态。
转移用箭头表示,如果没有标有事件,则 本转移为自动转移。
转移
转移的类型
① 自转移: 源状态和目标状态为同一状态的转移 。
状态图 行为建模 活动图
状态图 (State
Diagram) 活动图 (Activity Diagram)
• 通过对对象的生命周期建立 模型来描述对象随时间变化 的状态行为
• 用于对计算流程和工作流程 建模
3.1 状态图
状态图强调对象本身对外部发生的事件的 响应及伴随的状态的变化。 根据当前事件,以及对以前事件的响应的结 果决定对当前事件的响应的软件对象的动 态行为,称为是事件驱动的。 在UML里,最适合于描述这类动态行为的 建模手段,就是状态图。
ATM系统的用例图
查询
取款
存款 用户 转帐
取款用例的描述
1、用户将银行卡或信用卡插入ATM读卡机;
2、ATM系统从卡上读取银行帐号,并验证帐号;
3、用户输入密码,系统检验密码; 4、用户按确认键,进入菜单界面; 5、用户选择取款,输入取款金额; 6、ATM把帐号和取款金额传递给银行系统,取回帐户 余额; 7、ATM输出现金,并显示帐户余额;
状态图的例子
事件
开始 状态
转移
状态 结束 状态
状态的定义
状态表示的是一个对象或交互过程中的一 个特定阶段:
状态对应一段有限的时间 状态对应于一组对象属性的值。
一个完整的状态包括三个组成部分,它们 是:
状态名
状态变量 活动
状态名
状态变量
活动
Example of a State
活动
列出了在该状态时要执行的事件和动作, 活动有三个标准活动: entry事件:指明在进入该状态时的特定动 作; exit事件:指明退出该状态时的特定动作;
自转移
转移的类型
② 自动转移: 一个 状态根据本状态的有关情况, 自动触发进入目标状态,在转移上没有事件。
自动转移
③ 条件转移: 通过分支判断所确定的转移。
条件转移
实例1:图书馆中“图书”的状态图
ATM的状态图
3.2 活动图
活动图描述了从活动到活动的流,本质上 说,是一个流程图,它显示出一个过程的