1)UML – Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 2)UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和它们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等。如右图 :
UML图分类 : 1)用例图(use case) 2)静态结构图:类图、对象图、包图、组件图、部署图 3)动态行为图 :交互图(时序图与协作图)、状态图、活动图 说明: 1)类图是描述类与类之间的关系的,是UML图中最核心的
1)用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。 2)类之间的关系 :依赖、泛化(继承)、实现、关联、聚合与组合 3)类图简单举例
package com.example.demo.uml.dependence;
public class PersonServiceBean {
private PersonDao personDap;
public void save(Person person) {
}
public IDCard getIDCard(Integer personid) {
return null;
}
public void modify() {
Department department = new Department();
}
}
class Department {
}
class IDCard {
}
class Person {
}
class PersonDao {
}
小结 1)类中用到了对方 2)如果是类的成员属性 3)如果是方法的返回类型 4)是方法接收的参数类型 5)方法中使用到
package com.example.demo.uml.generalization;
public abstract class DaoSupport {
public void save(Object entity) {
}
public void delete(Object id) {
}
}
package com.example.demo.uml.generalization;
public class PersonServiceBean extends DaoSupport{
}
小结 : 1)泛化关系实际上就是继承关系 2)如果A类继承了B类,我们就说A和B存在泛化关系
package com.example.demo.uml.implementation;
public interface PersonService {
void delete(Integer id);
}
package com.example.demo.uml.implementation;
public class PersonServiceBean implements PersonService {
@Override
public void delete(Integer id) {
}
}
单向一对一关系
双向一对一关系
package com.example.demo.uml.aggregation;
public class Computer {
// 鼠标可以和computer分离的
private Mouse mouse;
// 显示器可以和computer分离的
private Moniter moniter;
public void setMouse(Mouse mouse) {
this.mouse = mouse;
}
public void setMoniter(Moniter moniter) {
this.moniter = moniter;
}
}
class Mouse {
}
class Moniter {
}
如果我们的Mouse、Monitor和Computer是不可分离的,则升级为组合关系
再看一个案例 :在程序中我们定义实体 :Person与IDCard、Head,那么Head和Person就是组合,IDCard和Person就是聚合。
package com.example.demo.uml.composition;
public class Person {
private IDCard card;
private Head head = new Head();
}
class IDCard {
}
class Head {
}
但是如果在程序中Person实体中定义了对IDCard进行级联删除,即删除Person时连同IDCard一起删除,那么IDCard和Person就是组合了。