[UML笔记] UML中的关系

本篇是 第五章 关系 的笔记。在面向对象建模中,有四种最重要的关系:依赖、关联、泛化和实现。之前翻译过一篇文章:

理解UML类关系.

这篇文章很好得总结了这四种关系。

  • 依赖 它表示 之间的 使用关系(包括精化、跟踪和绑定关系)
  • 泛化 它把一般的类连接到较为特殊的类,也称为超类/子类关系或父/子关系。有时也称泛化为“is-a-kind-of”关系。
  • 关联 它表示 对象 之间的 结构关系

依赖、泛化和关联都是定义在 这一级别上的静态事物。当开始在 对象 级别上建模时,特别是开始解决这些对象的动态协作时,将遇到链(它是关联的实例, 描述可能发送消息的对象间的连接)。

这本书里只详细介绍了这三种关系。

依赖表示使用关系,例如,一个类与方法参数,方法的本地变量等都是依赖关系。而关联表示对象间的结构关系。这是非常明显的区别。

关联的四个基本要素,包含了书中的例子以便加深理解与记忆:

  • 名称

    关联可以有一个名称,用以描述该关系的性质,为了消除名称的歧义,可提供一个指出读名称方向的三角形。

    Figure 1: 关联的名称

  • 角色

    当一个类参与了一个关联时,它就在这个关系中扮演了一个特定的角色。可以显式地命名一个类在关联中所扮演的角色。把关联端点扮演的角色称为 端点名 (在UML中称为角色名)。

    Figure 2: 关联端名

    书中提到角色与接口的语义有关,将在第十一章讨论。这里先记下来备忘。我也想知道他们之间到底有何关联。

  • 多重性

    关联表示了对象间的结构关系。在很多建模问题中,说明一个关联的实例中有多少个相互连接的对象是很重要的。这个“多少”被称为关联角色的多重性,它表示一个整数范围,指明一组相关对象的可能个数。

    Figure 3: 关联的多重性

  • 聚合

    Figure 4: 聚合

    这个没什么说的,简单来讲就是指对象拥有“has-a”关系。