PlantUML使用

浅谈uml中常用的几种图

  • UML——Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果
  • UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如下图
  • 使用UML来建模,常用的工具有 RationalRose , 也可以使用一些源码自动生成工具来建模,如下文我们介绍的CSharp to PlantUML

1.Uml图

UML图分类:

  • 用例图(use case)
  • 静态结构图: 类图、对象图、包图、组件图、部署图
  • 动态行为图:交互图(时序图与协作图)、状态图、活动图
  • 类图是描述类与类之间的关系的,是UML图中最核心的

1.1Uml类图

  • 用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。
  • 类之间的关系: 依赖、泛化(继承)、实现、关联、聚合与组合
  1. 代码
	public interface IParameter
	{
		UpdateCopy UpdateCopy { get; set; }
		void Read();
		void Write();
		void Read(string fileName);
		void Write(string fileName);
		void Copy(IParameter source);
	}
  1. 类图
    IParameter

1.2 类图关系

概述

  • 设计一个类中的信息和行为要 高内聚
  • 设计多个类, 类之间要 低耦合

当面对应用系统或者需要解决的问题经常是复杂的、高度抽象的,我们 创建的多个对象往往是有联系的,通常对象之间的关系可以分为以下几类:

  • 泛化关系
  • 实现关系
  • 依赖关系
  • 关联关系
  • 聚合关系
  • 组合关系

在UML中的图形表示:

uml关系图

2.PlantUML 功能概述

PlantUML是一个开源项目,旨在通过简单的文本描述来绘制UML图表。本章将概述其核心功能,并为您提供一个关于PlantUML如何简化UML图创建过程的直观认识

2.1PlantUML 核心特性

PlantUML使用简单的、文本定义的语言来描述UML图表,从而允许快速的图表生成和编辑。它支持多种UML图表类型,如用例图、序列图、类图等,并且能够将这些图表导出为常见的格式,如PNG、SVG或EPS

2.2PlantUML的优势

与其他UML绘图工具相比,PlantUML的主要优势在于其高度的灵活性和易用性。它可以在任何支持文本编辑的地方进行图表设计,这使得版本控制、团队协作和自动化生成图表变得更加容易。

3.文本定义语言生成图表

PlantUML语言的核心在于使用特定的语句来描述这些基本元素及其相互之间的关系,从而形成完整的UML图表。例如,下面的代码段定义了一个简单的用例图:

文本定义语言:

@startuml
class Car {
    +engine: Engine
    +start()
    +stop()
    +run()
}
 
class Engine {
    +start()
    +stop()
}
 
Car *-- Engine
@enduml

类图:
car

car

PlantUML学习指南

PlantUML语言参考指引
PlantUML官网

4.自动转换c#源码工具

4.1 CSharp to PlantUML (Visual Studio Code扩展)

一款可以自动将c#源码直接转换成puml文件的插件

  1. 安装vs code软件
  2. 扩展商店搜索Csharp to PlantUML安装插件
  3. 调用命令 csharp2plantuml.classDiagram 将c#源码自动生成puml文件

4.2 PlantUmlClassDiagramGenerator

同CSharp to PlantUML转换规则不一致存在差异

Nuget地址

Nuget Gallery: https://www.nuget.org/packages/PlantUmlClassDiagramGenerator

安装

下载并安装NET 6.0 SDK[2]或更新的版本。安装后,运行以下命令。

dotnet tool install --global PlantUmlClassDiagramGenerator

使用

puml-gen InputPath [OutputPath] [-dir] [-public | -ignore IgnoreAccessibilities] [-excludePaths ExcludePathList] [-createAssociation]
  • InputPath: (必须) 设置一个输入源文件或目录名称。
  • OutputPath: (可选) 设置一个输出文件或目录名称。如果省略此选项,plantuml文件将被输出到与输入文件相同的目录中。
  • -dir: (可选) 当InputPath和OutputPath为目录名时,指定。
  • -public: (可选) 如果指定,只输出公共可及性成员。
  • -ignore: (可选) 指定要忽略的成员的可访问性,用逗号分隔的列表。
  • -excludePaths: (可选) 指定排除的文件和目录。
    指定来自 "InputPath "的相对路径,用逗号分隔的列表。
  • -createAssociation: (可选) 从字段和属性的引用中创建对象关联。
  • -allInOne: (可选) 只有当-dir被设置时:将所有图表的输出复制到文件include.puml(这允许PlanUMLServer渲染)。
  • -attributeRequired: (可选) 当这个开关被启用时,只有类型声明中带有 "PlantUmlDiagramAttribute "的类型会被输出。

示例

puml-gen C:\Source\App1\ClassA.cs -public

5.Puml文件的渲染

5.1 PlantUML插件

vs code插件商店搜索PlantUML直接安装

5.2 本地渲染

本地渲染要求(前置条件)

要运行PlantUML,必须提前安装以下内容

PlantUML配置本地渲染

5.3 PlantUML Server渲染

使用

  • 生成图表选中puml文件快捷键 Alt+D
  • 生成图表的链接And导出图片到本地