文章目录
- 关系
- 继承
- UML图
- 代码:
- 实现
- UML图
- 代码:
- 依赖
- UML图
- 代码:
- 关联
- UML图
- 代码
- 聚合
- UML图
- 代码
- 组合
- UML图
- 代码
- 区别
- 聚合和组合的区别
- 依赖、关联和聚合、组合的区别
- 耦合度强弱
关系
继承
表示方式:用实现空心箭头
UML图
代码:
public class Father{
public void 百万财产()
}
}
class Son extends Father{
public void 败家(){}
}
实现
表示方式:虚线空心三角形箭头表示,实现类指向接口
UML图
代码:
public class Interface{
public void 抽象方法(){}
}
class Son extends Implement{
public void 抽象方法(){
具体实现;
}
}
依赖
表示方式:虚线箭头
依赖关系是类与类之间的连接,是一种使用与被使用的关系。双方都不用定义对方的对象属性,只在方法中使用类。
关注点:
- 无需定义对象属性。
- 在方法内部创建依赖类的对象,或者调用依赖类的静态方法,或者依赖对象最为方法参数使用。
- 类与类之间的关系在同一层次上。
例如:司机开车
UML图
代码:
class Car{
public void move()
//车子会移动
}
class Driver{
public void drive(Car car){
car.move();
}
}
关联
表示方式:实线箭头
关联关系也是类与类之间的连接.需要定义(拥有)另一个类的对象属性,关联可以是单向,也可以是双向。
关注点:
- 必须定义对象属性。
- 类与类之间的关系在同一层次上。
UML图
代码
public class ClassA {
B b;
}
class B{
}
聚合
表示方式:尾部为空心菱形的实现箭头(也可以没箭头)
聚合是关联关系的一种,是整体与个体(部分)的关系。个体可能被多个整体共享,删除整体,个体可以单独存在,删除个体,也不影响整体,整体和个体可单独存在。例如:班级和学生,学生会和学生,删除班级,学生还存在。
关注点:
- 必须定义对象属性。
- 类与类之间的关系在不同层次上,是整体与个体/部分的关系。
- 整体与个体都可单独存在,生命周期没有关联。
UML图
代码
public class Student {
}
class Class {
List<Student> students;
}
或者使用静态内部类
class Class {
List<Student> students;
static class Student {
}
}
组合
表示方式:尾部为实心菱形的实现箭头(也可以没箭头)
组合也是关联关系的一种,比聚合更强的关联关系,也是整体与个体/部分的关系。但是整体不在,个体也不存在,个体不存在,整体是在的。
例如:人与四肢,人没了,四肢也会腐朽;四肢没了,但是人还可以活着
UML图
代码
public class People{
}
class leg{
List<Leg> Legs;
}
区别
聚合和组合的区别
- 聚合个体脱离整体可以单独存在。
- 组合个体不能脱离整体单独存在。
依赖、关联和聚合、组合的区别
- 依赖、关联:类之间的关系在同一层次上。
- 聚合、组合:类之间是整体与部分的关系。
耦合度强弱
耦合度强度依次增强:依赖<关联<聚合<组合