一:定义关系是指事物之间存在单项或双向的作用或者影响的状态,证明两个或者多个类是否存在关系设计到业务、架构、模块边界的问题,然而由于业务模型的抽象角度不同而不同,确定他们是否有关系是一件比较困难的事情。
二:类之间关系类之间的六种关系:依赖,泛化(继承),实现,关联,聚合,组合
1. 依赖依赖是除了聚合和组合之外的单向弱关系,比如使用一个类的属性、方法,或将其作为方法的参数传入或将其作为方法的返回值输出。
1.1 代码中的体现:A的方法参数中包含B。
代码语言:java复制public class UserService {
// UserService则依赖UserDTO
public void update(UserDTO userDTO){
// 注:局部变量是类对象,不符合迪米特法则
Scanner scanner = new Scanner(System.in);
}
}
class UserDTO {
}1.2 UML类图中的体现:虚线+箭头
依赖关系UML类图2. 泛化(继承)泛化(继承)包括子类和父类,子接口和父接口之间的两种泛化(继承)关系。
2.1 代码中的体现:使用extend关键字
代码语言:java复制// 子类与父类为 interface 则表示子接口和父接口之间的泛化(继承)关系
public class Person {
}
class Student extends Person {
}2.2 UML类图中的体现:实线+空心三角形
泛化关系UML类图3. 实现实现关系指的是一个class实现interface(可以实现多个接口)的功能;实现是类与接口之间最常见的关系。
3.1 代码中的体现:使用implement关键字
代码语言:java复制public interface UserService {
}
class UserServiceImpl implements UserService {
}3.2 UML类图中的体现:虚线加+空心三角
实现关系UML类图4. 关联关联关系:类与类之间的联接,它使一个类直到另一个类的属性和方法(实例变量的体现)。A依赖于B对象,并且把B作为A的一个成员变量,则A和B之间存在关联关系。关联可以是双向,也可以是单向的。两个类之前是一个层次,不存在部分和整体之间的关系。按照多重性可分为四类(一对一,一对多,多对一,多对多)4.1 代码中的体现:A的成员变量中包含B
代码语言:java复制public class Teacher {
private List
}
class Student {
}4.2 UML类图中的体现:实线+箭头
关联关系UML类图5. 聚合聚合关系是关联关系的一种特例,它体现的是整体与部分,是一种"弱拥有的关系"。与关联关系一样,聚合关系也是通过实例变量实现的。但是关联关系所设计的两个类处于统一层次上,而聚合关系中,两个类处在不平等层次上,一个代表整体,另一个代表部分5.1 代码中的体现:A的成员变量包含B(整体和部分可拆分)
代码语言:java复制//电脑和鼠标可拆分开
public class Computer {
private Mouse mouse;
}
class Mouse {
}5.2 UML类图中的体现:空心菱形+实线箭头
聚合关系UML类图6. 组合组合关系是关联关系的一种特例,这种关系比聚合更强,也称为强聚合。整体和个体不能独立存在,一定是在一个模块中同时管理整体和个体,生命周期必须相同(级联)。6.1 代码中的体现:A的成员变量包含B(整体和部分不可拆分,即整体与部分同生共死)
代码语言:java复制public class Computer {
//创建鼠标对象,当电脑对象删除的时候该鼠标对象也将被删除
private Mouse mouse = new Mouse();
}
class Mouse {
}6.2 UML类图中的体现:实心菱形+实线箭头
组合关系UML类图