PlantUML语法(全)及使用教程-类图

目录

    • 1. 类图
      • 1.1、什么是类图
      • 1.2、元素声明
      • 1.3、类之间的关系
      • 1.4、关系上的标签
      • 1.5、在元素名称和关系标签中使用非字母
      • 1.6、添加方法


1. 类图

类图的设计语法与编程语言的传统语法相似。这种相似性为开发人员提供了一个熟悉的环境,从而使创建图表的过程更简单、更直观。这种设计方法不仅简洁,而且还能创建既简洁又富有表现力的表述。此外,它还允许通过与序列图相呼应的语法来描绘类之间的关系,为流畅而深刻地描绘类之间的交互铺平了道路。除了结构和关系表示法,类图语法还支持进一步的丰富,如包含注释和应用颜色,使用户能够创建信息丰富且视觉上吸引人的图表。

1.1、什么是类图

类图(Class Diagram)是描述类、接口、协同以及他们之间关系的图,用来显示系统中这些概念的静态结构。
类图是其它图的基础。我们可以在类图的基础上,使用状态图、协作图、组件图和配置图等。

类图的主要作用有:

  1. 对系统的词汇进行建模
  2. 对简单的协作进行建模
  3. 对逻辑数据库模式进行建模

类图主要由类、接口和各种关系组成。

关系主要包括泛化关系、依赖关系、关联关系和实现关系。

1.2、元素声明

@startuml
abstract        abstract
abstract class  "abstract class"
annotation      annotation
circle          circle
()              circle_short_form
class           class
class           class_stereo  <<stereotype>>
diamond         diamond
<>              diamond_short_form
entity          entity
enum            enum
exception       exception
interface       interface
metaclass       metaclass
protocol        protocol
stereotype      stereotype
struct          struct
@enduml

在这里插入图片描述

1.3、类之间的关系

关系类型符号绘图
泛化关系<–在这里插入图片描述
组合关系*–在这里插入图片描述
聚合关系o–在这里插入图片描述

可以用… 来代替-- ,会显示为虚线。

@startuml
Class01 <|-- Class02
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 -- Class10
@enduml

在这里插入图片描述

@startuml
Class11 <|.. Class12
Class13 --> Class14
Class15 ..> Class16
Class17 ..|> Class18
Class19 <--* Class20
@enduml

在这里插入图片描述

@startuml
Class11 <|.. Class12
Class13 --> Class14
Class15 ..> Class16
Class17 ..|> Class18
Class19 <--* Class20
@enduml

在这里插入图片描述

1.4、关系上的标签

在关系之间使用标签来说明时, 使用 :后接 标签文字。 对元素的说明,你可以在每一边使用 “” 来说明

@startuml01 "1" *-- "many"02 : 包含
类03 o--04 : 聚合
类05 --> "1"06
@enduml

在这里插入图片描述

在标签的开始或结束位置添加< 或 >以表明是哪个对象作用到哪个对象上

@startuml
class 汽车

发动机 - 汽车 : 驱动 >
汽车 *- 轮子 : 拥有 4 >
汽车 --: < 所属
@enduml

在这里插入图片描述

1.5、在元素名称和关系标签中使用非字母

如果你想在类(或枚举…)的显示名称中使用非字母,可以

  • 在类定义中使用as 关键字来指定一个别名
  • 在类名称周围加上引号""
@startuml
class "This is my class" as class1
class class2 as "It works this way too"

class2 *-- "foo/dummy" : use
@enduml

在这里插入图片描述

1.6、添加方法

要声明属性和方法,你可以使用符号:,后面跟字段或方法的名称。 编译器会通过检查括号来选择方法和字段。

@startuml
Object <|-- ArrayList

Object : equals()
ArrayList : Object[] elementData
ArrayList : size()

@enduml

在这里插入图片描述

可用花括号{} 为所有属性和方法分组。 注意,语法对类型/名称的顺序有很大的灵活性。

@startuml
class Dummy {
  String data
  void methods()
}

class Flight {
   flightNumber : Integer
   departureTime : Date
}
@enduml

在这里插入图片描述

可以使用{field}和{method}修饰符来覆盖编译器对属性和方法的默认识别。

@startuml
class Dummy {
  {field} A field (despite parentheses)
  {method} Some method
}
@enduml

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智慧公厕为城市智慧管理提供强力有的数据支持

在当今科技飞速发展的时代&#xff0c;城市管理正面临着前所未有的挑战与机遇。而在这个城市发展的脚步日新月异的同时&#xff0c;一项看似不起眼的技术却正在默默地为城市的智慧管理提供着强有力的支持——那就是智慧公厕。这些不起眼的公共设施不仅仅是人们日常生活的一部分…

PHP+ajax+layui实现双重列表的动态绑定

需求&#xff1a;商户下面有若干个门店&#xff0c;每个门店都需要绑定上收款账户 方案一&#xff1a;每个门店下面添加页面&#xff0c;可以选择账户去绑定。&#xff08;难度&#xff1a;简单&#xff09; 方案二&#xff1a;从商户进入&#xff0c;可以自由选择门店&#…

【网络奇缘】- 计算机网络|分层结构|深入学习ISO模型

&#x1f308;个人主页: Aileen_0v0&#x1f525;系列专栏: 一见倾心,再见倾城 --- 计算机网络~&#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 回顾链接&#xff1a;http://t.csdnimg.cn/nRRzR 这篇文章是关于深入学习OSI模型七层结构&#xff0c; “书山…

高项备考葵花宝典-项目范围管理输入、输出、工具和技术

项目范围管理包括确保项目“做”且“只做”所需的全部工作&#xff08;即不能少做&#xff0c;也不能多做&#xff0c;如果多做&#xff0c;就要消耗团队额外的时间和资源&#xff0c;并且无法被认可&#xff09;&#xff0c;以成功完成项目。项目范围管理主要在于定义和控制哪…

vue3跟vue2的区别?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3和vue2的区别 目录 一、Vue3介绍 哪些变化 速度更快 体积更小 更易维护 compositon Api …

SparkSQL远程调试(IDEA)

启动Intellij IDEA&#xff0c;打开spark源码项目&#xff0c;配置远程调试 Run->Edit Configuration 启动远程spark-sql spark-sql --verbose --driver-java-options "-Xdebug -Xrunjdwp:transportdt_socket,servery,suspendy,address5005"运行远程调试&#xf…

详解—[C++ 数据结构]—AVL树

目录 一.AVL树的概念 二、AVL树节点的定义 三、AVL树的插入 3.1插入方法 四、AVL树的旋转 1. 新节点插入较高左子树的左侧---左左&#xff1a;右单旋 2. 新节点插入较高右子树的右侧---右右&#xff1a;左单旋 3.新节点插入较高左子树的右侧---左右&#xff1a;先左单旋…

论文笔记:Confidential Assets

Confidential Assets 描述了一种称为“保密交易”的方案&#xff0c;该方案模糊了所有UTXO的金额&#xff0c;同时保持了不创建或销毁硬币的公共可验证性。进一步将此方案扩展到“保密资产”&#xff0c;一种单一的基于区块链的分类帐可以跟踪多种资产类型的方案。将保密交易扩…

1.3 排序算法

1.1 冒泡排序 public class BubbleSort {public static void main(String[] args) {int[] arr {133,322,13,444,54,621,174,18,19,2};System.out.println(Arrays.toString(arr));BubSort(arr);System.out.println(Arrays.toString(arr));}//冒泡排序public static void BubSo…

详解API开发【电商平台API封装商品详情SKU数据接口开发】

1、电商API开发 RESTful API的设计 RESTful API是一种通过HTTP协议发送和接收数据的API设计风格。它基于一些简单的原则&#xff0c;如使用HTTP动词来操作资源、使用URI来标识资源、使用HTTP状态码来表示操作结果等等。在本文中&#xff0c;我们将探讨如何设计一个符合RESTfu…

J2EE征程——第一个纯servletCURD

第一个纯servletCURD 前言在此之前 一&#xff0c;概述二、CURD1介绍2查询并列表显示准备实体类country编写 CountryListServlet配置web.xml为web应用导入mysql-jdbc的jar包 3增加准备增加的页面addc.html编写 CAddServlet配置web.xml测试 4删除修改CountryListServlet&#xf…

autojs-ui悬浮按钮模板

注释很详细&#xff0c;直接上代码 涵盖很多常用知识点&#xff0c;也可当知识点看 运行效果长这样&#xff1a; 开始按钮相当于开关&#xff0c;按钮内容会随点击变换控制台按钮可让运行框显示或隐藏退出按钮退出程序并在3s后关闭运行框只需在对应函数内添加需要实现的内容即可…

谈一谈大小端

文章目录 一&#xff0c;什么是大小端二&#xff0c;为什么有大小端三&#xff0c;怎么验证大小端 一&#xff0c;什么是大小端 大端存储模式&#xff1a;是指数据的地位存储在高地址处&#xff0c;数据的高位存储在低地址处。 小端存储模式&#xff1a;是指数据的低位存储在低…

设计规则:模块化的力量

这是一本比较冷门的书**《设计规则&#xff1a;模块化的力量》**&#xff0c;虽然豆瓣上只有58个评价&#xff0c;但是确实能学到很多东西。 这本书对我非常深远。不是是投资&#xff0c;创业&#xff0c;还是其他领域&#xff0c;模块化思想都能帮上你。这本书告诉我们生万物…

边界突破之linux系统上线Cobalt Strike

别低头&#xff0c;皇冠会掉&#xff1b;别流泪&#xff0c;坏人会笑 基础文件 加载插件 服务端开启监听 windows/beacon_https/reverse_https 类型的beacon 生成木马Beacon 命令如下 linux ./genCrossC2.Linux [TeamServer的IP] [HTTPS监听器端口] [.cobaltstrike.beacon_k…

单片机_RTOS_架构

一. RTOS的概念 // 经典单片机程序 void main() {while (1){喂一口饭();回一个信息();} } ------------------------------------------------------ // RTOS程序 喂饭() {while (1){喂一口饭();} }回信息() {while (1){回一个信息();} }void main() {create_task(喂饭);cr…

【古月居《ros入门21讲》学习笔记】17_launch启动文件的使用方法

目录 说明&#xff1a; 1. launch文件作用 2. launch文件语法 根元素 参数设置 重映射、嵌套 3. 示例 创建功能包 1_simple.launch 编译 运行 2_turtlesim_parameter_config.launch 启动运行 启动运行显示说明 3_start_tf_demo_c.launch 启动运行 4_start_tf_d…

Python语言学习笔记之五(Python代码注解)

本课程对于有其它语言基础的开发人员可以参考和学习&#xff0c;同时也是记录下来&#xff0c;为个人学习使用&#xff0c;文档中有此不当之处&#xff0c;请谅解。 注解与注释是不一样的&#xff0c;注解有更广泛的应用&#xff1b; 通过注解与注释都能提高代码的可读性和规…

CSS3样式详解之圆角、阴影及变形

目录 前言一、圆角样式&#xff08;border-radius&#xff09;二、元素阴影&#xff08;box-shadow&#xff09;三、过渡动画样式&#xff08;transition&#xff09;1. transition-property(用于设置属性名称)2. transition-duration&#xff08;设置时间&#xff09;3. trans…

什么是requestIdleCallback?和requestAnimationFrame有什么区别?

什么是requestIdleCallback? 我们都知道React 16实现了新的调度策略(Fiber), 新的调度策略提到的异步、可中断&#xff0c;其实就是基于浏览器的 requestIdleCallback和requestAnimationFrame两个API。 在 JavaScript 中&#xff0c;requestIdleCallback 是一个用于执行回调函…