
顺序图和协作图PPT课件.ppt
36页重庆大学软件工程学院重庆大学软件工程学院重庆大学本科课程重庆大学本科课程Object-Oriented Technique and UMLObject-Oriented Technique and UML1教材目录教材目录 《《面向对象技术面向对象技术UMLUML教程教程》》第 1 章面向对象技术概述 第 2 章UML概述 第 3 章用例和用例图 第 4 章顺序图和协作图 第 5 章类图和对象图 第 6 章数据建模 第 7 章包 第 8 章状态图和活动图 第 9 章构件图 第 10 章部署图 第 11 章对象约束语言 第 12 章业务建模 第 13 章Web建模 第 14 章UML与设计模式 第 15 章面向对象实现技术第 16 章RUP 软件开发工程 第 17 章UML开发工具 第 18 章实例应用分析 2024/7/212教材目录教材目录 《《UMLUML基础、案例与应用(第三版)基础、案例与应用(第三版)》》第 1 章UML简介第 2 章理解面向对象 第 3 章运用面向对象 第 4 章关系 第 5 章聚集、组成、接口和实现 第 6 章介绍用例 第 7 章用例图 第 8 章状态图 第 9 章顺序图第 10 章协作图第 11 章活动图第 12 章构件图第 13 章部署图第 14 章理解包和UML语言基础第 15 章在开发过程中运用UML 第 16 章学习案例介绍第 17 章领域分析 第 18 章收集系统需要 第 19 章开发用例 第 20 章交互 第 21 章设计外观、感觉和部署 第 22 章理解设计模式 第 23 章嵌入式系统建模 第 24 章描述UML的未来第三部分 高级应用第一部分 基础知识第二部分 学习案例2024/7/213UML1.xUML1.x中各种图的关系中各种图的关系Use caseSequenceClass(Simple)ActivityCollaborationClass(Complex)ObjectStateRequirementRequirement阶段Analysis阶段Design阶段2024/7/214第第9 9章章 顺序图顺序图9.1 什么是顺序图 9.2 汽车和车钥匙9.3 饮料销售机9.4 顺序图:一般顺序图9.5 在消息序列中创建对象实例9.6 帧化顺序图:UML2.0中的顺序图9.7 UML“大图”本章小节和习题什么是顺序图 ●如何应用顺序图 ●如何对一个对象创建建模 ● 如何使用UML2.0中新添加的有关顺序图的内容 ●顺序图在UML大图中应该处于什么位置 ● 2024/7/215顺序图顺序图 —— 什么是顺序图(什么是顺序图(每个用例的背后都有一张顺序图)每个用例的背后都有一张顺序图)◇ 关键思想 对象之间的交互是按照特定的顺序发生的,这些按特定顺序发生的交互序列从开始到结束需要一定的时间。
当建立一个系统时,必须要指明这种交互序列,顺序图就是用来完成这项工作的UML组件◇ 符号特征 * 对象用矩形表示,其中是带下划线的对象名 * 时间用垂直虚线表示 * 消息用带箭头的直线表示 * 激活用窄矩形条表示◇ 顺序图(sequence diagram) 由采用通常方式表示的对象组成2024/7/216顺序图顺序图 —— 什么是顺序图什么是顺序图◇ 对象 从左到右布置在顺序图的顶部 匿名对象 生命线(lifeline) 激活(activation)=控制焦点(focus of control,FOC)2024/7/217顺序图顺序图 —— 什么是顺序图什么是顺序图◇ 消息 一个对象到另一个对象的消息用跨越对象生命线的消息线表示 调用消息(call message):消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息接收者放弃或返回控制一般地,调用消息的接收者必须是一个被动对象,即它是一个需要通过消息驱动才能执行动作的对象 返回消息(return message):调用消息必有一个配对的返回消息,为了图的简洁和清晰,与调用消息配对的返回消息可以不用画出。
如果为非过程调用,如果有返回消息,则必须明确表示出来 同步消息(synchronous message):调用消息 异步消息(asynchronous message):发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接收者返回消息或控制异步消息的接收者和发送者是并发工作的 其它:阻止消息,超时消息,反身消息2024/7/218顺序图顺序图 —— 什么是顺序图什么是顺序图◇ 时间 顺序图中垂直方向代表时间维,时间流逝的方向为自顶而下◇ 建立顺序图的步骤 1. 确定交互过程的上下文(context) 2. 识别参与交互过程的对象 3. 为每个对象设置生命线,即确定哪些对象存在于整个交互过程中,哪些对象在交互过程中被创建和撤销 4. 从引发这个交互过程的初始消息开始,在生命线之间从顶到下依次画出随后的各个消息 5. 如果需要表示消息的嵌套,或/和表示消息发生时的时间点,则采用激活 6. 如果需要说明时间约束,则在消息旁边加上约束说明 7. 如果需要,可以为每个消息附上前置条件和后置条件2024/7/219顺序图顺序图 —— 汽车和车钥匙(举例)汽车和车钥匙(举例)◇ 类图2024/7/2110顺序图顺序图 —— 汽车和车钥匙(举例)汽车和车钥匙(举例)◇ 顺序图保护条件,UML中表示“if”条件的方式2024/7/2111顺序图顺序图 —— 饮料销售机(举例)饮料销售机(举例)2024/7/2112顺序图顺序图 —— 饮料销售机(举例)饮料销售机(举例)◇ 类图前端(前端(Front):):Ø 接受顾客的选购和现钞;接受顾客的选购和现钞;Ø 输出一些提示消息;输出一些提示消息;Ø 从记录仪接受找回的零钱并返还从记录仪接受找回的零钱并返还 给顾客;给顾客;Ø 交易不成功,返还现钞交易不成功,返还现钞Ø 交易成功,把饮料展示给顾客。
交易成功,把饮料展示给顾客钱币记录仪(钱币记录仪(Register)::Ø 从前端获取顾客输入信息;从前端获取顾客输入信息;Ø 更新现钞储存;更新现钞储存;Ø 找零钱找零钱分配器分配器(Dispenser)::Ø 检查选购的饮料是否还有货;检查选购的饮料是否还有货;Ø 分发一罐饮料分发一罐饮料2024/7/2113顺序图顺序图 —— 饮料销售机(举例)饮料销售机(举例)◇ 顺序图买饮料的顺序:买饮料的顺序:①① 顾客从机器前端的钱币顾客从机器前端的钱币口塞入钱币,然后选择口塞入钱币,然后选择想要的饮料;想要的饮料;②② 钱币到达钱币记录仪,钱币到达钱币记录仪,记录仪更新自己的存储;记录仪更新自己的存储;③③这是最理想的场景,饮这是最理想的场景,饮料还有存货,记录仪通料还有存货,记录仪通知分配器分发一罐饮料知分配器分发一罐饮料到机器前端到机器前端2024/7/2114顺序图顺序图 —— 饮料销售机(举例)饮料销售机(举例)◇ 顺序图2024/7/2115顺序图顺序图 —— 一般顺序图一般顺序图◇ 一般顺序图(generic sequence diagram)每个场景的最终消息前边加上《Transaction over》2024/7/2116顺序图顺序图 —— 在消息序列中创建对象实例在消息序列中创建对象实例2024/7/2117顺序图顺序图 —— 帧化顺序图:帧化顺序图:UML2.0UML2.0中的顺序图中的顺序图◇ 操作符 顺序图操作符为sd(sequence diagram)帧化顺序图的必要性:1)如果你为一个用例的多个场景创建实例顺序图,你会注意到图与图之间相当的一部分内容是重复的。
2)帧化的方法使你能够在一张顺序图上快速容易复用另一种顺序图的部分内容2024/7/2118顺序图顺序图 —— 帧化顺序图:帧化顺序图:UML2.0UML2.0中的顺序图中的顺序图◇ 交互事件(interaction occurrence) 操作符为ref(reference)2024/7/2119顺序图顺序图 —— 帧化顺序图:帧化顺序图:UML2.0UML2.0中的顺序图中的顺序图◇ 交互片断(interaction fragment)的组合 操作符有alt(alternation)和par(parallel)2024/7/2120UML- 21 -①②③④⑤⑦⑥⑨⑧⑩1 指出左图中的参与者?A① B② C③ D④2 哪些是对象?A① B②③④ C ④ D⑤⑥⑦⑧⑨⑩3 Server类调用了CreditService类中的什么操作?A⑦ B⑧ C ⑦⑧ D⑧⑨ 练习题1. A 2. B 3. B 21第第1010章章 协作图协作图10.1 什么是协作图 10.2 汽车和车钥匙10.3 饮料销售机10.4 创建对象10.5 编号的一点注意事项10.6 其他概念10.7 UML“大图”本章小节和习题什么是协作图 ●如何运用协作图 ● 如何对主动对象、并发和同步建模 ●协作图在UML大图中处于什么位置 ● 2024/7/2122协作图协作图 —— 什么是协作图什么是协作图2024/7/2123协作图协作图 —— 什么是协作图什么是协作图◇◇ 协作图的作用协作图的作用 对象图展示的是对象之间的静态关系。
协作图是对象图的扩展协作图除了展示出对象之间的关联,还显示出对象之间的消息传递 对象图是一个快照;而协作图是一部电影 ◇◇ 协作图与顺序图两者之间是语意等价的(协作图与顺序图两者之间是语意等价的(semantically equivalent)) 两种图表达的同一种信息,两者之间可以相互转换◇◇ 两者联系与区别两者联系与区别协作图和顺序图都表示出了对象间的交互作用,但是它们侧重点不同² 顺序图清楚地表示了交互作用中的时间顺序(强调时间),但没有明确表示对象间的关系² 协作图清楚地表示了对象间的关系(强调空间),但时间顺序必须从顺序号获得² 协作图和顺序图可以相互转化2024/7/2124协作图协作图 —— 什么是协作图什么是协作图◇ 符号特征 * 关联线附近的箭头线表示对象之间的传递的消息,箭头指向消息接收对象 * 消息名称和消息序号附在箭头线附近消息的一般含义是触发接收消息的对象执行它的一个操作2024/7/2125协作图协作图 —— 汽车和车钥匙汽车和车钥匙◇ 对象图是协作图的基础2024/7/2126协作图协作图 —— 汽车和车钥匙汽车和车钥匙2024/7/2127协作图协作图 —— 汽车和车钥匙汽车和车钥匙◇ 表现状态的变化和消息的嵌套(用数字系统表示消息之间的某些关系)2024/7/2128协作图协作图 —— 饮料销售机饮料销售机2024/7/2129协作图协作图 —— 饮料销售机饮料销售机2024/7/2130协作图协作图 —— 创建对象创建对象2024/7/2131协作图协作图 —— 其他概念其他概念◇ 发送给多对象的消息◇ 返回结果◇ 主动对象◇ 同步2024/7/2132练习题练习题请指出下面的消息标签各部分的内容。
①1:display( ) A. 序列表达式:消息名 B.返回值:消息名 C.序列表达式:消息名②[mode=display] 1.2.3.7: redraw( ) A.序列表达式 返回值 消息名 B.保护条件 序列表达式 消息名图中存在的事物有: 参与者 按钮对象 电梯控制对象 命令对象 工作队列 电梯对象图中存在的关系有: 链接 参与者需要乘坐电梯,他从系统外部按下按钮,让电梯到达他想去的楼层此时,电梯系统的操作被启动,电梯控制对象以循环的方式检查所有的电梯,从中选择一个工作队列长度最短的然后,它创建一个作业命令,并将该命令放入对应电梯的工作队列,接着激活队列电梯对象并发运行,从它的队列中选择一个作业并执行电梯是一个活动对象,它与它的控制线程并发执行33 练习题答案 1. ①A ②B 2. ①A ②A2. 请对比协作图与其相应的顺序图,做练习题①请在下图中指出,循环计算各个电梯的工作队列长度的消息的顺序号A 1.1 B1.2 C1.3 D2②请说明消息1.3所进行的操作Invoke(job),应属于哪个类所具有的方法。
A Queue类 B ElevatorControl类 C Elevator类 D Button类 34协作图协作图 —— UMLUML“ “大图大图” ”2024/7/2135个人观点供参考,欢迎讨论。
