Qouson's blog Qouson's blog
首页
  • Java 基础

    • 基础
    • String
  • Java 中级

    • 网络编程
  • Java 高级

    • JVM
    • 多线程
  • Spring
  • SpringMVC
  • SpringBoot
  • MySQL
  • Redis
  • MQ
  • ZooKeeper
  • git
  • linux
  • 设计模式
  • 数据结构与算法
  • 计算机基础
  • Java相关框架
  • 分布式
  • DDD领域驱动设计
  • 系统设计
  • 杂乱无章
Java知识图谱
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

qouson

Java界的小学生
首页
  • Java 基础

    • 基础
    • String
  • Java 中级

    • 网络编程
  • Java 高级

    • JVM
    • 多线程
  • Spring
  • SpringMVC
  • SpringBoot
  • MySQL
  • Redis
  • MQ
  • ZooKeeper
  • git
  • linux
  • 设计模式
  • 数据结构与算法
  • 计算机基础
  • Java相关框架
  • 分布式
  • DDD领域驱动设计
  • 系统设计
  • 杂乱无章
Java知识图谱
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • git

  • linux

  • 设计模式

    • 设计模式的七大原则
    • 设计模式
    • UML类图
      • UML 基本介绍
      • UML图
      • UML-类图
        • 类图—依赖关系(Dependence)
        • 类图—泛化关系(generalization)
        • 类图—实现关系(Implementation)
        • 类图—关联关系(Association)
        • 类图—聚合关系(Aggregation)
        • 类图—组合关系(Composition)
    • 原型模式

    • 工厂模式

    • 建造者模式

    • 享元模式

    • 代理模式

    • 外观模式

    • 桥接模式

    • 组合模式

    • 装饰者模式

    • 适配器模式

    • 中介者模式

    • 命令模式

    • 备忘录模式

    • 模板方法模式

    • 状态模式

    • 策略模式

    • 职责链模式

    • 观察者模式

    • 解释器模式

    • 访问者模式

    • 迭代器模式

  • 数据结构与算法

  • 计算机基础

  • Java相关框架

  • 分布式

  • DDD领域驱动设计

  • 系统设计

  • DevOps

  • python

  • 杂乱无章

  • 更多
  • 设计模式
qouson
2024-05-23
目录

UML类图

# UML类图

# UML 基本介绍

  • 1)UML——Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果
  • 2)UML 本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化(继承)、依赖、组合、聚合等,如图: 20210629120350 20210629121255
  • 3)使用 UML 来建模,常用的工具有 Rational Rose , 也可以使用一些插件来建模

# UML图

画 UML 图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,UML 图分类:

  • 1)用例图(use case)
  • 2)静态结构图:类图、对象图、包图、组件图、部署图
  • 3)动态行为图:交互图(时序图与协作图)、状态图、活动图

说明:

  • 1)类图是描述类与类之间的关系的,是 UML 图中最核心的
  • 2)在使用设计模式时,我们必然会使用类图

# UML-类图

  • 1)用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。
  • 2)类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合。
  • 3)类图简单举例
public class Person{ //代码形式->类图
    private Integer id; 
    private String name;
    public void setName(String name){ 
        this.name=name;
    }
    public String getName(){ 
        return name;
    }
}
1
2
3
4
5
6
7
8
9
10

20210629132627

# 类图—依赖关系(Dependence)

只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编绎都通过不了。

public class PersonServiceBean { 
    private PersonDao personDao;//类
    public void save(Person person){

    }
    public IDCard getIDCard(Integer personid){

    } 
    public void modify(){
        Department department = new Department();
    }
}
public class PersonDao{} 
public class IDCard{} 
public class Person{} 
public class Department{}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

20210629132951

  • 1)类中用到了对方
  • 2)如果是类的成员属性
  • 3)如果是方法的返回类型
  • 4)是方法接收的参数类型
  • 5)方法中使用到

# 类图—泛化关系(generalization)

泛化关系实际上就是继承关系,他是依赖关系的特例

public abstract class DaoSupport{ 
    public void save(Object entity){}
    public void delete(Object id){}
}

public class PersonServiceBean extends Daosupport{
}
1
2
3
4
5
6
7

20210629133519

  • 1)泛化关系实际上就是继承关系
  • 2)如果 A 类继承了 B 类,我们就说 A 和 B 存在泛化关系

# 类图—实现关系(Implementation)

实现关系实际上就是 A 类实现 B 接口,他是依赖关系的特例

public interface PersonService { 
    public void delete(Interger id);
}
public class PersonServiceBean implements PersonService { 
    public void delete(Interger id){}
}
1
2
3
4
5
6

20210629133636

# 类图—关联关系(Association)

//单向一对一关系
public class Person{
    private IDCard card;
}
public class IDCard{

}
//双向一对一关系
public class Person{
    private IDCard card;
}
public class IDCard{
    private Person; person;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

20210629134006

# 类图—聚合关系(Aggregation)

  • 基本介绍

    • 聚合关系(Aggregation)表示的是整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
    • 如:一台电脑由键盘(keyboard)、显示器(monitor),鼠标等组成;组成电脑的各个配件是可以从电脑上分离出来的,使用带空心菱形的实线来表示:
  • 应用实例

package com.atguigu.uml.aggregation;

public class Computer {
    private Mouse mouse; //鼠标可以和computer分离
    private Moniter moniter;//显示器可以和Computer分离

    public void setMouse(Mouse mouse) {
        this.mouse = mouse;
    }

    public void setMoniter(Moniter moniter) {
        this.moniter = moniter;
    }
}


public class Moniter {

}

public class Mouse {

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

20210629134205

# 类图—组合关系(Composition)

  • 基本介绍
    • 组合关系:也是整体与部分的关系,但是整体与部分不可以分开。
    • 再看一个案例:在程序中我们定义实体:Person 与 IDCard、Head, 那么 Head 和 Person 就是 组合,IDCard 和Person 就是聚合
    • 但是如果在程序中 Person 实体中定义了对 IDCard 进行级联删除,即删除 Person 时连同 IDCard 一起删除,那么 IDCard 和 Person 就是组合了。
public class Person{ 
    private IDCard card;
    private Head head = new Head();
}
public class IDCard{} 
public class Head{}
1
2
3
4
5
6
package com.atguigu.uml.composition;

public class Computer {
    private Mouse mouse = new Mouse(); //鼠标和computer不能分离
    private Moniter moniter = new Moniter();//显示器和Computer不能分离

    public void setMouse(Mouse mouse) {
        this.mouse = mouse;
    }

    public void setMoniter(Moniter moniter) {
        this.moniter = moniter;
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

20210629134733

编辑 (opens new window)
上次更新: 2024/05/24, 11:36:46
设计模式
algorithm

← 设计模式 algorithm→

最近更新
01
杂乱无章
12-25
02
基础-大彬
11-14
03
集合-大彬
11-14
更多文章>
Theme by Vdoing | Copyright © 2023-2025 qouson
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式