uml类图解释及其常用绘制工具

UML 类图介绍

在UML类图中,箭头和线的样式用于表示类与类之间的关系。以下是各种关系及其对应的箭头和线的含义:

1, 关联(Association):
箭头:普通箭头(实心箭头或空心箭头,通常是实心箭头)。
线:通常是直线,连接两个类的关联关系。
含义:表示两个类之间的静态关系,表示一个类与另一个类之间的连接。关联是一种比较强的关系,表明两个类之间存在关联,但不一定是紧密耦合的。

2, 聚集(Aggregation):
箭头:带空心菱形的箭头。
线:通常是直线,连接一个整体与其部分。
含义:表示整体与部分之间的关系,整体可以包含部分,但部分可以独立存在。聚集表示一种弱关系,整体的生命周期不依赖于部分的生命周期。

3, 组合(Composition):
箭头:带实心菱形的箭头。
线:通常是直线,连接一个整体与其部分。
含义:表示整体与部分之间的关系,整体包含部分,部分不能独立存在,它们的生命周期是紧密耦合的。组合表示一种强关系,整体的生命周期取决于部分的生命周期。

4, 依赖(Dependency):
箭头:带箭头的虚线。
线:通常是虚线,连接一个使用另一个类的类。
含义:表示一个类的实现或行为依赖于另一个类。依赖是一种比较弱的关系,表示类之间的一种使用关系,当一个类的变化可能影响到另一个类时,它们之间存在依赖关系。

使用 Doxygen 从源代码生成 UML 类图

1, 安装Doxygen:首先,需要安装Doxygen工具。可以从Doxygen的官方网站(https://www.doxygen.nl/download.html)下载并安装适合的操作系统版本。
2, 配置Doxyfile:Doxygen使用名为Doxyfile的配置文件来指定需要生成的文档和设置。在项目根目录下创建一个名为Doxyfile的文件。可以使用以下命令在项目根目录生成默认的Doxyfile:

doxygen -g Doxyfile

3, 配置Doxyfile中的参数:打开Doxyfile文件,并设置以下参数:
1)INPUT:指定源代码目录,你可以在这里列出你希望生成UML类图的源代码目录。
2)GENERATE_UML:设置为YES,允许Doxygen生成UML图。
3)UML_LOOK:设置为YES以生成较为简洁的UML类图(可选)。
4)UML_LIMIT_NUM_FIELDS:设置生成的UML图中类的最大字段数量(可选)。
5)UML_LIMIT_NUM_RELATIONS:设置生成的UML图中类之间的最大关系数量(可选)。
注意:确保删除或注释掉EXTRACT_ALL和EXTRACT_PRIVATE等参数,以便Doxygen生成所有类的UML类图。
4, 运行Doxygen:配置完成后,使用以下命令运行Doxygen:

doxygen Doxyfile

运行完成后,Doxygen将在输出目录中生成文档。
5, 查看生成的UML类图:打开生成的文档,在文档中应该可以找到生成的UML类图,通常以SVG或PNG格式呈现。

请注意,Doxygen生成的UML类图可能相对简单,特别是在大型项目中,因为它主要关注源代码的文档生成。如果需要更复杂的UML图,可能需要使用其他专业的UML建模工具,如Enterprise Architect、Visual Paradigm等。

Mermaid绘制流程图的语法

Mermaid是一种简洁易读的文本描述语言,用于绘制流程图、时序图、甘特图等各种图表。下面是Mermaid绘制流程图的基本语法:

1, 定义节点和连接关系:
1) 使用graph或flowchart关键字开始绘图,然后使用TD(从上到下)或LR(从左到右)来指定节点排列方式。
2) 使用—>定义连接箭头,箭头可以用来连接两个节点。
3) 使用—-定义没有箭头的连接线。
节点标识符通常由字母、数字、下划线和连字符组成。

2, 定义节点的形状和样式:
1) 使用[ ]来定义方形节点。
2) 使用[ ]]来定义圆角矩形节点。
3) 使用(( ))来定义圆形节点。
4) 使用{ }来定义菱形节点。
5) 使用样式选项来更改节点的外观,如style、class和stroke等。

3, 添加子图:
1) 使用子图可以在一个节点内部绘制更复杂的流程图。
2) 使用subgraph关键字开始子图,然后在其中定义节点和连接。
3) 使用end关键字结束子图。

下面是一个示例Mermaid流程图的代码:

graph TD;
A((开始)) --> B[处理A];
B --> C[处理B];
B --> D[处理C];
C --> E[处理D];
D --> E;
E --> F((结束));

在上面的示例中,我们定义了几个节点,例如(开始)、[处理A]、{ }、((结束))等,并用箭头—>表示连接关系。

注意,Mermaid语法不区分大小写,并且注释以%%开头。

命令行生成

非常可惜的是官网在生成图片的时候特别慢,有的时候试了十几次,没错,是十几次,都没有生成出来PNG图片,一开始以为是自己网络问题导致的,后面发现,无论网络好不好都生成不了,推荐使用命令行的方式来生成,首先配置好命令行下所需的环境

npm install -g @mermaid-js/mermaid-cli

然后创建文件后缀名为.mmd, 采用如下命令行即可生成PNG图片

mmdc -i test.mmd -o blue.png -w 1080 -h 3600 -t forest -b transparent

参考

[1]. chatGPT 的回答

CMakeLists Eigen FCPX GNU Gazebo Git Interest KDL Life Linux Matrix ODE ROS Ros UML Ubuntu VcXsrv algorithm algorithms axis-angle bode calibration chrome control cpp data_struct dots figure gdb latex launch life linux mac math matlab memory motor moveit operator optimal algorithm python robot robotics ros ros2 rtb simulation stl thread tools twist urdf velocity vim web work wsl
知识共享许可协议