1.UML
UML(统一建模语言)
- UML提供了多种图,包括:类图、用例图、活动图、状态图等
- 其中,类图最核心
类图 - 描述类和类之间关系的图
- 类和类之间的关系:依赖、泛化(继承)、实现、关联、组合、聚合
- 符号标志
依赖:(虚线 ----->)
关联: (实线 )
泛化: (实线+三角)
实现: (虚线+三角)
组合: (实心菱形)
聚合: (空心菱形)
1.1. 依赖关系
只要在类中用到了对方,就存在依赖关系;
- 类的成员属性
- 方法的返回值
- 方法的参数
- 方法中用到
public A {
private B;
public D method(C c){
E e = B.selectById(id);
}
}
则:类A依赖类B、类C、类D、类E
1.2 泛化关系
- 泛化关系即继承关系,是依赖关系的特例;
public abstract class UserServer{
public abstract void save(User user);
}
public class UserServerImpl extends UserServer{}
1.3 实现关系
- 即类A实现了接口B,是依赖关系的特例
public interface B{
void save(User user);
}
public class A implement B{
void save(){
}
}
1.4 关联关系
- 关联关系是类与类之间的联系,是依赖关系的特例
- 关联关系具有导航性:单向关系、双向关系
- 关联关系具有多重性:1:1、1:n、n:1、n:n
//单向一对一:
public class Person{
private IdCard idCard;
}
public class IdCard{}
//双向一对一
public class Person{
private IdCard idCard;
}
public class IdCard{
private Person person;
}
1.5 聚合关系
- 聚合表示整体与部分的关系,且整体与部分可分离
- 聚合关系是关联关系的特例
//电脑
public class Computer{
private Mouse mouse;
Private Monitor monitor;
}
//鼠标
public class Mouse{}
//显示器
public class Monitor{}
1.6 组合关系
- 组合表示整体与部分的关系,且整体与部分不可分离
//人
public class Person{
private Head head = new Head();
}
public class Head{}
2. 总结
- 泛化、实现、关联关系是依赖关系的特例
- 组合、聚合是关联关系的特例
- 组合和聚合的区别在于整体和部分是否可以分离