什麼是物件圖?
一個物件圖 是一種結構性UML 圖它作為您應用程式狀態的具體、即時快照。當類別圖描述系統的抽象藍圖、資料類型和結構規則時,物件圖則在特定時刻呈現出實際執行執行個體的視覺化。它模擬實際物件的實例化,顯示分配給其欄位的確切值,並強調執行期間這些實例之間存在的特定連結。
這種特定的UML 圖類型對於除錯複雜的資料結構、解釋高度嵌套的關係狀態(例如父-子樹狀圖),或驗證工程設計模式在特定邊界情況變數下是否按預期運作,具有極高的價值。透過VPasCode,您可以乾淨地撰寫即時物件關係,完全跳過手動方框繪製工具。
核心語法指南:元素與構造
要在 PlantUML 中設計出準確且符合標準的 UML 物件圖,您需要理解物件實例化、欄位值指派以及實例連結對應。
1. 物件實例化(名稱與類別類型)
物件使用object關鍵字來宣告。根據標準的 UML 建模慣例,您透過提供其唯一的實例名稱、後接冒號,以及其父類別藍圖類型來定義物件:
object "currentUser : Account" as activeUser ![]()
專業提示: 始終使用as關鍵字,將長實例名稱宣告對應至短的內部簡寫 ID(例如activeUser),以使繪製連結線快速且乾淨。
2. 指派欄位狀態與執行時期值
為了以測試資料值填滿您的物件,請使用尾隨的大括號開啟一個主體區塊,並將您的資料鍵值指派寫在獨立的行上。與類別定義不同,這裡不要附加資料類型——請使用實際的運作值:
object "adminCart : ShoppingCart" as cart1 {
cartId = "CART-9081"
itemCount = 3
isTaxExempt = false
} 
3. 映射實例連結
物件圖中具體實例之間的連接代表現實世界中的記憶體指標,而非抽象的結構模式。您可使用實心雙破折號(”--)。您也可以附加字串標籤以表示連結的功能上下文:

實用物件圖的最佳實務
- 專注於重點: 不要列出類別定義中的每一項欄位。僅包含能直接說明您試圖呈現的特定執行時期狀態或錯誤的關鍵變數值。
- 保持連結中立: 避免在物件圖中使用繼承三角形或嚴格的組合菱形。使用簡單、平坦的關係線(
--)或基本箭頭尖端(-->)來顯示參考。 - 水平對齊迭代: 如果您正在映射陣列清單或歷史物件序列,請使用水平導航箭頭,例如
-right->以強制實例以單一行清晰呈現。
現實世界中的 PlantUML 物件圖範例
範例 1:身份憑證會話狀態(具體值映射)
此範本映射了一個即時的安全授權狀態,示範單一已驗證使用者如何連結至多個具有不同資料變數的特定活躍機器會話實例。
@startuml
object "targetUser : UserAccount" as user {
userId = 1042
username = "dev_admin"
status = "ACTIVE"
}
object "sessionMobile : UserSession" as session1 {
sessionId = "SESS-AAA-99"
deviceOS = "iOS 17"
ipAddress = "192.168.1.54"
}
object "sessionDesktop : UserSession" as session2 {
sessionId = "SESS-BBB-11"
deviceOS = "macOS 14"
ipAddress = "72.44.12.102"
}
' 建立執行時期連結
user -- session1 : "已驗證登入"
user -- session2 : "已驗證登入"
@enduml 
語法解析: 此佈局捕捉了生產程式碼中的一個明確情境:一個特定的使用者記錄(ID 1042)同時驅動兩個完全獨立的執行時期會話實例。每個會話容器皆追蹤其自身獨立的元資料佈局參數。
範例 2:電子商務發票履行狀態(多實體地圖)
此進階系統藍圖描繪了一個已完成的金融交易圖形。它精確地顯示了訂單記錄、交易日誌與倉儲包裹在特定時間點之間的相互關係。
@startuml
object "buyerProfile : Customer" as customer {
email = "[email protected]"
tier = "VIP"
}
object "activeOrder : Order" as order {
orderNumber = "#99122"
subtotal = 149.99
currency = "USD"
}
object "stripeTransaction : LedgerEntry" as ledger {
referenceId = "ch_3Mv8x"
gatewayStatus = "SUCCESS"
settledAt = "2026-05-26"
}
object "packageA : Shipment" as ship1 {
trackingCode = "1Z999AA1"
carrier = "UPS"
weightKg = 1.4
}
object "packageB : Shipment" as ship2 {
trackingCode = "1Z999AA2"
carrier = "UPS"
weightKg = 0.8
}
' 結構性執行連結
customer -- order : "已提交"
order -- ledger : "由...資助"
order -- ship1 : "透過...履行"
order -- ship2 : "透過...履行"
@enduml 
語法解析: 此範本提供了複雜系統狀態的高度結構化概覽。它顯示單一訂單與成功的結帳交易日誌連結,並拆分為兩個獨立的實體運送檔案。如此細節程度使其成為審計資料結構與系統流程的優良藍圖。