IDEA使用插件绘制UML类图+PlantUML语法讲解

news2024/11/14 15:03:30

安装

IDEA安装插件

在这里插入图片描述
在这里插入图片描述
安装完插件记得重启一下IDEA

安装Graphviz(亲测win11可以使用)

安装完插件之后,还需要安装Graphviz才可以渲染图形。
Graphviz安装包下载地址
在这里插入图片描述
安装过程很简单,直接双击或者管理员身份运行即可,注意下面两个操作,其他都是接受、下一步即可
【操作一:选择是否配置环境变量】
在这里插入图片描述
【操作二:选择好软件要安装的路径,建议安装在C盘以外的其他盘】

【验证Graphviz是否安装成功】

dot -version

在这里插入图片描述

绘制

步骤一:创建UML文件

在这里插入图片描述
在这里插入图片描述

绘制语法

令人伤心的是,使用PlantUML并不能直接采用拖动元素的方式来绘制UML类图,但是提供了写代码操控的方式,该方式不仅可以更好地装逼,还可以自动帮我们生成合理的布局。只要掌握了语法,写代码操控类图的方式是非常高效的,骚年们,快学起来,不要被劝退了

声明元素

@startuml

'声明抽象类
abstract class AbstractList
'声明接口
interface List
'声明注解
annotation Haha
'声明类
class Shape
'声明枚举类
enum TimeUnit {
DAYS
HOURS
MINUTES
}
'给类定义方法和成员变量
class ArrayList {
'定义变量
Object[] elementData
'定义方法
size()
}

@enduml

在这里插入图片描述

描述元素之间的关系

@startuml

abstract class A
interface B
class C
class D
class E
class F
class G

'依赖关系:C使用D
C ..> D

'关联关系:C关联D
C -- E

'继承关系:F继承D
F --|> D

'实现关系:D实现B接口
D ..|> B

'聚合关系:G聚合E
G --o E

'组合关系:D组合E
D --* E

@enduml

在这里插入图片描述
如果觉得关系不太明了,可以关系上面添加注释

@startuml

abstract class A
interface B
class C
class D
class E
class F
class G

'依赖关系:C使用D
C ..> D :使用

'关联关系:C关联D
C -- E :关联

'继承关系:F继承D
F --|> D :继承

'实现关系:D实现B接口
D ..|> B :实现

'聚合关系:G聚合E
G --o E :聚合

'组合关系:D组合E
D --* E :组合

@enduml

在这里插入图片描述

给元素添加成员变量和方法

@startuml

class Animal{
String name
int num
'静态变量
{static} boolean isFly 

void run()
'抽象方法
{abstract}int getNUm()

@enduml

在这里插入图片描述

添加注释

@startuml

class Cat{
int age
void run()
void setName(String name)
}
'注释变量
note left of Cat::age
我今年十八岁
end note

note left of Cat::run()
我会跑步哟
end note

note left of Cat::"setName(String name)"
你可以叫我猫猫哟
end note

class Bird{
}
'写在哪个元素下方,就是对哪个元素做注释
'选择left/bottom/left/right 分别是在 上下左右 进行备注
note left
这是一个小鸟类
end note

note "我和其他元素没啥关系,是总体的总结" as note1

note "我们都是动物" as note2

Cat .. note2
note2 .. Bird

@enduml

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高性能内存对象缓存 Memcached

高性能内存对象缓存 Memcached Memcached 概述 一套开源的高性能分布式内存对象缓存系统 所有的数据都存储在内存中 支持任意存储类型的数据 提高网站的访问速度 Memcached 是典型的 C/S 架构,因此需要安装 Memcached 服务端与 Memcached API 客户端。 数据存…

实验三(OSPF)7 8

解题思路: 先配置好路由的环回及规划好IP地址,确保正确; (由于r8模拟为运营商,因此r1,r2,r3各写一条缺省指向r8 并测试) hub-spoke网络结构,需要在r1-r2-r3建立隧道0配置MGRE-多点通用路由协…

FreeRTOS ~(七)互斥量 ~ (3/3)互斥量的缺陷和递归锁

前情提要 FreeRTOS ~(四)同步互斥与通信 ~ (2/3)互斥的缺陷 FreeRTOS ~(五)队列的常规使用 ~ (2/5)队列解决互斥缺陷 FreeRTOS ~(六)信号量 ~ (2/…

超详细 | 遗传-粒子群自适应优化算法及其实现(Matlab)

作者在前面的文章中介绍了两种经典的优化算法——遗传算法(GA)和粒子群算法(PSO),这些智能优化算法解决问题的方式和角度各不相同,都有各自的适用域和局限性,对智能优化算法自身做的改进在算法性能方面得到了一定程度的提升,但算法…

前端如何实现面向对象

交流所记: 面向对象的三要素: 封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的类或者对象隐藏信息继承:它可以使用现有类的所有功能,并在无…

链上衍生品协议 ProsperEx:探索 RWA 叙事,打造 DeFi 变异黑马

“ProsperEx 本身背靠着具备潜力的链上衍生品赛道,同时也是 RWA 领域早期的布局者之一,其有望成为 Web2 世界与 Web3 世界的早期连接点,并具备广泛且规模性捕获用户的能力。” 从2020年DeFi之夏链上世界迎来了爆发后,链上衍生品赛…

SQL21 浙江大学用户题目回答情况

解法一:left JOIN select t1.device_id,question_id,result from question_practice_detail t1 left JOIN user_profile t2 on t1.device_id t2.device_id where university 浙江大学解法二:子查询 select device_id, question_id, result from question_practice_detail …

Android 性能优化系列:启动优化进阶

文章目录 启动速度优化的本质因素CPU 层面进行速度优化减少程序的指令数降低时钟周期时间降低每条指令的平均时间周期 缓存层面进行速度优化缓存的读写速度缓存的命中率 任务调度层面进行速度优化通过实时进程和普通进程了解任务调度机制原理进程生命周期 CPU 优化合理使用线程…

day67_mybatisplus

今日内容 零、 复习昨日 零、 复习昨日 一、MybatisPlus快速入门 [MyBatis-Plus](简介 | MyBatis-Plus (baomidou.com))(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 官方…

InnoDB: Waiting for page_cleaner to finish flushing of buffer pool 解决方案

这个是因为linux系统时间,Mysql数据库时间,Mysql日志时间出现不一致导致的。 1、date -R 查询linux系统时间 中国标准时区东八区时区 2、mysql数据库的时间 3、在mysql的配置文件里面,定义好时间,时区一致。 问题解决。

前端Vue自定义商品评价页面单选多选标签tags组件单选多选按钮选择器picker组件

随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现…

群晖折腾记5—docker安装emby开启核显

硬解的前提条件 Emby为正版 带核显的白裙或者已经被正确驱动的黑裙 开心版本不在讨论范围之内 需要的目录有/config /mnt/share1 /mnt/share2,自己创建对应的目录即可 打开ssh sudo -i输入下面命令首先判断群晖是否有核显驱动,白裙使用有带核显cpu的可…

关于新版本selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘等问题

由于一段时间没有使用Selenium,当再次使用时发现之前写的Selenium元素定位的代码运行之后会报错,发现是Selenium更新到新版本(4.x版本)后,以前的一些常用的代码的语法发生了改变,当然如果没有更新过或是下载…

VS2022 Fortran调用lapack 64位库

首先,可以在官网下载以下lib 下载64位的,然后就是添加文件所在的文件夹,以及添加lib,就可以直接使用lapack中的函数,但是现在Oneapi中集成了lapack库,所以可以直接调用,如下所示。 1. 首先&…

MongoDB 事务与数据落盘

文章目录 概要一、持久性1.1、journal log刷盘机制1.2、数据刷盘机制1.3、复制集下的写安全机制 二、隔离性总结 概要 MongoDB并不像MySQL一样天然支持多文档事务,其演变过程如下: MongoDB4.0之前只支持单文档事务,在单个文档上支持ACID原子…

S32K14x FlexCAN入门

每个系列S32K14x支持的邮箱个数。 基本每个系列的FlexCAN0可以支持32个报文缓存和支持CANFD。 中断源 mail 最多有32个mail • 灵活的消息缓冲区 (MB),总共 32 个消息缓冲区,数据长度为 8 字节 每个,可配置为 Rx 或 Tx 过滤掩码功能 强…

MyBatis中的缓存介绍与示例

目录 什么是缓存? 一级缓存 实例效果 二次缓存 示例效果 什么是缓存? 在用户访问相同数据时,需要对数据库多次访问,导致产生大量IO、读写硬盘的操作,效率低下,有了缓存首次访问时,查询到数…

【AI 绘图】Stable Diffusion WebUI 本地安装教程(Windows,兼容 NVIDIA、AMD 显卡)

文章目录 硬性要求Stable Diffusion 简介Stable Diffusion WebUI 简介1. 安装 Python 3.10.6(较新版本的 Python 不支持 torch)2. 安装 Git3. 下载 stable-diffusion-webui 存储库(此步二选一)3.1 NVIDIA GPU3.2 AMD GPU 4. webui…

Unity 3D 刚体初步

Unity 3D 中的 Rigidbody ,刚体,是用来模拟物理特性,模拟推力与扭力,实现现实世界中的物理学现象。 把在外力作用下,物体的形状和大小保持不变,而且内部各部分相对位置保持恒定(没有形变&#…