UML类图及Java实现

简介: 我想完整记录一下Java版的设计模式的内容,本篇是关于UML类图,它与设计模式息息相关。图文形式结合介绍UML类图,并且在理解困难的地方做了解释。
我想完整记录一下Java版的设计模式的内容,本篇是关于UML类图,它与设计模式息息相关;或许这篇文章已经足够经典: 30分钟学会UML类图 - 知乎 (zhihu.com);如果不嫌弃也可以看看我这个,就是比较简单直接。

本文含有仓库链接:Java-设计模式,可以结合起来学习。

为什么要学UML图?我认为这是一种逻辑的体现,普通写Demo可能没有这种感觉,但当你学到深入时,必须重温设计模式。因为很多源码的底层(例如Spring、Mybatis...)就是一种设计模式的体现,而设计模式只是一种思想,根据这种思想选择合适的设计模式并改动,最终形成底层逻辑...,读源码很痛苦,我们将其抽象成逻辑图会帮助我们理解源码设计的思路,而这一切原来就是从基础又开始的,所以...再温一遍,反反复复。

优点:

  1. 逻辑清晰,从软件工程规范的角度,应该对系统有完整的设计(没点功力还真难构建呢)
  2. 便于分工

通用

符号含义:

  • +表示 public
  • -表示 private
  • #表示 protected
  • 不带符号表示 default

用于定义一个类的属性和方法。

UML

image.png

Java

public class Person {
    private String name;

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }
}

接口

主要定义方法接口Interface,让子类去实现该接口,做到多继承或者代码规范。

UML

image.png

Java

public interface PersonMapper {
    public Person getUserByName(String userName);
}

实现

类通过implements实现Interface接口,并实现接口中的方法。

UML

image.png

Java

public class PersonMapperImpl implements PersonMapper {
    @Override
    public Person getUserByName(String userName) {
        return null;
    }
}

关联

A关联B,则B是作为A的属性存在,该属性也可以是A类中的局部变量,在局部中担属性存在。它有变种:聚合、组成、依赖。

UML

image.png

Java

public class Car {
    private Tyre tyre;
}
public class Tyre {
}

依赖

A类中某个方法的参数需要传入B这个类。

UML

image.png

Java

public class PersonController {
    public R save(Person person){
        // 保存
        return R.success();
    }
}

这两个:“ 聚合 ” 与 “ 组成 ”经常傻傻分不清楚;关联中:依赖、聚合、组成,其实都是关联的另外三种形式,都是A类中含有B类,但是特点不一样。

  1. 聚合:A类中的属性含有B类,但是一般在外部将B初始化后,通过Set的方式或者A类的有参构造方法中传入。
  2. 组成:A类中的属性含有B类,且B类的初始化一般在A类的构造方法中随着A类一块初始化,与A同生同死
  3. 依赖:一般是在A中的方法中使用,B类声明周期在A的方法中,A类本身不含B类的属性定义。

聚合

公司倒了,员工还在。

UML

image.png

Java

public class Company {
    private Person person;

    public void setPerson(Person person) {
        this.person = person;
    }
}

外部传入Person

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        Company company = new Company();
        company.setPerson(person);
    }
}

组成

心脏...是鸟的组成部分,缺它不可,“ 我亡它亡 ”。

UML

image.png

Java

public class Bird {
    private Heart heart;
    public Bird() {
        heart = new Heart();
    }
}

心脏

public class Heart {
}

继承

子类可以得到父类所有(允许访问)的属性和方法。Java是单继承。,一个子类只能extends一个父类。

UML

image.png

Java

public class Man extends Person {
    private String gender;

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

总结

UML.drawio.png

目录
相关文章
|
8月前
|
uml
UML之类图
UML之类图
103 1
|
8月前
|
数据可视化 Java uml
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
465 1
|
5月前
|
Java uml
使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实
该博客文章通过UML类图和Java代码示例,展示了如何使用工厂方法模式设计一个支持加法、减法、乘法和除法运算的计算机程序,并严格按照类图设计实现程序。
|
5月前
|
Java uml
1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
该博客文章展示了如何使用简单工厂模式设计一个程序,该程序能够根据用户输入的运算符(加、减、乘、除)对两个数进行计算,并提供了相应的UML类图和Java源码实现。
1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
|
7月前
|
应用服务中间件 uml
【UML】软件工程中常用图:类图、部署图、时序图、状态图
【UML】软件工程中常用图:类图、部署图、时序图、状态图
1050 1
|
4月前
|
设计模式 Java 测试技术
Java设计模式-UML与设计原则(1)
Java设计模式-UML与设计原则(1)
|
5月前
|
数据可视化 Java uml
精通UML:从类图到序列图的实战指南
【8月更文第23天】统一建模语言(Unified Modeling Language, UML)是一种用于软件工程的标准图形化语言,它提供了一套工具来帮助开发团队可视化、构造和文档化软件系统。在UML中,类图和序列图是最常用也是最重要的两种图。类图用于描述系统的静态结构,而序列图则用于表示对象之间的交互和系统的动态行为。
245 5
|
5月前
|
设计模式 uml
设计模式常用的UML图------类图
这篇文章介绍了UML中类图的基本概念和用途,详细解释了类与接口、类之间的关系,包括继承、实现、组合、聚合、关联和依赖等六种关系,并展示了它们在类图中的表示方法。
设计模式常用的UML图------类图
|
5月前
|
uml
UML 类图几种关系(依赖、关联、泛化、实现、聚合、组合)及其对应代码
UML 类图几种关系(依赖、关联、泛化、实现、聚合、组合)及其对应代码
716 0
|
8月前
|
数据可视化 Java uml
Java的UML类图
Java的UML类图
132 1