UML中的关系(Relationships)主要包括5种:关联关系、聚合关系、依赖关系、泛化关系和实现关系。
关联(Association)关系
关联关系是一种结构化的关系,指一种对象和另一种对象有联系。给定关联的两个类,可以从其中的一个类的对象访问到另一个类的相关对象。在UML图中,关联关系用一条实现表示。
另外,关联可以有方向,表示该关联在某方向被关联(Unidirectional Association)或者叫导航关联,在两个方向上都存在的关联,称作双向关联(Bidrectional Association)
聚合关系
聚合也称聚集,是关联的特例。聚合表示类与类之间的关系是整体与部分的关系,即一个表示整体的模型元素可能由几个表示部分的模型元素聚合而成。
如果在聚合关系中处于部分方的对象同时参与多个处于整体方对象的构成,则该聚集成为共享聚合。
吐过部分类完全隶属于 整体类,部分与整体共存,整体不存在了部分也随之消失发(或失去价值了),则该聚集称为复合聚集(简称为组成)
聚合关系用一端带有空心小菱形的直线表示,小菱形端连接表示整体事物的模型元素,另一端连接表示部分事物的模型元素。
组合关系
组合关系是在聚合关系上的更紧密的耦合关系,它同样是描述元素之间部分与整体的关系,但是部分类需要整体类才能存在,当整体类被销毁时,部分类将同时被销毁。组合关系用一端带有实心小菱形的直线表示,小菱形端连接表示整体事物的模型元素,另一端连接表示部分事物的模型元素。
依赖(Dependency)关系
依赖关系描述两个模型元素(类、用例等)之间的语义关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变,将 影响依赖于它的元素。
与关联关系的区别为对象间表现非固定关系,如手机与充电器的关系。在UML图中,依赖关系用一条带箭头的虚线表示。
泛化(Generalization)关系
UML中的泛化关系定义了一般元素和特殊元素之间的分类关系,与C++及Jave中的继承关系有些类似。
泛化可以划分为普通泛化和受限泛化。
1.普通泛化
普通泛化就是没有给泛化添加约束。例如,汽车和交通工具。在UML图中,普通泛化用一条带有空心箭头的实线表示。
2.受限泛化
可以给泛化关系附加约束条件,说明泛化关系的使用方法或扩充方法,成为受限泛化。预定义的约束有4种:多重、不相交、完全和不完全。这些约束都是语义约束。
实现(Realization)关系
实现关系将一种模型元素(如类)与另一个模型元素(如接口)连接起来,其中接口只是行为的说明而不是结构或者实现。真正的实现由前一个模型元素来完成。
通常在两种 地方会遇到实现关系:
(1)一种是在接口和实现它们的类或构件之间;
(2)另一种是在用例和实现它们的协作之间。
在UML图中,实现关系一般用一条带有空心箭头的虚线来表示。
UML中五中关系的表示方法总结
关系 | 表示方法 |
关联关系 | 一条实线 |
聚合关系 | (聚合)空心小菱形直线 |
(组合)实心小菱形直线 | |
依赖关系 | 带箭头的虚线 |
泛化关系 | 空心箭头的实线 |
实现关系 | 空心箭头的虚线 |