使用PlantUML繪製類圖

本文基於sublime的PlantUML插件繪製類圖。如需瞭解插件安裝,請點擊Sublime安裝PlantUML插件git

類的UML表示

使用UML表示一個類,主要由三部分組成。類名屬性方法。其中屬性方法的訪問修飾符用 -#+ 表示 privateprotectedpublicgithub

如圖所示,表示A類有一個private屬性,protected 構造函數和public方法。函數

@startuml

class A{
	- String field
	+ A()
	# void method()
}
note right: 這是測試類 A

@enduml
複製代碼

類的關係

在面嚮對象語言中,類的關係有不少種,能夠歸納爲三類:泛化依賴關聯測試

泛化

泛化指父類跟子類的關係,表示is-a的關係。如父類是抽象類或普通類,則這種關係叫繼承。如,父類是接口,則這種關係叫實現。UML中,繼承和實現由不一樣的標記表示。spa

繼承

PlantUML用 --|> 表示繼承關係。實線和三角形的抽象表示,指向誰,即繼承誰。插件

@startuml

    class A
    abstract B

    ' A 繼承 B
    A --|> B

@enduml
複製代碼

實現

PlantUML用 ..|> 表示實現關係。虛和三角形的抽象表示,指向誰,即實現誰。3d

@startuml

    class A
    interface C

    ' A 實現 C
    A ..|> C

@enduml
複製代碼

依賴

類之間,最弱的關聯方式。經常使用於在A類的方法中使用B類的對象做爲參數、局部變量或者對B類靜態方法的調用。code

PlantUML用 ..> 表示依賴關係。虛線和箭頭的抽象表示,指向誰,即依賴誰。cdn

@startuml

    class A
    class B

    ' A 依賴 B
    A ..> B

@enduml
複製代碼

關聯

關聯關係,即對象之間的引用關係。常使用類的屬性表達。對象

單向關聯

B類做爲A類的屬性,表示A類與B類有關聯。 PlantUML用 --> 表示單向關聯。實線線和箭頭的抽象表示,指向誰,即關聯誰。

@startuml

	class A{
		- B b
	}
	class B

	' A 關聯 B
	A --> B

@enduml
複製代碼

雙向關聯

B類做爲A類的屬性同時,A類也是B類的屬性,表示雙向關聯。 PlantUML用 -- 表示雙向關聯。或者用<-->

@startuml

	class A{
		- B b
	}
	class B{
		- A a
	}

	' A 關聯 B
	A -- B

@enduml
複製代碼

自關聯

A類關聯A類自身。常見於單例模式。

@startuml

	class A{
		- A a
	}
	

	' A 關聯 A
	A --> A

@enduml
複製代碼

聚合

在關聯關係的基礎上,延伸出聚合關係,強的關聯關係,表示has-a關係。總體與部分的關係,部分不依賴於總體,可獨立存在。經常使用於成員變量。

如;汽車和輪胎的關係,輪胎可做爲獨立的商品出售。

PlantUML用 o-- 表示聚合關係。實線和空心菱形的抽象表示,指向誰,表示誰是總體。

@startuml

	class Car{
		- List<Wheel> wheels
	}
	class Wheel

	' Car 關聯 Wheel
	Car "1" o-- "4" Wheel

@enduml
複製代碼

圖中數字14也表示一對多關聯。NN同理。

組合

在關聯關係的基礎上,延伸出另一種關聯關係,組合關係,表示contains-a關係。總體與部分的關係,部分依賴於總體,不可獨立存在。經常使用於成員變量。

如:身體和動做的關係。

PlantUML用 *-- 表示聚合關係。實線和實心菱形的抽象表示,指向誰,表示誰是總體。

@startuml

	class Body{
		- List<Action> actions
	}
	class Action

	' Body 關聯 Action
	Body "1" *-- "N" Action

@enduml
複製代碼

PlantUML排版

相比較其餘的UML軟件或插件。PlantUML的優點在於,存儲的是文本文件,能夠方便的進行團隊協做以及高度可定製化的依賴關係。可是,最大的缺點在於,排版是經過插件自動生成的,排版效果不盡人意。所以,PlantUML提供四個關鍵字 up down left right。指定類與類之間的相對關係。

default

@startuml

class A1
class B1

A1 --> B1

class A2
class B2
A2 <-- B2

@enduml
複製代碼

箭頭向左時,被指向對象在上; 箭頭向右時,被指向對象在下。

up

@startuml

class A1
class B1

A1 -up-> B1

class A2
class B2
A2 <-up- B2

@enduml
複製代碼

使用up時,被指向對象在上。

down

@startuml

class A1
class B1

A1 -down-> B1

class A2
class B2
A2 <-down- B2

@enduml
複製代碼

使用down時,被指向對象在下。

left

@startuml

class A1
class B1

A1 -left-> B1

class A2
class B2
A2 <-left- B2

@enduml
複製代碼

使用left時,被指向對象在左。

right

@startuml

class A1
class B1

A1 -right-> B1

class A2
class B2
A2 <-right- B2

@enduml
複製代碼

使用right時,被指向對象在右。

總結

畫類圖,只是PlantUML的功能之一,還能夠使用它畫用例圖、順序圖、活動圖。更多用法,請關注後續博客或訪問官網

此處是廣告Flueky的技術小站

相關文章
相關標籤/搜索