UML本身是一套符号的规定,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等
用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系
类中用到了对方,则两者就存在依赖关系
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(); // 方法中使用到的
}
}
实际上就是继承关系,它是依赖关系的特例
// DaoSupport.java
public abstract class DaoSupport {
public void save(Object entity) {
}
public void delete(Object id) {
}
}
// PersonServiceBean.java
public class PersonServiceBean extends DaoSupport{}
实际上就是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) {}
}
实际上就是类与类之间的联系,它是依赖关系的特例。具有导航性(双向关系或单向关系)与多重性(如“1”表示有且仅有一个)
// Person.java
public class Person {
private IDCard card;
}
// IDCard.java
public class IDCard {
private Person person; // 如果存在就是双向关联关系
}
表示的是整体和部分的关系,整体与部分可以分开,它是关联关系的特例(具有关联的导航性与多重性)
比如一台电脑由显示器和鼠标等组成,这些配件是可以从电脑上分离出来的(即可以不要),则使用带空心菱形的实线来表示:
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就是组合关系
也是整体与部分的关系,但是整体与部分不可以分开
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;
}
}
https://www.bilibili.com/video/BV1G4411c7N4?p=23-27