一、UML类图介绍
1、UML 类图用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。
2、类之间的关系:依赖、泛化(继承)、实现、依赖、聚合和组合。
3、类图的简单示例:
public class Person {
private Integer id;
private String name;
public void setName(String name) {
this.name = name;
}
public String getName(String name) {
return this.name;
}
}
二、类图——依赖
定义
- 只要在类中用到了对方,那么它们之间就存在依赖关系。
- 类中用到了对方的情况 :
- 是类的成员属性;
- 是方法的返回类型;
- 是方法接收的参数类型;
- 在方法中使用到。
符号
依赖关系使用带箭头的虚线表示,由依赖的一方指向被依赖的一方。
代码
class PersonDao {}
class IDCard {}
class Person {}
class Department {}
public class PersonService {
// 1. 类属性成员 PersonDao类
private PersonDao personDao;
// 2. 方法的返回类型 IDCard类
public IDCard getIDCard(Integer IDcard) {
return new IDCard();
}
// 3. 方法接收的参数 Person类
public void save(Person person) {}
// 4. 在方法中使用到 Department类
public void check() {
Department department = new Department();
}
}
UML类图
三、类图——泛化(继承)
定义
泛化关系其实就是继承关系,它是依赖关系的一种特例。
符号
泛化(继承)关系使用带空心三角形的直线来表示,由子类指向父类。
代码
public class Father {
public void save(Object obj) {}
public void delete(Object obj) {}
}
public class Son extends father {
}
UML类图
四、类图——实现
定义
实现关系就是 类A
实现某个 接口B
,它是依赖关系的特例。
符号
实现关系用带空心三角形的虚线来表示。
代码
public interface Action {
public void sayHello();
}
public class MyAction implements Action {
@Override
public void sayHello() {
System.out.println("Hello!");
}
}
UML类图
五、类图——关联
定义
关联关系主要描述一个类与另一个类之间的关系,它是依赖关系的特例。
符号
关联关系使用实线来连接有关系的对象所对应的类。
**
5.1 单向关联
定义
类的关联关系可以是单向的,例如每个人拥有一张IDCard。则 Person
类和 IDCard
类具有单向关联关系。
代码
public class Person{
private IDCard card;
}
public class IDCard{}
UML类图
5.2 双向关联
定义
顾客购买物品并拥有商品,反之卖出的商品总与某位顾客相关联,所以 Customer
类和 Product
类具有双向关联关系。
代码
public class Customer{
private Product product;
}
public class Product{
private Customer customer;
}
UML类图
5.3 自关联
定义
有时一个类的属性的类型是这个类本身,这就叫做自关联。
代码
例如:一个节点类 Node
的成员类型又是节点类 Node
本身。
public class Node{
private Node subNode;
//......
}
UML类图
六、类图——聚合
定义
聚合关系表示的是整体和部分的关系,整体和部分可以分开。聚合关系是关联关系的特例,所以具有到航行和多重性。
符号
聚合关系使用带空心菱形的直线表示,箭头指向成员对象对应的类。
代码
例如:一台电脑由键盘、显示器、鼠标等组成,组成电脑的各个配件可以从电脑上分离出来。
class Mouse {}
class Monitor {}
public class Computer {
private Mouse mouse;
private Monitor monitor;
public void setMouse(Mouse mouse) {
this.mouse = mouse;
}
public void setMonitor(Monitor monitor) {
this.monitor = monitor;
}
}
UML类图
七、类图——组合
定义
组合关系也是整体和部分的关系,但是整体和部分不可分离。
符号
组合关系使用带实心菱形的直线表示,指向成员对应的类。
代码
例如:一个人有很多器官,包括头、眼睛等,这些对于人而言都是不可分离的。
class Head {}
class Eye {}
public class Person {
private Head head = new Head();
private Eye eye = new Eye();
}
UML类图
参考文章
- 都2020年了还不会 UML,面试官怎么敢要你? https://blog.csdn.net/qq_33589510/article/details/104334268
- 尚硅谷 韩顺平 图解Java设计模式 http://www.atguigu.com/download_detail.shtml?v=202