UML类关系

本文主要介绍了面向对象编程语言中的泛化关系、实现关系、依赖关系、关联关系、聚合关系和组合关系等概念。其中,泛化关系表示类的继承关系,实现关系表示类实现接口的关系,依赖关系表示一个类依赖于另一个类的关系,关联关系表示一个类的成员变量是另一个类的实例的关系,聚合关系表示整体和个体之间的关系,组合关系表示整体和部分之间的关系。此外,还介绍了耦合度由弱至强的顺序:依赖关系 < 关联关系 < 聚合关系 < 组合关系。这些概念在面向对象编程中具有重要意义,对于理解和设计复杂的软件系统具有指导作用。

UML类关系

泛化关系

对于面向对象编程语言,UML 中所说的泛化关系(Generalization)就是指类的继承关系。

如果一个类是另一个类的子类,那么 UML 通过使用一个实线连接两个类的 UML 图来表示二者之间的继承关系,实线的起始端是子类,终点端是父类,终点端使用一个空心的三角形表示实线的结束。

generalization

实现关系

如果一个类实现了一个接口,那么类和接口的关系是实现关系(Realization)。

UML 通过使用虚线连接类和它所实现的接口,虚线的起始端是类,终点端是它实现的接口,终点端使用一个空心的三角形表示虚线的结束。

realization

依赖关系

如果 A 类中 某个方法的参数 用 B 类来声明的变量或某个方法返回的数据类型是 B 类型的,那么 A 和 B 的关系是依赖关系(Dependency),称 A 依赖于 B。

在 java 中,依赖表现为:局部变量,方法中的参数和对静态方法的调用。

如果 A 依赖于 B,那么 UML 通过使用一个虚线连接 A 和 B,虚线的起始端是 A,终点端是 B,终点端使用一个指向 B 的方向箭头表示虚线的结束。

dependency

关联关系

如果 A 类的成员变量是用 B 类来声明的变量,那么 A 和 B 的关系是关联关系(Association),称 A 关联与 B。

在 Java 语言中,关联关系一般使用成员变量来实现。

如果 A 关联与 B,那么 UML 通过使用一个实线连接 A 和 B,实线的起始端是 A,终点端是 B,终点端使用一个指向 B 的方向箭头表示实线的结束。

association

聚合关系

聚合(Aggregation)关系是关联关系的一种,是整体和个体之间的关系,如雁群和大雁的关系,即 has-a 关系。

在聚合关系中,两个类时处在不平等层次上的,一个代表整体,一个代表个体。

在 Java 中,与关联关系一样,聚合关系也是通过成员变量实现的。

aggregation

组合关系

组合(Composition)关系是关联关系的一种,是整体与部分的关系,这里的整体与部分是不可分的,如大雁和翅膀的关系,即 contains-a 关系。

composition

耦合度强弱

耦合度由弱至强:

依赖关系 < 关联关系 < 聚合关系 < 组合关系