# 1、安裝plantuml
(1)plantuml官網下載msi文件進行安裝(建議按默認目錄安裝),安裝完畢后,進入程序的bin目錄,運行`dot -c`命令完成安裝:

注意設置好環境變量: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)。
類圖中的關系表示
**泛化(Generalization)關系**:表示為類與類之間的繼承關系,接口與接口之間的繼承,類對接口的實現關系。
表示方法: 用一個空心箭頭+實線,**箭頭指向父類**。

**實現(Realization)關系**:一般來講實現關系是針對類與接口之間的關系而言的。在UML類圖中,實現關系用空心三角形+虛線來表示。**箭頭指向接口**

**關聯關系(Realization)**:類與類之間的聯接,它使一個類知道另一個類的屬性和方法。
表示方法:用 實線+箭頭, **箭頭指向被使用的類**。

**聚合關系(Association)**:是關聯關系的一種,是強的關聯關系。聚合關系是整體和個體的關系。關聯關系的兩個類處于同一層次上,而聚合關系兩個類處于不同的層次,一個是整體,一個是部分。聚合關系是類之間的一種較弱的耦合關系,如一個字符串數組和一個字符串就是一種聚合關系。
表示方法:空心菱形+實線+箭頭,**箭頭指向整體**。

**組合關系(Aggregation)**:是關聯關系的一種,是比聚合關系強的關系。它要求普通的聚合關系中代表整體的對象負責代表部分的對象的生命周期,組合關系不能共享。如一只青蛙有四條腿,青蛙類與青蛙腿類之間的關系就是組合關系。
表示方法:實心菱形+實線。**實心菱形指向為組合類**。

**依賴關系(Dependency)**:是類與類之間的連接,表示一個類依賴于另一個類的定義。例如如果A依賴于B,則B體現為局部變量,方法的參數、或靜態方法的調用。
依賴關系是指兩個或多個類之間的依存關系,如植物類依賴于土壤類。 依賴關系還可以再細分為5種類型,分別是綁定(Binding)依賴、實現(Realization)依賴、使用(Usage)依賴、抽象(Abstraction)依賴和授權(Permission)依賴。
表示方法:虛線+箭頭 **箭頭指向被依賴的一方**,也就是指向局部變量。

- 重要更新說明
- 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管理工具