类之间的关系

一般来说,类之间的关系有:依赖、关联、聚集、组合、泛化等。

1. 依赖(dependency)

假如有两个元素 X 和 Y,如果修改 Y 元素的定义会导致 X 元素的修改,那么 X 依赖 Y。Java 中依赖关系常常表现为一个类 X 中某个方法的参数类型为 Y,那么称 X 依赖于 Y。如下图所示:
dependency

2. 关联(association)

关联是对具有相同的结构特性、行为特性、关系和语义的链 (link) 的描述。关联表示的是类与类之间的关系,链表示的是对象与对象之间的关系。
Association

如上图所示,常见的关联关系有单向关联和双向关联。单向关联在 Java 中可以理解为类 Earth 中有一个类型为 Satelite 的变量 moon。而双向关联可以理解为两个类中互有对方类型的变量,如上图中 Father 类中有一个 Son 类型的变量,而 Son 类中有一个 Father 类型的变量。

关联本身也可以有特性,可以通过关联类进一步进行描述。关联还可以加上限定和约束。关联按照种类还可以分为:自返关联(递归关联)、二元关联和 N 元关联。

关联也是一种依赖关系,但是在有关联关系的情况下我们只需要画出关联关系而不需要画出依赖关系。

3. 聚集(aggregation)

聚集是一种特殊形式的关联。聚集表示类之间整体与部分的关系,对应于语义“包含”、“组成”表述等。
aggregation

4. 组合(composition)

组合同样表示类之间整体与部分的关系,但是组合关系中整体和部分有着相同生命周期
Composition

5. 泛化(generalization)

泛化定义了一般元素和特殊元素之间的分类关系,在 Java 中表现为继承(父类)或者实现(接口)。
Generalization

发表评论

电子邮件地址不会被公开。 必填项已用*标注