简介
UML: unified modeling language, 统一建模语言,是一种用于软件系统分析和设计的语言工具
继承,依赖,聚合,组合 简单示意图如下:
依赖-Dependency
只要是在类中用到了对方,那么他们之间就存在依赖关系。如果 没有对方,无法编译
- 类中用到了对方
- 如果是类的成员属性
- 如果是方法的返回类型
- 是方法接收的参数类型
- 方法中使用到
示例代码:
package com.uml.dependence;
public class PersonServiceBean {
private PersonDao personDao;
public void save(Person person) {
}
private IDCard getIDCard(Integer personId) {
return null;
}
public void modify() {
Department department = new Department();
}
}
UML关系图如下图所示:
泛化(继承)-generalization
泛化关系实际上就是继承关系,是依赖关系的一种特例
示例代码:
public abstract class DataSupport {
public void save(Object entity) {
}
public void delete(Object id){
}
}
public class PersonSaveBean extends DataSupport{
}
UML图:
小结:
- 泛化关系实际上就是继承关系
- 如果A类继承了B类,我们就说A和B存在泛化关系
实现-implementation(realization)
实现关系就是A类实现B类,也是依赖关系的一种特例
示例代码:
public interface PersonService {
public void delete(Integer id);
}
public class PersonServiceBean implements PersonService {
@Override
public void delete(Integer id) {
}
}
UML图:
关联-Association
关联关系实际上就是类与类之间的关系,也是依赖关系的特例
关联具有导航性:即双向关系或单向关系
关联就有多重性:如“1”(表示有且仅有一个),“0…”(表示0个或者多个),“0,1”(表示0个或者1个),“n…m”(表示n到m个都可以),“m…”(表示至少m个)
示例代码:
单向一对一关系:
class Person {
private IDCard idCard;
}
class IDCard{
}
双向一对一关系:
class Person {
private IDCard idCard;
}
class IDCard{
private Person person;
}
聚合-aggregation
表示整体和部分的关系,整体与部分可以分开,是关联关系的特例,所以也具有关联关系的导航性和多重性。
如:一台电脑由键盘(keyboard)、显示器(monitor)、鼠标等组成,组成电脑的各个配件是可以从电脑上分离出来的,使用空心菱形的实现来表示
示例代码:
public class Computer {
private Mouse mouse; //鼠标可以和computer分离
private Monitor monitor;//显示器可以和computer分离
public void setMouse(Mouse mouse) {
this.mouse = mouse;
}
public void setMonitor(Monitor monitor) {
this.monitor = monitor;
}
}
public class Monitor {
}
public class Mouse {
}
UML图:
组合-composition
组合关系也是整体与部分的关系,但是整体与部分不可分开
借用aggregation中的例子,如果我们认为Mouse,Monitor和Computer是不可分离的,则升级为组合关系。
实例代码:
public class Computer {
private Mouse mouse = new Mouse(); //鼠标可以和computer不可以分离
private Monitor monitor = new Monitor();//显示器可以和computer不可以分离
}
在组合中,Mouse、Monitor和Computer是共生共灭的关系,在Computer类创建的时候Mouse和Monitor也会创建,当Computer类销毁对的时候,Mouse和Monitor也会销毁
组合、聚合区分实例
我们定义一个对象Person(人),人与身体上的器官(头)是不可分离的属于组合关系,每个人都有身份证,身份证丢了可以重新补办,人与身份证的关系属于聚合关系。
示例代码:
public class Person {
private IDCard idCard;
private Head head = new Head();
}
UML图: