1.什么是UML?
UML本身是一套符号的规定,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等
1.1 UML分类
- 用例图
- 静态结构图:类图(描述类和类之间的关系)、对象图、包图、组件图、部署图
- 动态行为图:交互图(时序图与协作图)、状态图、活动图
2.UML类图
用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系
2.1 依赖关系(Dependence)
类中用到了对方,则两者就存在依赖关系
public class PersonServiceBean {
private PersonDao personDao; // 成员属性
public void save(Person person) { // 参数
}
public IDCard getIDCard(Integer personid) { // 返回类型
IDCard idCard = new IDCard();
return idCard;
}
public void modify() {
Department department = new Department(); // 方法中使用到的
}
}
2.2 泛化关系(generalization)
实际上就是继承关系,它是依赖关系的特例
// DaoSupport.java
public abstract class DaoSupport {
public void save(Object entity) {
}
public void delete(Object id) {
}
}
// PersonServiceBean.java
public class PersonServiceBean extends DaoSupport{}
2.3 实现关系(Implementation)
实际上就是A类实现B接口,它是依赖关系的特例
// PersonService.java
public interface PersonService {
public void delete(Integer id);
}
// PersonServiceBean.java
public class PersonServiceBean implements PersonService{
@Override
public void delete(Integer id) {}
}
2.4 关联关系(Association)
实际上就是类与类之间的联系,它是依赖关系的特例。具有导航性(双向关系或单向关系)与多重性(如“1”表示有且仅有一个)
// Person.java
public class Person {
private IDCard card;
}
// IDCard.java
public class IDCard {
private Person person; // 如果存在就是双向关联关系
}
2.5 聚合关系(Aggregation)
表示的是整体和部分的关系,整体与部分可以分开,它是关联关系的特例(具有关联的导航性与多重性)
比如一台电脑由显示器和鼠标等组成,这些配件是可以从电脑上分离出来的(即可以不要),则使用带空心菱形的实线来表示:
public class Computer {
// 此时两个对象和Computer是可以分离的
private Mouse mouse;
private Monitor monitor;
public void setMouse(Mouse mouse) {
this.mouse = mouse;
}
public void setMonitor(Monitor monitor) {
this.monitor = monitor;
}
}
注意:如果在程序中Person实体中定义了对mouse进行级联删除,即删除Person时连同mouse一起删除,则mouse和Person就是组合关系
2.6 组合关系(Composition)
也是整体与部分的关系,但是整体与部分不可以分开
public class Computer {
// 此时两个对象和Computer是不可以分离的(Computer对象一创建这两个对象也就创建了)
private Mouse mouse = new Mouse();
private Monitor monitor = new Monitor();
public void setMouse(Mouse mouse) {
this.mouse = mouse;
}
public void setMonitor(Monitor monitor) {
this.monitor = monitor;
}
}
3.参考
https://www.bilibili.com/video/BV1G4411c7N4?p=23-27