按照依赖强度排序:
(强)实现 == 泛化 > 组合 > 聚合 > 关联 > 依赖(弱)
1.实现关系
是一种类与接口的关系,表示类是接口所有特征和行为的实现
侧重点:接口是抽象的,类把接口规定的行为具体实现
例如:叫声是一个接口,不同的动物类对叫声具体实现
2.泛化关系
指定了子类如何特化父类的所有特征和行为。
侧重点:父与子
例如:Dog、Bird和父类Animal
3.组合关系
是整体与部分的关系,组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期
侧重点:B是A的组成部分,当A不存在的时候B也不存在,A可以控制B
例如:公司与部门
4.聚合关系
是整体与部分的关系。
侧重点:B是A的组成部分,但是A不存在的时候B同时也能独立存在。
例如:车和轮胎
5.关联关系
是一种拥有的关系,它使一个类知道另一个类的属性和方法。
侧重点:A拥有B,但是B不是A本身的一部分。
例如:学生和老师,学生和课程。
6.依赖关系
单向,是一种“use a”关系。
侧重点:B不是A的成员变量,B表现为A的局部变量,方法参数,静态方法调用等。
例如:人和空气、人和水
区分类之间的关系总结:
如果A和B明显不是实现或者继承关系,则看他们之间的关联强度
(1)如果A不是B的属性,但是A的改变会影响B,B的改变却不会影响A,则可能是依赖关系,举例:空气不是人的属性,空气对人有单向影响,结论是人依赖空气
(2)如果AB对彼此都有影响,但A和B没有明显的整体和部分的关系(一大一小),则可能是关联关系,举例:学生和老师,学生和学习计划
(3)如果AB有明显的整体与部分关系,但是彼此可以独立存在,则可能是聚合关系,举例:学习计划和课程,计算机和CPU
(4)如果AB不仅有整体和部分的关系,并且生命周期紧紧相关,则可能是组合关系,举例:人和器官