UML中的关系
UML中包含了四种主要的关系:关联、依赖、泛化、实现。
UML中的关系的简单画法:
一、 关联——association
关联是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系。
表示方法:在UML类图中,用实线连接有关联的对象所对应的类。在使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的属性。
关联的分类:
双向关联: 默认情况下,关联是双向的。
单向关联:类的关联关系也可以是单向的,单向关联用带箭头的实线表示.。
自关联: 在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。
重数性关联: 重数性关联关系又称为多重性关联关系(Multiplicity),表示一个类的对象与另一个类的对象连接的个数。在UML中多重性关系可以直接在关联直线上增加一个数字表示与之对应的另一个类的对象的个数。
表示方式 | 多重性说明 |
1……1 | 表示另一个类的一个对象只与一个该类对象有关系 |
0……* | 表示另一个类的一个对象与零个或多个该类对象有关系 |
1……* | 表示另一个类的一个对象与一个或多个该类对象有关系 |
0……1 | 表示另一个类的一个对象没有或只与一个该类对象有关系 |
m……n | 表示另一个类的一个对象与最少m、最多n个该类对象有关系 (m<=n) |
二、 依赖——dependency
依赖是两个事物之间的语义关系,其中一个事物(独立事物)发生变化,会影响到另一个事物(依赖事物)的语义。
表示方法:在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。
注意:箭头由依赖事物指向独立事物。
三、 泛化——generalization
泛化是一种特殊/一般的关系,也可以看作是常说的继承关系。
泛化就是指一般类连接到比较特殊的类,也称为超类/子类关系,或者是父类/子类关系。
表示方法:在UML中,泛化关系用带空心三角形的直线来表示。
四、 实现——realization
实现是类元之间的语义关系,其中的一个类元指定了由另一个类元保证执行的契约。
实现是用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。
其中,接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现关系(Realization),在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。
表示方法:在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示。
UML中的各种关系的强弱顺序:
泛化= 实现 > 组合 > 聚合 > 关联 > 依赖
下面这张UML图,比较形象地展示了各种类图关系: