《设计模式解析(第2版•修订版)》—第2章 2.5节交互图

2.5 交互图
设计模式解析(第2版•修订版)
交互图

类图可以表示类之间的静态关系,换句话说,类图不能表示任何活动。虽然这非常有用,但有时候我需要表示这些类实例化的对象是如何实际地一起工作的。

表示对象间如何交互的UML图称为交互图(interaction diagram)。最常用的交互图是顺序图,如图2-8所示。

如何阅读顺序图
顺序图应该从顶到底地阅读,如下所述。

最上面的每个矩形都代表一个特定的对象。虽然许多矩形中有类名,但请注意在类名前有一个冒号。一些矩形还有其他名字——例如shape1:Square。
垂直线代表对象的生命线。糟糕的是,大多数UML绘图程序不支持这一点,只能绘制从顶到底的线,因此并不清楚对象实际上什么时候开始存在。
我用这些垂直线之间的水平线表示对象互相发送消息1。
有时候返回值和/或对象会明确表示出来,而有时候只是表示它们要返回。

例如,在图2-8中,

在最上面可以看见Main向ShapeDB对象(这个对象还没有名字)发送了一个“获取形状集合”的消息。
在收到“获取形状集合”的请求之后,ShapeDB对象将:
实例化一个Collection对象;
实例化一个Square对象;
在集合中添加Square对象;
实例化一个Circle对象;
在集合中添加Circle对象;
将集合返回给调用例程(Main)。
其余操作也可以通过这种从顶到底的方式读图来了解,这种图称为顺序图(sequence diagram),因为它描述了操作的顺序。

“对象:类”记号

有些UML图中,需要用派生对象的类来表示该对象。可以通过用冒号连接二者来实现这一点。在图2-8中,我用shape1:Square表示从Square类实例化的shape1对象。

1当对象互相“交谈”时,我们称之为“发送消息”。你需要给一个对象发送请求,让它进行某种操作,而不是告诉其他对象做什么,其他对象会负责搞清楚如何去做。转移责任是面向对象程序设计基本原则之一。这与过程式程序设计完全不同,在后者情况下,你必须控制下一步做什么,因此可能“调用另一个对象的方法”或者“调用操作”。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-10-23 13:03:05

《设计模式解析(第2版•修订版)》—第2章 2.5节交互图的相关文章

《Ruby程序员修炼之道》(第2版)—第1章1.1节进入Ruby的世界

第1章 进入Ruby的世界 Ruby程序员修炼之道(第2版) 本章主要内容 Ruby语法的生存工具箱① Ruby基础编程指引:程序编写.保存.运行和错误检查 Ruby安装指南 Ruby的扩展机制 Ruby中易用的命令行工具,包括交互式Ruby解释器(irb) 本书的内容是Ruby基础,而本章是基础中的基石.本章的目标是让读者在开始学习Ruby之前掌握足够的知识和技巧. 接下来读者将看到Ruby的基本语法和技术,以及Ruby的运行机制:如何写一个程序,怎样使用Ruby运行程序,以及如何把一个程序分

《Ruby程序员修炼之道》(第2版)—第1章1.4节易用的Ruby工具和应用程序

1.4 易用的Ruby工具和应用程序 安装Ruby后,就可以得到一组重要的命令行工具,它们被安装在配置信息bindir所指定的文件夹中,通常是/usr/local/bin./usr/bin或者/opt同等的目录中.(可以使用require "rbconfig"去测试一下RbConfig::CONFIG["bindir"]返回的结果.)这些命令行工具具体是以下几个. ruby:解释器. irb:Ruby交互式解释器. - rdoc和ri:Ruby文档工具. rake:

《软件测试技术大全:测试基础 流行工具 项目实战(第3版)》—第1章1.6节模拟面试问答

1.6 模拟面试问答 本章介绍的是软件测试相关的背景,以及软件测试的发展情况等.身为软件测试员,应该或多或少地了解软件测试的发展动态,及其相关的历史事件等内容,这样无论是在与同行交流,向开发人员介绍和讲解测试,还是在应聘面试中,都会有更多的话题. 一般在应聘过程中,面试官可能会问到以下一些问题,读者可以根据自己的了解以及在本章中学到的内容做出相应的回答. (1)您觉得目前的软件测试行业的现状是怎样的? 参考答案:目前的软件测试行业在国内正在蓬勃地发展中,但是由于起步比较晚,虽然大部分公司都已经设

《Ruby程序员修炼之道》(第2版)—第1章1.2节剖析Ruby的安装

1.2 剖析Ruby的安装在系统上安装Ruby意味着在许多磁盘目录中安装了Ruby语言的库和支持文件.大多数时候,Ruby都知道如何找到其所需要的这些目录而不用弹出提示.但是了解Ruby安装的知识对了解Ruby本身大有益处. 查看Ruby的源代码 除了Ruby安装目录体系之外,Ruby的源代码目录也安装好了.如果没有,可以到Ruby的主页中下载.源代码目录中包含了许多在最终安装中出现的Ruby文件和许多已编译为目标文件并安装好的C语言文件.另外,源代码目录包含了一些如ChangeLog和软件授权

《Ruby程序员修炼之道》(第2版)—第1章1.3节Ruby扩展和编程库

1.3 Ruby扩展和编程库本节的要点并不是关于Ruby标准库的参考.曾在引言中解释过,本书的目标不是编写一本Ruby语言的参考文档,而是教会读者使用Ruby语言并掌握它,并最终拓宽视野. 相应地,本节的目标是讲述扩展的工作方式,即如何使用Ruby运行这些扩展.它们之间技术实现的不同,并最终能让用户自己编写扩展和库文件的扩展架构. 随Ruby发布的扩展通常全部作为标准库来引用.标准库包括为不同项目和任务所提供的扩展,如数据库管理.网络.数学领域.XML处理等.标准库精密的结构每次改变,哪怕只有一

《设计模式解析(第2版•修订版)》—第2章 2.1节概览

第2章 UML2.1 概览设计模式解析(第2版•修订版)本章内容 本章将简单概述UML(统一建模语言),这是面向对象界主要使用的一种建模语言.如果你还不知道UML,阅读本章将使你具备阅读本书模型图所需的最低限度的知识. 本章中,我们将: 叙述"什么是UML"和"为什么使用UML": 阐述本书中的基本UML图,即 类图: 交互图. 本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.

《设计模式解析(第2版•修订版)》—第2章 2.6节小结

2.6 小结设计模式解析(第2版•修订版)本章内容 UML既能够充实设计,又能够用于设计的交流.不要太担心要"正确地"画图.要考虑的是什么方式最有利于交流设计中的概念.换句话说,如果你认为有什么东西需要说,可以用注释来表达. 如果你对一个图标或符号不太确定,必须查手册才能确定其意义,还是加一条注释来解释.毕竟,其他人有可能也不清楚它的意义.清晰为好.当然,这也意味着你应该以规范的方式使用UML--那样无法正常交流.在画图的时候,只考虑要传达的思想即可. 本文仅用于学习和交流目的,不代表

《设计模式解析(第2版•修订版)》—第1章 1.1节概览

1.1 概览设计模式解析(第2版•修订版)本章内容 本章将通过与大家都熟悉的范型--标准结构化程序设计比较异同的方式,来介绍面向对象范型. 当年,面向对象范型正是为了应对使用标准结构化程序设计遇到的诸多挑战才应运而生的.弄清楚这些挑战,我们才能够更好地看到面向对象程序设计的优点,并更好地理解这一机制. 本章无法使你成为面向对象方法的专家,甚至不会介绍所有基本的面向对象概念.但是,本章将使你为阅读本书其他部分做好准备.本书其他部分将阐释如何像专家所做的那样正确使用面向对象设计方法. 本章中,我们将

《设计模式解析(第2版•修订版)》—第1章 1.9节小结

1.9 小结设计模式解析(第2版•修订版)本章内容 本章中我说明了面向对象技术是怎样帮助我们最大程度地减少系统需求变更带来的影响,以及面向对象与功能分解的异同. 我还讨论了面向对象程序设计的许多基本概念,介绍和描述了主要术语.表1-3总结了这些概念,表1-4总结了面向对象程序设计的主要术语. 本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.