UML图类之间的关系
泛化(继承)extends
子类A指向父类B,子类增加新功能。也称 “is-a” 关系。
实现 interface
A类指向接口B,A实现接口B
依赖
依赖关系是一种使用关系,即一个类的实现需要另外一个类的协助,所以尽量不使用双向互相依赖
A依赖B:
- 类A中某个方法的形参、局部变量、返回类型是类B的类型;
- 类A中调用了类B的静态方法;
多重性
通常在关联、聚合、组合中使用。就是代表多少个关联对象存在。使用 “. .”、星号、数字表示
表示方式 | 多重性说明 |
---|---|
1 . . 1 | 表示 另一个类 的一个对象只与 一个 该类对象有关联 |
0 . . * | 表示另一个类的一个对象与 0个或多个 该类对象有关联 |
1 . . * | 表示另一个类的一个对象与1个或多个该类对象有关联 |
0 . . 1 | 表示另一个类的一个对象与0个或1个该类对象有关联 |
m . . n | 表示另一个类的一个对象与最少m、最多n个该类对象有关联 |
关联
关联关系是类(对象)之间的拥有关系,即 “has-a”。
被关联类B以类属性的方式出现在关联类A中,或者是关联类A中引用了一个类型为被关联类B的全局变量
关联关系与依赖关系的区别在于:
1、依赖关系是一种临时关系,主要体现在方法参数,当调用方法时才有关系;
2、关联关系是一种长期关系,主要体现在成员变量,无论是否调用方法这种关系都存在;
聚合
聚合关系也是一种 “has-a” 关系。
类A是部分,类B是整体,类B包含类A,类A是类B的成员变量,类B消失,类A依旧可以存在
关联关系与聚合关系都体现在成员变量,区别在于:
1、关联关系双方是一种平级关系,是个体与个体之间的关系;
2、聚合关系双方是一种不平级关系,是整体与部分的关系;
组合
组合关系是一种强聚合关系,组合关系和聚合关系的区别在于:聚合关系中部分离开整体仍可存活,组合关系中部分离开整体就没有意义啦。
比如:车子是由发动机、车架、轮子等部分组成,它们的关系为组合关系。