如何使用 PlantUML 快速建立類別圖

如何使用程式碼建立簡潔、實用的類別圖?透過範例、語法技巧和專家建議,學習如何使用 PlantUML 建立類別圖。

EdrawMax
EdrawMax Apr 30, 26
分享:
banner-product

對於系統文件製作者和軟體架構師來說,圖表是不可或缺的。然而,每次使用 GUI 工具進行變更可能會拖慢您的工作流程。這就是為什麼越來越多開發人員選擇基於程式碼的圖表的主要原因。

在 PlantUML 中簡單明確地編寫程式碼,就能輕鬆產生類別圖。它快速、與版本控制相容,而且不需要手動調整版面配置。您只需要編寫和渲染。

仍然有一些使用者偏好 EdrawMax 而非 PlantUML。主要原因是他們可以進行視覺化控制或使用內建範本,而無需深入了解語法。

本 PlantUML 類別圖教學將逐步引導您編寫類別圖程式碼。您將學習如何使用 PlantUML 建立類別圖,並使其與您的設計流程保持同步。

本文內容
  1. 核心語法速查表
  2. 進階技巧
  3. 使用案例
  4. 何時考慮替代方案
  5. 結語

核心語法

在設計類別圖之前,理解 PlantUML 語法至關重要。您應該熟悉類別宣告的流程、可見性符號的使用以及關係的陳述。使用 PlantUML 程式碼開發使用案例圖在結構上有所不同。

另外,類別圖有特定的規範。以下討論您將使用的主要設定。

類別宣告

PlantUML 提供三種簡單的方法來定義類別。極簡風格僅包含類別名稱。完整成員格式在大括號內指定屬性和方法。使用漸進格式時,您先建立一個簡單的類別,然後再用新資訊更新它。選擇最適合您工作流程的方式。

' 格式 1:極簡風格class Customer' 格式 2:完整成員class Order { -orderId: String +createOrder() #calculateTotal(): Decimal}' 格式 3:漸進式class Productclass Product { +name: String +stock: Int}
formats-three formats

可見性符號

在 PlantUML 中,可見性符號表示類別成員的存取層級。對於可以從任何地方存取的公開成員,使用 +。要表示私有成員(對其他類別不可見),使用 -。# 字元表示受保護。這僅允許在類別及其子類別中存取。

~ 代表套件可見性;因此,該成員僅可在同一套件內存取。這些符號是保持圖表存取層級一致性的便利方式。使用它們來表示成員的狀態,無論是公開還是隱藏。

符號 意義 範例
+ 公開 +save(): void
- 私有 -dbConnection: DB
# 受保護 #validate(): Bool
~ 套件 ~internalId: Long
關係類型

了解類別關係至關重要。它能清楚說明物件之間的關聯。

' 1. 繼承Vehicle <|-- Car

繼承說明某個類別是另一個類別的子類型。

' 2. 介面實作Runnable <|.. Thread

介面實作表示類別同意某些特定行為。

' 3. 組合Computer *-- CPU

組合代表一種緊密關係,其中一部分完全依賴於整體。

' 4. 聚合Library o-- Book

聚合是一種較鬆散的連接,其中部分可以在沒有整體的情況下存在。

' 5. 雙向關聯Professor "1" -- "1..*" Student

雙向關聯表示兩個類別之間的連結是雙向的。這揭示了它們如何對應和相互依賴。

進階技巧

一旦您掌握了基礎,就可以使用 PlantUML 做更多事情。簡單的版面配置變更和模組化配置使複雜圖表易於閱讀。這些能力擴展了 plantuml 類別圖語法,使其不僅僅是圖像溝通。為了深入探討,我們將探討如何處理版面配置和組織。

版面配置控制

' 強制水平流向left to right directionclass Aclass BA --> B' 清理空連接器hide empty members' 群組對齊together { class Order class OrderItem}

透過控制版面配置,您的類別圖變得更容易理解。使用 left-to-right direction 可以讓類別之間呈現水平流向。加入 hide empty members 功能以移除未使用的空間。將它們包含在 together 區塊中以進行對齊。所有這些版面配置工具都有助於保持圖表的整潔。

plantuml-layouts

自訂樣式

' 可重複使用的樣式範本!define ENUM_STYLE <> #FFCC00;line:blueclass OrderStatus <> { PENDING SHIPPED COMPLETED}' 批次樣式skinparam class { BackgroundColor #F9F9F9 ArrowColor #333333 FontName Arial}

要使您的類別圖更具吸引力,請嘗試自訂樣式。使用 !define,您可以輕鬆建立可重複使用的元素樣式。如果您想進行更大規模的變更,可以使用 skinparam class。這些選項不僅使您的圖表更整潔,還能避免手動操作的麻煩。

複雜關係

' 多重性符號Company "1" -- "1..*" Department : manages >Department "1" -- "*" Employee : employs <

' Directional labels
class User {
  +login()
}
class AuthService {
  +verify()
}
User .right.> AuthService : depends on

PlantUML 提供一種簡單的方式來詳細視覺化類別關係。多重性讓您指定關係中涉及的元素數量。引入方向標籤來指示類別之間的移動。這些功能清楚說明了類別在實際應用中的互動方式。

plantuml-complex relation

模組化設計

' 多重性符號Company "1" -- "1..*" Department : manages >Department "1" -- "*" Employee : employs <

' Directional labels
class User {
  +login()
}
class AuthService {
  +verify()
}
User .right.> AuthService : depends on

大型圖表有時會變得難以處理。PlantUML 是一種模組化設計工具,允許您將圖表分散到多個檔案中。!include 是您想要插入所有通用部分時使用的指令。這確保了在不同部分工作的團隊成員保持一致。

使用案例

既然您已經學會了如何設計和編輯類別圖樣式,了解它們的應用會很有幫助。類別圖在系統規劃和技術文件中都是多面手。以下是一些 PlantUML 類別圖範例。

電子商務系統

left to right directionpackage "E-Commerce" { class User { +register() +login() } class Product { +search() +getDetails() } class Cart { +addItem() +checkout() }}User --> Product : browsesUser --> Cart : manages

這個電子商務系統展示了組織基本功能的最佳方式。User 透過瀏覽和管理等簡單操作與 Product 和 Cart 互動。每個類別只顯示主要方法。利用 left-to-right direction 使版面配置整潔且更易讀。這是一個簡單且功能完善的模型。

ecommerce-system

學校管理系統

@startumlleft to right directionpackage "School Management System" { class Student { +register() +enrollCourse() } class Teacher { +assignCourse() +gradeStudent() } class Course { +courseName: String +courseCode: String } class Classroom { +roomNumber: String +capacity: Int }}Student --> Course : enrolls inTeacher --> Course : teachesCourse --> Classroom : held in@enduml

學校管理系統讓您了解學生和教師如何與課程連接。它說明學生註冊課程,教師被指派到課程。此外,每門課程也連結到教室。這種設定描述了系統設計中的主要學術工作流程。

school-management-system

網路銀行系統

@startumlleft to right directionpackage "Online Banking System" { class Customer { +openAccount() +login() } class Account { +accountNumber: String +balance: Decimal } class Transaction { +amount: Decimal +date: Date +process() } class BankService { +transferFunds() +checkBalance() }}Customer --> Account : ownsAccount --> Transaction : recordsCustomer --> BankService : uses@enduml

電子銀行系統展示了銀行業務的基本功能。Customer 類別具有建立帳戶的方法。Account 類別儲存帳戶資料。此外,每個 Account 日誌都保存 Transactions,說明特定期間的資金流動。此配置與實際銀行業務工作流程相容。

online-bank-system

圖書館管理系統

@startumlleft to right directionpackage "Library Management System" { class Member { +register() +borrowBook() +returnBook() } class Librarian { +addBook() +removeBook() +issueBook() } class Book { +title: String +author: String +isbn: String } class Loan { +issueDate: Date +dueDate: Date +returnDate: Date }}Member --> Loan : requestsLibrarian --> Book : managesLoan --> Book : includes@enduml

這是一個圖書館管理範例,展示了系統委派任務的方式。Loan 類別是 Member 和 Book 之間的主要連結。它能夠監控借閱和歸還日期。Librarian 負責目錄管理,因此操作控制與使用者分離。

library-management-system

共乘應用程式

@startumlleft to right directionpackage "Ride-Sharing App" { class Rider { +requestRide() +rateDriver() } class Driver { +acceptRide() +updateLocation() } class Trip { +startTime: DateTime +endTime: DateTime +fare: Decimal +completeTrip() } class Payment { +amount: Decimal +status: String +processPayment() }}Rider --> Trip : booksDriver --> Trip : assigned toTrip --> Payment : linked to@enduml

這個共乘應用程式模型將邏輯分散到主要元件中。Trip 不會混合支付或駕駛邏輯,而是專注於行程資訊。Payment 類別管理交易。Driver 和 Rider 與 Trip 是弱連接。這有助於擴展,例如處理更多預訂或動態分配駕駛。

riding-app

何時考慮替代方案

您可以使用 PlantUML 從程式碼快速產生類別圖,但這並非適用於每個使用者或情境。某些工作需要設計靈活性或適合新手的功能。我們將為您提供一個 PlantUML 的絕佳替代方案,幫助您製作完美的類別圖。

PlantUML 的限制

  • 非開發人員面臨陡峭的學習曲線:不熟悉程式設計的使用者可能會發現難以理解語法和結構。
  • 沒有動態程式碼整合:PlantUML 無法從真實程式碼庫建立視覺化。您必須手動編寫類別定義。
  • 缺乏真正的泛型支援:此工具可以顯示語法,例如 。然而,它不被視為類型參數,也不會強制執行任何關係

PlantUML 將其視覺化為具有純文字的靜態類別。它不理解 T 作為類型,也不提供您表示 Repository 的能力。因此,其在泛型或類型安全設計中的使用受到嚴重限制。

@startumlclass Repository { +save(item: T) +getById(id: String): T}@enduml

比基於程式碼的工具更簡單的替代方案:試試 EdrawMax

PlantUML 使開發人員能夠建立透過程式碼傳達結構的圖表。但如果您需要更快的速度而語法是次要的呢?如果您必須向非技術受眾解釋您的工作呢?這就是 GUI 工具派上用場的地方。如果您想要一個易於使用的工具,那麼 EdrawMax Online 是值得考慮的選擇。

EdrawMax 提供基於雲端的 UML 圖表編輯器。您可以使用拖放方式將類別元素放到畫布上,或使用線上範本快速開始。此外,它支援豐富的匯出格式(PNG、SVG、Visio)並提供智慧對齊工具。對於需要快速視覺化而無需輸入複雜語法的團隊來說,這比程式碼優先的工具更自然。

您會喜歡它的原因

  • 內建 UML 類別範本:使用多個預先設計的類別圖範本來協助您的專案。
  • 拖放符號庫:輕鬆插入類別、介面和關係,無需程式碼。
  • 豐富的匯出選項:將您的圖表匯出為 Visio、PDF、SVG 或 Office 檔案。
  • 雲端檔案存取和儲存:透過 EdrawMax 登入,您可以隨時隨地在雲端儲存、開啟和組織您的類別圖。

試用 App & 免費領取 500 AI Token
star icon

結語

本 PlantUML 類別圖教學已討論了語法的所有方面,以及進階結構化技巧。對於想知道如何使用 PlantUML 建立類別圖的任何人,我們都已在此涵蓋了所有內容。

然而,不同的團隊有不同的需求。如果視覺速度和便利性比程式碼管理更重要,EdrawMax 是明智的選擇。它提供簡單、無語法的方法。當您必須向非開發人員進行簡報或準備視覺化的時間很少時,它真的很方便。

親自試用這兩種工具,選擇讓您的工作變得輕鬆的那一個!