设计模式之——UML类图

一、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类图
在这里插入图片描述


参考文章

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值