# 1、安装plantuml
(1)plantuml官网下载msi文件进行安装(建议按默认目录安装),安装完毕后,进入程序的bin目录,运行`dot -c`命令完成安装:
![](https://img.kancloud.cn/8f/59/8f592256467d6be10b2ec99b99d89422_331x97.png)
注意设置好环境变量:GRAPHVIZ_DOT:C:\Program Files\Graphviz 2.44.1\bin\dot.exe
以及Path中追加:C:\Program Files\Graphviz 2.44.1\bin
(2)vs code安装插件`PlantUML`和`Graphviz Preview`
(3)vs code设置,在“设置”-->扩展-->plantuml设置,打开json,设置:
~~~
"window.zoomLevel": 2,
"go.formatTool": "goimports",
"editor.fontSize": 15,
"graphvizPreview.dotPath": "C:/Program Files/Graphviz 2.44.1/dot.exe",
"plantuml.commandArgs": [
]
~~~
(4)使用
vs code打开puml文件,通过键盘Alt+D即可调出plantuml,预览uml图。
右键单击puml文件,弹出菜单中选择“导出工作区图表”,即可将类图导出成各种格式的文件。
# 2、安装goplantuml
goplantuml可以将go项目导出为puml文件,供plantuml生成类图
https://github.com/jfeliu007/goplantuml
安装方法:
~~~
go get github.com/jfeliu007/goplantuml/parser
go get github.com/jfeliu007/goplantuml/cmd/goplantuml
~~~
使用方法:
~~~
goplantuml c:/go/src/sd-chain/blockchain7 > ClassDiagram.puml
~~~
以上方法将项目blockchain7导出为ClassDiagram.puml,然后可以通过plantuml查看了(在vs code插件中查看)。
# 3、类图
在类图中一共包含了以下几种模型元素,分别是:类(Class)、接口(Interface)、依赖(Dependency)关系、泛化(Generalization)关系、关联(Association)关系、聚合关系(Aggregation)、组合关系(Composition)和实现(Realization)关系。
一般关系表现为**继承或实现关系**(is a),关联关系表现为**变量**(has a ),依赖关系表现为函数中的**参数**(use a)。
![](https://img.kancloud.cn/e5/b8/e5b83e5026288e701f6d74ead873ba6e_220x154.png)类图中的关系表示
**泛化(Generalization)关系**:表示为类与类之间的继承关系,接口与接口之间的继承,类对接口的实现关系。
表示方法: 用一个空心箭头+实线,**箭头指向父类**。
![](https://img.kancloud.cn/64/19/641917ebb05929828113297e7b46d313_380x186.png)
**实现(Realization)关系**:一般来讲实现关系是针对类与接口之间的关系而言的。在UML类图中,实现关系用空心三角形+虚线来表示。**箭头指向接口**
![](https://img.kancloud.cn/ca/84/ca8455512fe53de8abbb0e815ce98353_275x192.png)
**关联关系(Realization)**:类与类之间的联接,它使一个类知道另一个类的属性和方法。
表示方法:用 实线+箭头, **箭头指向被使用的类**。
![](https://img.kancloud.cn/49/88/4988a694dc1c82beaa8af964fd1705a4_257x60.png)
**聚合关系(Association)**:是关联关系的一种,是强的关联关系。聚合关系是整体和个体的关系。关联关系的两个类处于同一层次上,而聚合关系两个类处于不同的层次,一个是整体,一个是部分。聚合关系是类之间的一种较弱的耦合关系,如一个字符串数组和一个字符串就是一种聚合关系。
表示方法:空心菱形+实线+箭头,**箭头指向整体**。
![](https://img.kancloud.cn/5e/df/5edfa609bb1432a10191a902444065a8_276x59.png)
**组合关系(Aggregation)**:是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期,组合关系不能共享。如一只青蛙有四条腿,青蛙类与青蛙腿类之间的关系就是组合关系。
表示方法:实心菱形+实线。**实心菱形指向为组合类**。
![](https://img.kancloud.cn/ec/c7/ecc74cc7ae145ae910e65232c58ab4ac_276x173.png)
**依赖关系(Dependency)**:是类与类之间的连接,表示一个类依赖于另一个类的定义。例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。
依赖关系是指两个或多个类之间的依存关系,如植物类依赖于土壤类。 依赖关系还可以再细分为5种类型,分别是绑定(Binding)依赖、实现(Realization)依赖、使用(Usage)依赖、抽象(Abstraction)依赖和授权(Permission)依赖。
表示方法:虚线+箭头 **箭头指向被依赖的一方**,也就是指向局部变量。
![](https://img.kancloud.cn/33/f1/33f1ec25d5ebcbbb1ded38049808c9e1_380x174.png)
- 重要更新说明
- linechain发布
- linechain新版设计
- 引言一
- 引言二
- 引言三
- vs-code设置及开发环境设置
- BoltDB数据库应用
- 关于Go语言、VS-code的一些Tips
- 区块链的架构
- 网络通信与区块链
- 单元测试
- 比特币脚本语言
- 关于区块链的一些概念
- 区块链组件
- 区块链第一版:基本原型
- 区块链第二版:增加工作量证明
- 区块链第三版:持久化
- 区块链第四版:交易
- 区块链第五版:实现钱包
- 区块链第六版:实现UTXO集
- 区块链第七版:网络
- 阶段小结
- 区块链第八版:P2P
- P2P网络架构
- 区块链网络层
- P2P区块链最简体验
- libp2p建立P2P网络的关键概念
- 区块链结构层设计与实现
- 用户交互层设计与实现
- 网络层设计与实现
- 建立节点发现机制
- 向区块链网络请求区块信息
- 向区块链网络发布消息
- 运行区块链
- LineChain
- 系统运行流程
- Multihash
- 区块链网络的节点发现机制深入探讨
- DHT
- Bootstrap
- 连接到所有引导节点
- Advertise
- 搜索其它peers
- 连接到搜到的其它peers
- 区块链网络的消息订发布-订阅机制深入探讨
- LineChain:适用于智能合约编程的脚本语言支持
- LineChain:解决分叉问题
- LineChain:多重签名
- libp2p升级到v0.22版本
- 以太坊基础
- 重温以太坊的树结构
- 世界状态树
- (智能合约)账户存储树
- 交易树
- 交易收据树
- 小结
- 以太坊的存储结构
- 以太坊状态数据库
- MPT
- 以太坊POW共识算法
- 智能合约存储
- Polygon Edge
- block结构
- transaction数据结构
- 数据结构小结
- 关于本区块链的一些说明
- UML工具-PlantUML
- libp2p介绍
- JSON-RPC
- docker制作:启动多个应用系统
- Dockerfile
- docker-entrypoint.sh
- supervisord.conf
- docker run
- nginx.conf
- docker基础操作整理
- jupyter计算交互环境
- git技巧一
- git技巧二
- 使用github项目的最佳实践
- windows下package管理工具