关系是指事物之间存在单项或双向的作用或者影响的状态,证明两个或者多个类是否存在关系设计到业务、架构、模块边界的问题,然而由于业务模型的抽象角度不同而不同,确定他们是否有关系是一件比较困难的事情。
类之间的六种关系:依赖,泛化(继承),实现,关联,聚合,组合
依赖是除了聚合和组合之外的单向弱关系,比如使用一个类的属性、方法,或将其作为方法的参数传入或将其作为方法的返回值输出。
1.1 代码中的体现:A的方法参数中包含B。
public class UserService {
// UserService则依赖UserDTO
public void update(UserDTO userDTO){
// 注:局部变量是类对象,不符合迪米特法则
Scanner scanner = new Scanner(System.in);
}
}
class UserDTO {
}
1.2 UML类图中的体现:虚线+箭头
泛化(继承)包括子类和父类,子接口和父接口之间的两种泛化(继承)关系。
2.1 代码中的体现:使用extend关键字
// 子类与父类为 interface 则表示子接口和父接口之间的泛化(继承)关系
public class Person {
}
class Student extends Person {
}
2.2 UML类图中的体现:实线+空心三角形
实现关系指的是一个class实现interface(可以实现多个接口)的功能;实现是类与接口之间最常见的关系。
3.1 代码中的体现:使用implement关键字
public interface UserService {
}
class UserServiceImpl implements UserService {
}
3.2 UML类图中的体现:虚线加+空心三角
4.1 代码中的体现:A的成员变量中包含B
public class Teacher {
private List<Student> students;
}
class Student {
}
4.2 UML类图中的体现:实线+箭头
5.1 代码中的体现:A的成员变量包含B(整体和部分可拆分)
//电脑和鼠标可拆分开
public class Computer {
private Mouse mouse;
}
class Mouse {
}
5.2 UML类图中的体现:空心菱形+实线箭头
6.1 代码中的体现:A的成员变量包含B(整体和部分不可拆分,即整体与部分同生共死)
public class Computer {
//创建鼠标对象,当电脑对象删除的时候该鼠标对象也将被删除
private Mouse mouse = new Mouse();
}
class Mouse {
}
6.2 UML类图中的体现:实心菱形+实线箭头
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。