时序图1112
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
updateReserve(cash,selection) releaseSoda(selection) receiveSoda(selection)
用例“买饮料”的最理想场景建模的时序图
实例二
:Customer :Front :Register :Dispenser accept(cash,selection)
总结
• • • • • • 时序图 协作图 两者区别 消息的意义及代码表示 时序图和协作图的具体画法。 两图的基本符号
作业
• 1 建立时序图的步骤; • 2 交互图的意义
对象1
对象2
简单消息
异步消息
同步消息
发消息 给自己
返回消息
简单消息
表示简单的控制流。用于描述控制如何在 对象间进行传递,而不考虑通信的细节。
简单消息的表示:
同步消息
• 调用者发出消息后必须等待消息返回(暂停活动), 只有消息接收者处理消息的操作执行完毕 (或放 弃)后返回控制,调用者才可以继续执行自己的操 作。 • 一般一个同步消息必有一个配对的返回消息(也可 省略)。 • 同步消息的接收者必须是一个被动对象。
锁车用例的关键场景的表示
:CarOwner :CarKey :Car
1: getButtonPress 2: processKeyMessage 3: lock 4: 5:
面向对象程序设计与时序图
对于调用: Window Wnd; Wnd.drawCircle();
Wnd
drawCircle draw()
五官科患者
挂眼科号 需要等待 挂牙科号 牙科叫号 看牙科 眼科叫号 看眼科 需要等待
眼科
牙科
时序图:一般时序图
• 省略返回消息 • 每个场景最终的消息前加<<transaction over>>
饮料销售机实例一
:Customer :Front :Register :Dispenser accept(cash,selection) getCustomerInput(cash,selection) checkAvailability(selection)
生命线
• 每个对象向下方伸展的 虚线称为对象的生命线。 用于表示该对象在某段 时间内是存在的。两条 生命线之间的区域称为 活动区,进行信息的传递。
对象1 对象2
控制焦点(激活)
• 生命线上的窄矩 形条被称为激活 生命线(也称为 控制焦点或方法 调用框,表明正 在由目标对象/ 类执行处理,以 完成消息)。
协作图的基本符号
• 消息:
协作图中的消息和时序图的相同。
• 链(link):
link连接对象,表示对象间存在关联。一个链上 可以有多个消息。
class1 1. add() 3. update() class2 class3 2. modify()
课堂练习
• 将锁车理想场景的时序图转化为协作图。
异步消息的表示:
异步方式
• 异步方式的时间问题。 • 因为供应商不需要等待 销售商(存储价格)的处 理所以节省了2秒钟时 间。
供应商
计算新商 品1的价格
销售商
发送新商品1的价格
计算新商 品2的价格 发送新商品2的价格
放入处 理队列 或直接 处理
放入处 理队列 或直接 处理
异步方式
• 在许多情况下客户端 与服务器联系后,并 不需要等待应答或不 需要立即应答。 • 客户建立异步联系后 (只需建立对异步回 答的监听)可以做自 已另外的事情。
Circle
Class CircSquare extends GeomFigure { Circle c; Rectangle r; Public void display() { c.display(); r.display(); } Public void remove(){ c.remove(); r.remove(); }
对象1 对象2
消息
• 对象之间的交互通过 互发消息来实现。 • 一个对象到另一个对 象的消息用跨越对象 生命线的消息表示。
对象1
消息
对象2
消息类型
• 对象可以发消息给自己 • 简单消息从一个对象到另 一个对象的控制流的转移 • 同步消息需要等待对方对 消息的回答后才能继续自 已的操作 • 异步消息不需要等待对方 对消息的回答便可以继续 自已的操作 • 返回消息表示从同步消息 创建的激活返回到调用者 激活 • 阻止消息 • 超时消息
CarKey processKeyMessage() getButtonPress() lock CarOwner Car beep() BlinkLights()
时序图和协作图的区别
• • • • • 建模元素不同 协作图中有路径,消息必须有消息号 时序图可以表现对象的激活和去激活 时序图可以描述对象的创建 时序图强调消息的时间顺序,协作图强调 参与交互的对象的组织
供应商
计算新商 品1的价格 发送新商品1的价格 对新商品1价格 更新的应答 计算新商 品2的价格 发送新商品2的价格 对新商品2价格 更新的应答 对新商 品2的价 格更新
销售商
对新商 品1的价 格更新
异步消息
• 表示异步控制流或并发。 • 当调用者发出消息后不用等待消息的返回即可继 续执行自己的操作。 • 异步消息的发送者和接收者是并发工作的。 • 时序图中大量的消息是异步消息。 • 异步消息的接收者必须是一个主动对象。
锁车用例的场景
• • • • 前置条件:车主人想锁车 1 车主人按遥控钥匙的“锁”按钮; 2遥控钥匙利用无线装置连接汽车; 3 汽车启动自动上锁,闪动车灯并蜂鸣一声 通知车主人。 • 后置条件:车锁上了。
利用名词法找出系统中的类
<<Actor>>
CarOwner
CarKey
Car
细化类(找属性和操作)
时序图
(sequence diagram) 主要内容:
1 2 3 4 什么是时序图 时序图的元素 理解消息的类型 面向对象程序设计与时序图
时序图
1.时序图展示了几个对象之间的动态关系,显 示了对象之间的交互,即系统执行的某一 特定时间所发生的事。
2.用来显示对象之间发送的消息以及发送消 息的时间顺序。
时序图
• 多数情况下,使用时序图来阐明用例的实 现,即说明对象如何通过交互来执行全部 或部分用例的行为。 • 可以用一个或多个时序图来阐明实现用例 的对象交互过程。 • 在典型的组织结构中,主事件流将有一个 时序图,而每个独立的用例分支流都分别 有一个时序图。
时序图
对象
• 对象(通常是对象、类或参与者)
顾客 1: 插卡
读卡机
屏幕
帐户
取钱机
2: 读卡号 3: 屏幕初始化 5: 提示输入密码 6: 输入密码 8: 提示选择事务 9: 选择事务 10: 提示输入金额 11: 输入金额 12: 取钱 13: 验钱 14: 扣钱 15: 提供钱 16: 提供清单 7: 验证密码 4: 打开帐户
17: 退卡
同步消息的表示:
同步方式
• 客户端与服务器联系后, 即等待应答。 • 应答信息对客户端是较重 要的。 • 客户端可以确定服务器确 实处理了它的请求。
Web客户端 Web服务器
请求一个页面
同步方式
• 同步方式的时间问题。 • 如果供应商(计算价格) 和销售商(存储价格)都 需要1秒钟来处理消息 (不考虑网络连接通讯 时间),至少需要4秒。
CircSquare
Circle
Rectangle
:CircSquare
r:Rectangle
c:Circle
resize
1: getA() 2: a 3: setA 4: setRadius(newRadius) 5: 6: setA(a) 7: 8: setB(a) 9:
协作图
是对象图的扩展,除了表示对象间 的关联之外,还显示对象之间的消 息传递。
:Dispenser
accept(cash,selection) getCustomerInput(cash,selection) checkAvailability(selection) Sold Out [sold out]returnCash(cash) <<transaction over>>[sold out]display("sold out") updateReserve(cash,selection) releaseSoda(selection) receiveSoda(selection)
协作图的基本符号
• 对象:
– 主动对象:一组属性和方法的封装体,其中至 少有一个方法不需要接受消息就能主动执行。 换句话说,主动对象中包含主动方法。 – 多对象:同一个类的多个对象。在交互过程中 一个对象可能向同一个类的多个对象同时发送 消息。比如,老师让多个学生同时交作业。
teacher
:student
getCustomerInput(cash,selection) checkAvailability(selection) Sold Out returnCash(cash) display("sold out")
用例“买饮料”的sold-out场景建模的时序图
:Customຫໍສະໝຸດ Baidur
:Front
:Register
public void setA(int a) { c.setRadius(a/2); r.setA(a); r.setB(a); } public void resize(float factor) { int a; a = r.getA(); setA(a*factor); }
GeomFigure
饮料销售机的一般时序图(部分)
ATM取款理想场景
(1)用户通过ATM机,插入银行卡; (2)系统提示输入密码; (3)用户输入密码; (4)系统检查密码是否正确; (5)密码正确,用户选择“取款”; (6)系统提示用户输入要提取的金额; (7)用户输入金额(比如:100)后,系统 检查输入数据的合法性; (8)在获取用户输入的正确金额后,系统开 始事务处理,减少账户上的余额,并输出 相应的现金。
:Class O:Class
表示法一
表示法二
对象在时序图中的安排
• 时序图是一个二维图形, 水平轴为对象的排列, 垂直轴表示时间。 • 对象从左至右分布在时 序图顶部。 • 如果在同一时序图中有 多个主角实例,就应尽 量使它们位于最左侧或 最右侧的生命线。
创建和删除对象
• 一个对象可以在交互 中通过发送一条消息 来创建另一个对象。 • 一个对象可以在交互 中删除, 对象生命线 底部的删除标志x表明 对象已从内存中除去 • 创建与删除一个对象 的消息一般是同步消 息。
Customer
ATM
Account
1: request 2: password 3: input password 4: transfer password 5: verify password 6: successfully verify 7: inform successful message 8: input ¥100 9: transfer count 10: verify 11: exit