一、泛化Generalization/继承
泛化关系指的就是继承关系。
在UML中,泛化关系用带空心三角形的实线表示,由子类指向父类。
二、实现Realization
即实现接口。
在UML中,实现关系用带空心三角形的虚线表示,由实现类指向接口。
三、依赖Dependency
依赖关系是一种使用关系,表示在一个类中使用到了另外一个类;在大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。
在UML中,依赖关系使用带箭头的虚线表示,由依赖的一方指向被依赖的一方。
示例:
驾驶员开车,在Driver类的drive()方法中将Car类型的对象Car作为一个参数传递,一遍在drive方法中能调用Car的move方法,且驾驶员的drive方法依赖车的move方法
四、关联Association
是一种拥有的关系,它使一个类知道另一个类的属性和方法。这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。在实现关联关系时,一般将一个类的对象作为另一个类的成员变量。
关联关系包括:单向关联;双向关联和自关联三种情况
对于类A和类B:
● 类A将类B的对象作为它的一个成员变量,类B中不含类A类型的成员变量,这种情况为单向关联,即A关联B;
● 类A中含有类B类型的成员变量且类B中含类A类型的成员变量,这种情况为双向关联;
● 类A中含有类A类型的成员变量,这种情况为自关联
在UML中,关联关系由实线或带箭头的实线表示。
● 双向关联:用实线表示;
● 单向关联:用带箭头的实线表示,由关联类指向被关联的类;
● 自关联:用带箭头的实线表示,由自己指向自己;
五、聚合Aggregation
表示部分与整体的关系,成员对象是整体的一部分,但成员对象可以脱离整体对象而独立存在。如汽车和轮胎,轮胎可以脱离汽车而单独存在,它们之间就是一种聚合关系;
在UML中,聚合关系使用带空心菱形的实线表示
六、组合关系
同样的,组合关系也表示部分与整体的关系,与聚合关系不同的是,组合关系中,成员对象不可以脱离整体对象而单独存在,比如头和嘴巴的关系就是一种组合关系,头不在了,那嘴巴自然而然也就不在了。
在UML中,组合关系使用带实心菱形的实线表示。
七、类关系的强弱
强弱关系:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
另外我们常常说的降低耦合性,也是降低类与类之间的关系。
八、类关系相关UML图汇总
九、参考链接:
https://juejin.cn/post/7017014503007059998
http://www.imooc.com/article/3915
书籍:《设计模式的艺术》