编辑: 静看花开花落 | 2018-09-24 |
Martin Engineering Notebook 98.04 翻译 杨健 在上一期的专栏里 我描述了 UML 的协作图 协作图允许设计者确定在一个协作中对象 间传递消息的顺序 这种图的风格相对于消息的顺序更注重对象间的关系 在这一期里 我们将讨论 UML 的顺序图 顺序图装载了和协作图同样的信息 但注重的 是消息的顺序 而不是对象间的关系 回顾蜂窝电话 回顾蜂窝电话 回顾蜂窝电话 回顾蜂窝电话 下面是上期的蜂窝电话例子的最终协作图 见图
1 数字:按钮 发送:按钮 :发送按钮适配器 :数字按钮适配器 :拨号器 :发声器 :蜂窝式无线电话 台 显示:CR显示 显示:拨号显示
1 按钮按下 1.1 数字 代码 1.1.1 显示数字 代码 1.1.2 发出声音
2 按钮按下 2.1 发送 2.1.1 连接 pno 2.1.1.1 占用 图1蜂窝电话的协作图 与这个模型相对应的顺序图显示在图
2 中图2的内容很好理解 尤其在我们将它和图
1 对照时 让我们跟踪这些特性 首先 现在有两个顺序图 第一个 捕获当数字键被按下时发生的一系列事件 第二个 捕获当用户按发送键呼叫时发生的事件 在每一个图的顶部我们看到表示对象的矩形 就象 在协作图中一样 对象名被加下划线以便和它们的类相区分 对象名也被一个冒号将其和类 名分开 一些对象 象拨号器 没有特别的对象名 因此冒号作为类名的前缀而没有对象名 在它前面 每个对象向下生出一条虚线 被称为 生命线 这些线定义了图的时间轴 按常规 时 间延向下方向流逝
1 生命线 描述了它们所联系的对象将存在多久 在图
2 中我们不能 看到 生命线 的整个长度 它们从图的最顶部延伸过图的最低部 这暗示了图中描述的对 象存在于图开始之前 也仍存在于图结束之后 生命线之间的箭头表示正在对象间传递的消息 顺序号 象上一期所显示的 是允许的但 并不需要 结束箭头的白色窄条被称为 激活 它们显示一个响应消息的 方法 的执行 期 这些 方法 暗含了 激活 结束后返回到调用者
2 在第一个顺序图中围绕消息组的大矩形定义了一个迭代 这迭代的循环条件被显示在矩形 的底部 数字:按钮 :数字按钮适配器 :拨号器 显示:拨号显示 :发声器 对每一个数字 按钮按下 数字 代码 显示数字 代码 发出声音 发送:按钮 :发送按钮适配器 :拨号器 :蜂窝式无线电话 台 显示:CR显示 发送 按钮按下 连接 pno 占用 图2蜂窝电话的顺序图 花些时间观察图
1 和图
2 你将会亲自证明它们表示了相同的信息 然而两者的形式是根 本不同的 顺序图占据了更多的空间 但更容易进行规则系统地跟随 协作图显示整个协作 在一个密集的图中 但规则系统有一定的模糊 使用哪一种图依赖于你想强调的信息 有时 候你想显示一个协作的 黏着性 又有时候你想显示规则系统的 流动性 对象的建立和删除 对象的建立和删除 对象的建立和删除 对象的建立和删除 图3显示了在顺序图中我们如何描述建立和删除一个对象 下面我们看一下 蜂窝式无线 电话台 对象建立一个 连接 对象在响应一个连接消息时 建立被一个终止于对象框的箭 头所标示 删除同样被一个终止与对象 生命线 的末端 X 处的箭头所标示
1 UML 也允许在图的边上提示 让时间向右延续 然而这是很少有的情况