【PlantUML系列】类图(一)

目录

一、类

二、接口

三、抽象类

四、泛型类

五、类之间的关系

六、添加注释

七、包图

八、皮肤参数


一、类

使用class关键字定义类,类名后跟大括号,声明类的属性和方法。

属性:格式为{visibility} attributeName : AttributeType

  • {visibility}:成员的可见性,可以是-(私有)、#(受保护)、+(公共)、~(包级私有)。
  • attributeName:属性的名称。
  • AttributeType:属性的类型,可以是任何有效的数据类型,如intStringboolean等。

方法:格式为{visibility} methodName(param1 : Type1, param2 : Type2, ...) : ReturnType;

  • {visibility}:成员的可见性,可以是-(私有)、#(受保护)、+(公共)、~(包级私有)。
  • methodName:方法的名称。
  • param1 : Type1, param2 : Type2, ...:方法的参数列表,每个参数由名称和类型组成,多个参数之间用逗号分隔。
  • ReturnType:方法的返回类型,可以是任何有效的数据类型,如intStringboolean等,如果方法没有返回值,则可以省略返回类型。
@startuml
class ClassName {
    - attribute1 : Type
    # attribute2 : Type
    + attribute3 : Type
    
    - method1() : Type
    # method2(param1 : Type1, param2 : Type2) : Type
    + method3(param : Type) : Type
}
@enduml

二、接口

使用interface关键字定义接口,接口中的方法只能声明,不能实现。

@startuml
interface InterfaceName {
    + method1() : Type
    + method2(param : Type) : Type
}
@enduml

三、抽象类

使用abstract关键字定义抽象类,抽象类中可以包含抽象方法和具体方法。

抽象方法:表达格式为在方法前增加{abstract}

@startuml
abstract class AbstractClassName {
    {abstract} + method1() : Type
    + method2() : Type
}
@enduml

四、泛型类

在类名后跟尖括号< >定义泛型类型。

@startuml
class GenericClass<TType> {
    + method(param : TType) : TType
}
@enduml

五、类之间的关系

  • 泛化:使用--|>表示。表示一个类(子类)继承另一个类(父类)的属性和方法。子类是父类的一种特殊类型。
  • 关联:使用-->表示。表示两个类之间有逻辑上的连接,关联可以是双向的或单向的,并且通常有一个角色名和多重性(如1, *, n, m等)。
  • 实现:使用..|>表示。表示一个类实现了接口的承诺,即实现了接口中定义的所有方法。
  • 依赖:使用-->表示,箭头端点可以附加一个空心三角形。表示一个类的变化可能会影响另一个类,通常用于描述方法参数、局部变量、或者方法返回类型等临时性的关系。
  • 聚合:使用"n" *-- "m"表示,其中nm分别表示聚合的两端的基数。表示整体与部分的关系,部分可以独立于整体存在。聚合是关联的一种,表示弱的“拥有”关系。
  • 组合:使用"n" o-- "m"表示,其中o表示实心菱形,表示强拥有关系。也表示整体与部分的关系,但部分不能独立于整体存在。组合是关联的一种,表示强的“拥有”关系,整体的生命周期结束时,部分的生命周期也会结束。
@startuml

class ClassA {
}

class ClassB {
}

class InterfaceA {
}

ClassB --|> ClassA : 泛化
ClassA ..|> InterfaceA : 实现
ClassA --> ClassB : 关联
ClassA "1" *-- "n" ClassB : 聚合
ClassA "1" o-- "n" ClassB : 组合
ClassA -down-|> ClassB : 依赖

@enduml

六、添加注释

使用note关键字为类或关系添加注释。

@startuml
class ClassA {
}
note left of ClassA : This is a note
@enduml

七、包图

使用package关键字定义包,并在包中定义类或接口。

@startuml
package one.two {
    class Hello
}
package three.four {
    class World
}
World -- Hello
@enduml

八、皮肤参数

使用skinparam关键字设置类图的外观,典型配置如下。

  • 背景颜色(BackgroundColor)
  • 边框颜色(BorderColor)
  • 箭头颜色(ArrowColor)
  • 字体颜色(FontColor)
  • 字体名称(FontName)
  • 字体大小(FontSize)
  • 圆角(RoundCorner)
  • 手写风格(Handwritten)
  • 参与者填充(ParticipantPadding)
  • 盒子填充(BoxPadding)
  • 消息对齐(SequenceMessageAlign)
  • 箭头风格(ArrowStyle)
  • 活动图背景色(ActivityBackgroundColor)
  • 活动图边框色(ActivityBorderColor)
@startuml

' 设置整个图表的背景颜色
skinparam backgroundColor #FFFFFF

' 设置类和接口的背景颜色
skinparam classBackgroundColor #DDDDDD

' 设置类和接口的边框颜色
skinparam borderColor #000000

' 设置箭头颜色
skinparam ArrowColor #555555

' 设置默认字体名称
skinparam defaultFontName Arial

' 设置默认字体大小
skinparam defaultFontSize 12

' 设置类和接口的圆角大小
skinparam roundCorner 5

' 设置手写风格的字体(可选值:true 或 false)
skinparam handwritten false

' 设置参与者的外边距
skinparam ParticipantPadding 30

' 设置盒子的外边距
skinparam BoxPadding 15

' 设置序列图中消息的对齐方式(可选值:left, right, center)
skinparam sequenceMessageAlign center

' 设置箭头风格(可选值:solid, dashed, dotted, open)
skinparam ArrowStyle solid

' 设置活动图的形状背景色
skinparam ActivityBackgroundColor #FFFFFF

' 设置活动图的形状边框色
skinparam ActivityBorderColor #000000

' 设置活动图节点的填充颜色
skinparam ActivityNodeColor #FFFFFF

' 设置活动图节点的边框颜色
skinparam ActivityBorderColor #000000

' 设置类图中类的边框厚度
skinparam classBorderThickness 1

' 设置类图中方法和属性的图标大小
skinparam classAttributeIconSize 10

' 设置类图中方法和属性的字体颜色
skinparam classMethodFontColor #000000

' 设置类图中方法和属性的字体大小
skinparam classAttributeFontColor #000000

' 设置类图中方法和属性的字体大小
skinparam classMethodFontSize 12

' 设置类图中方法和属性的字体大小
skinparam classAttributeFontSize 12

' 定义类
class ExampleClass {
    - privateAttribute : String
    + publicMethod() : void
}

' 定义接口
interface ExampleInterface {
    + interfaceMethod() : void
}

' 展示类和接口之间的关系
ExampleClass ..|> ExampleInterface

' 展示类之间的关系
class AnotherClass {
    + anotherMethod() : void
}
ExampleClass --> AnotherClass : 使用

@enduml

九、示例

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

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

相关文章

【AI系统】FBNet 系列

FBNet 系列 本文主要介绍 FBNet 系列&#xff0c;在这一章会给大家带来三种版本的 FBNet 网络&#xff0c;从基本 NAS 搜索方法开始&#xff0c;到 v3 版本的独特方法。在本节中读者会了解到如何用 NAS 搜索出最好的网络和训练参数。 FBNet V1 模型 FBNetV1:完全基于 NAS 搜…

高校数字化运营平台解决方案:构建统一的服务大厅、业务平台、办公平台,助力打造智慧校园

教育数字化是建设教育强国的重要基础&#xff0c;利用技术和数据助推高校管理转型&#xff0c;从而更好地支撑教学业务开展。 近年来&#xff0c;国家多次发布政策&#xff0c;驱动教育行业的数字化转型。《“十四五”国家信息化规划》&#xff0c;推进信息技术、智能技术与教育…

【JavaEE 初阶】⽹络编程套接字

一、⽹络编程基础 1.应用层 操作系统提供的一组 api >socket api(传输层给应用层提供) 2.传输层 两个核心协议. TCPUDP 差别非常大,编写代码的时候,也是不同的风格 因此, socket api 提供了两套 TCP 有连接, 可靠传输, 面向字节流, 全双工 UDP …

AI大模型驱动数据分析:利用自然语言实现数据查询与可视化(1)

在当今AI驱动的时代&#xff0c;数据分析已成为各行各业不可或缺的能力。然而&#xff0c;传统的数据分析流程通常需要掌握SQL、数据处理和可视化等多项专业技能&#xff0c;这对非技术背景的业务人员来说是一个不小的挑战。 想象一下&#xff0c;当数据中心的负责人打开手机时…

注解方式的AspectJ实现方式

BookService类 package com.hkd.service;public interface BookService {public void buyJava();public int comment();void buy(); }BookServiceImp类 package com.hkd.service;import org.springframework.stereotype.Component;Component("bs") public class Bo…

如何避免数据丢失:服务器恢复与预防策略

在当今数字时代&#xff0c;数据对于个人和企业来说都至关重要。数据丢失可能会导致严重的财务损失、业务中断甚至法律责任。因此&#xff0c;采取措施防止数据丢失至关重要。本文将讨论服务器数据丢失的常见原因以及如何防止数据丢失的有效策略。 服务器数据丢失的常见原因 服…

远程连接服务--Linux中

远程连接服务–Linux中 1. 远程连接服务器简介 1.1 什么是远程连接服务器 ​ 远程连接服务器通过文字或图形接口方式来远程登录系统&#xff0c;让你在远程终端前登录linux主机以取得可操作主机接口&#xff08;shell&#xff09;&#xff0c;而登录后的操作感觉就像是坐在系…

Mac安装MINIO服务器实现本地上传和下载服务

0.MINIO学习文档 Minio客户端mc使用 | Elibaron学习笔记 1.Mac安装MINIO 中文官方网址&#xff1a;MinIO下载和安装 | 用于创建高性能对象存储的代码和下载内容 (1) brew 安装 brew install minio/stable/minio &#xff08;2&#xff09;安装完成&#xff0c;执行brew i…

鸿蒙开发——使用ArkTs处理XML文本

1、概 述 XML&#xff08;可扩展标记语言&#xff09;是一种用于描述数据的标记语言&#xff0c;旨在提供一种通用的方式来传输和存储数据&#xff0c;特别是Web应用程序中经常使用的数据。XML并不预定义标记。因此&#xff0c;XML更加灵活&#xff0c;并且可以适用于广泛的应…

HTML旋转爱心

系列文章 序号目录1HTML满屏跳动的爱心&#xff08;可写字&#xff09;2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心&#xff08;简易版&#xff09;7HTML粒子爱心8HTML蓝色动态爱心9HTML跳动的爱心&#xff08;双心版&#xff09;1…

基于STM32的智能存储物流柜(单片机毕设)

前言 源代码下载链接&#xff1a; https://download.csdn.net/download/m0_74712453/90071696 需要实物的可以私信博主或者在文章最下方添加好友。 目录 一、项目简介和视频演示 二、硬件实现 1. 具体功能 2. 硬件框图和原理图 3. 主控部分 4. 驱动模块 4.1 SG90 180…

声音克隆技术:探索与实践 —— 从GPT-SoVITS V2到未来趋势20241201

声音克隆技术&#xff1a;探索与实践 —— 从GPT-SoVITS V2到未来趋势 引言&#xff1a;AI与声音创作的完美碰撞 &#x1f3a4;✨ 声音克隆技术正以惊人的速度改变语音生成的方式。从文本到语音&#xff0c;从音色到情感&#xff0c;人工智能赋予了声音创作全新的可能性。 在这…

Lighthouse(灯塔)—— Chrome 浏览器性能测试工具

1.认识 Lighthouse Lighthouse 是 Google 开发的一款开源性能测试工具&#xff0c;用于分析网页或 Web 应用的性能、可访问性、最佳实践、安全性以及 SEO 等关键指标。开发人员可以通过 Lighthouse 快速了解网页的性能瓶颈&#xff0c;并基于优化建议进行改进。 核心功能&…

DApp开发前端框架选择:React还是Vue?

在区块链DApp开发中&#xff0c;前端框架的选择对用户体验和开发效率至关重要。React和Vue作为两大主流前端框架&#xff0c;各自拥有广泛的开发者基础和丰富的生态支持。那么在DApp开发中&#xff0c;该如何选择适合自己的框架呢&#xff1f;下面我们来比较一下&#xff0c;看…

如何通过 Windows 自带的启动管理功能优化电脑启动程序

在日常使用电脑的过程中&#xff0c;您可能注意到开机后某些程序会自动运行。这些程序被称为“自启动”或“启动项”&#xff0c;它们可以在系统启动时自动加载并开始运行&#xff0c;有时甚至在后台默默工作。虽然一些启动项可能是必要的&#xff08;如杀毒软件&#xff09;&a…

WPF_3

x名称空间的由来和作用 WPF程序中有这样的代码&#xff1a; x:Class"WpfControlLibrary1.UserControl1"<!--这是对x的使用-->xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/…

智能社区服务小程序+ssm(lw+演示+源码+运行)

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了智能社区服务小程序的开发全过程。通过分析智能社区服务小程序管理的不足&#xff0c;创建了一个计算机管理智能社区服务小程序的方案。文章介绍了智能社区服务…

ABAP - 系统集成之SAP的数据同步到OA(泛微E9)服务器数据库

需求背景 项目经理说每次OA下单都需要调用一次SAP的接口获取数据&#xff0c;导致效率太慢了&#xff0c;能否把SAP的数据保存到OA的数据库表里&#xff0c;这样OA可以直接从数据库表里获取数据效率快很多。思来想去&#xff0c;提供了两个方案。 在集群SAP节点下增加一个SQL S…

Nginx配置https(Ubuntu、Debian、Linux、麒麟)

Ubuntu操作系统&#xff0c;Debian系统底层是Ubuntu&#xff0c;差异不大 ubuntu 安装nginx 1.安装依赖 sudo apt-get update sudo apt-get install gcc sudo apt-get install libpcre3 libpcre3-dev sudo apt-get install zlib1g zlib1g-dev sudo apt-get install openssl lib…

OCR的评价指标和常用数据集

1.OCR任务简介 OCR(Optical Character Recognition,光学字符识别)是指对包含文本内容的图像或者视频进行处理识别&#xff0c;并提取其中所包含的文字及排版信息的过程。例如&#xff0c;一个常见的应用是将包含文档图像的不可编辑状态的 PDF 文档通过 OCR 技术识别后&#xf…