版权声明:本文为 gfson
原创文章,转载请注明出处。
注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢。
在 UML 类图中,常见的有以下几种关系:
- 泛化(Generalization)
- 实现(Realization)
- 关联(Association)
- 聚合(Aggregation)
- 组合(Composition)
- 依赖(Dependency)
他们的强弱级别为:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
1. 泛化(Generalization)
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
【例如】:男人是人的一种,既有男人的特性也有人的共性。女人也是如此。
【箭头指向】:带三角箭头的实线,箭头指向父类。
泛化.png
2. 实现(Realization)
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
【例如】:USB 是一个接口,每一个电脑都可以插上 USB 这个接口。
【箭头指向】:带三角箭头的虚线,箭头指向接口。
实现.png
3. 关联(Association)
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。
【例如】:老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西,他不拥有学生。
【代码体现】:成员变量。
【箭头及指向】:双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
关联.png
4. 聚合(Aggregation)
【聚合关系】:是整体与部分的关系,可以看成 「has-a」 的关系,部分可以离开整体而单独存在。
【例如】:电脑和键盘是整体和部分的关系,电脑没了键盘仍然可以存在。
【代码体现】:成员变量。
【箭头及指向】:带空心菱形的实心线,菱形指向整体。
聚合.png
5. 组合(Composition)
【聚合关系】:是整体与部分的关系,可以看成 「contains-a」 的关系,部分离开整体后无法单独存在。
【例如】:鸟儿和翅膀是整体和部分的关系,鸟儿没了翅膀不能独立存在。
【代码体现】:成员变量。
【箭头及指向】:带实心菱形的实心线,菱形指向整体。
组合.png
6. 依赖(Dependency)
【聚合关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。
【例如】:人依赖计算机实现玩电脑游戏的目的。
【代码体现】:局部变量、方法的参数或者对静态方法的调用。
【箭头及指向】:带箭头的虚线,指向被使用者。
依赖.png