记忆技巧:
箭头的一方为被动方(被调用者);
箭头的端点为主动方(调用者)。
箭头为封闭三角形时,表示类间关系
箭头为半封闭尖括号时,表示类内关系。其中,虚线表示参数强制依赖关系,实线表示属性关系。一对一的有:依赖、关联;多对一的有聚合、组合
对于继承(实现):子类(实现)是主动方,父类(接口)是被动方
UML 有几种关系图标:泛化(继承),实现,依赖,关联,聚合,组合
- 泛化(继承) B——▷A B 类作为 A 类的子类存在。
- 实现 B------▷A B 类实现 A 接口。
- 依赖 A------>B B 类作为 A 类某个方法的参数,表示A想做某些事情需要依赖 B,不然做不成。虚线参数强依赖。
- 关联 A——>B(单向) B 类作为 A 类的属性存在,语义上 A 类和 B 类的地位或水平相等。实现属性若关联
A—— B(双向) B 类作为 A 类的属相存在, A 类作为 B 类的属性存在,语义上 A 类和 B 类的地位或水平相等。
- 聚合 A♢——>B B 类作为 A 类的属性存在,语义上 B 类可作为 A 类的一部分,这个关系可有可无,是A has--a B 的关系,如房子(A),桌子(B)
- 组合 A♦——>B B 类作为 A 类的属性存在,语义上 B 类是 A 类的一部分,这部分必须有,是 A contain--a B 的关系,如(人),大脑(B)。
一般情况下,继承和实现比较简单,就是其他几个关系会有点小复杂。