使用PlantUml插件画类图

本文介绍如何使用 PlantUml 插件来画 Uml 图

一、PlantUml简介

PlantUML 是一个可以快速编写各种图表的工具,可以通过安装 Intellij Idea 或者 Vs Code 插件来画图,也可以在线编辑,链接为:

https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000

类图示例文档链接为:

https://plantuml.com/zh/class-diagram

动动发财小手,关注 + 点赞 + 收藏不迷路。

二、类与类之间关系汇总整理

  1. 依赖关系(Dependency)

单向,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类,是一种“use a”关系

如果A依赖于B,则B表现为A的局部变量,方法参数,静态方法调用等

局部变量

public class Animal {
    public void drink() {
        Water water = new Water();//局部变量
        ....
    }
}

方法参数

public class Animal {
    public void drink(Water water) {//方法参数
        ....
    }
}

静态方法调用

public class Animal {
    public void drink() {
        Water.drink();//静态方法调用
        ....
    }
}
  1. 关联关系(Association)

单向或双向(通常我们需要避免使用双向关联关系),是一种"has a"关系,如果A单向关联B,则可以说A has a B,通常表现为全局变量。

单向关联:

public class Person {
    public Phone phone;
    
    public void setPhone(Phone phone) {
        this.phone = phone;
    }
    
    public Phone getPhone() {
        return phone;
    }
}

双向关联:

public class Man {
    public Women women;
    
    public void setWomen(Women women) {
        this.women = women;
    }
    
    public Women getWomen() {
        return women;
    }
}

public class Women {
    public Man man;
    
    public void setMan(Man man) {
        this.man = man;
    }
    
    public Man getMan() {
        return man;
    }
}
  1. 聚合关系(Aggregation)、组合关系(Composition)

这两个关系我们放在一起,因为他们看似十分的相似,但是却有着本质的区别。

聚合

不同的工种聚合在一起变成了施工人员,施工人员包含工程师、电工、木工等,是整体和个体之间的关系,即 has-a 的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期。即施工人员可以不存在,但是工程师仍然存在。

public class Builders {
    public Engineer engineer;
    
    public void setEngineer(Engineer engineer) {
        this.engineer = engineer;
    }
    
    public Engineer getEngineer() {
        return engineer;
    }
}

组合

电脑由cpu、内存、硬盘组合而成,虽然组合和聚合我们都说“有”什么,但是这个“有”是不同的,他体现的是一种 contains-a 的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如cpu坏了,电脑也就无法使用。

public class Computer {
    public Cpu cpu;
    
    public void setCpu(Cpu cpu) {
        this.cpu = cpu;
    }
    
    public Cpu getCpu() {
        return cpu;
    }
}
  1. 继承关系(extends)

类继承抽象类,子类继承父类都属于这种关系

public class Child extends Father {
}
  1. 实现关系(implements)

类实现接口

public class MyRunnable implements Runnable {

    @Override
    public void run() {

    }
}

三、PlantUml类图语法介绍

  1. 类属性字段以及方法访问权限映射关系**
符号访问权限
-private
#protected
~package private
+public
  1. 依赖

Water <… Animal : 依赖

  1. 关联

Phone <-- Person : 关联

  1. 双向关联

Man <–> Women : 双向关联

  1. 聚合

Engineer <–o Builders : 聚合

  1. 组合

Cpu <–* Computer : 组合

  1. 继承

Father <|-- Child : 继承

  1. 实现

Runnable <|… MyRunnable : implements

  1. 其他

箭头方向可以在左边,也可以在右边。
–表示纵向的实线,-表示横向的实线。
…表示纵向的虚线,-表示横向的虚线。
在符号两侧可以用""来添加对元素的说明。
在关系末尾可以用:来添加对关系的说明。

四、类图

类图如下:

在这里插入图片描述

五、类图 PlantUml 代码

plantuml 代码如下:

@startuml
scale 300 width

title 类图关系示例演示

class Water {
+static void drink()
}

class Animal {
}

class Phone {
}

class Person {
}

class Man {
}

class Women {
}

class Engineer {
}

class Builders {
}

class Cpu {
}

class Computer {
}

class Father {
}

class Child {
}

interface Runnable {
+run()
}

class MyRunnable {
+run()
}

Water <.. Animal : 依赖
Phone <-- Person : 关联
Man "1" <--> "1" Women : 双向关联
Engineer <--o Builders : 聚合
Cpu <--* Computer : 组合
Father <|-- Child : 继承
Runnable <|.. MyRunnable : implements
@enduml

引用:
1.https://blog.csdn.net/qq_28379809/article/details/79499577
2.https://www.cnblogs.com/jisijie/p/5062109.html
3.https://cloud.tencent.com/developer/article/1932863

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值