簡介
對象圖和類圖的基本概念是類似的,可以看作類圖在系統某一時刻的鏡像,顯示了該時刻系統中參與交互的各個對象以及它們之間的關系。
對象圖的元素包括對象、鏈接、包,元素之間的關系和類圖相似。
對象圖建模步驟
- 參照相應的類圖確定參與交互的各個對象,通常類在"class", "new", "extends", "implements" 等關鍵字后,對象名在類名后
- 確定類之間的關系,如依賴、泛化、關聯、聚合、組合、實現等
- 參考交互圖中某個特定時刻各個對象的狀態,使用對象圖為這些對象建模
- 根據建模目標繪制各個對象的關鍵狀態,以及關鍵對象之間的連接關系
對象圖的元素
對象圖中的元素包括對象、鏈接、包。
- 對象
對象是類的實例,對象圖中的對象由兩欄組成,即對象名和屬性,無操作。
- 對象名:實例的名稱,表示方法為對象名:類名[狀態]
- 對象名:是個字符串,必須加上下划線(和類名一起使用時需要加上下划線以示區分)
- 類名:可選,如果包含了類名則必須加上":"
- 狀態:由“[]“括起、逗號分隔開,表示該對象的狀態
- 屬性:對象是一個類實例化的事物,所以其每個屬性都有固定的值,通常會在屬性欄列出關鍵屬性名及相應具體值
對象有三種不同的表示方式:
- 對象名:類名 # 對象名在前,類名在后,中間用”:“連接,對象名和類名都加下划線
- :類名 # 匿名對象的表示方法,用於尚未給對象取名的情況
- 對象名 # 省略掉類名
- 鏈接
鏈接是兩個或多個對象之間的連接關系,分為單向鏈接和雙向鏈接
- 單向鏈接
- 雙向鏈接
- 包
UML中的包直接對應java中的包,用來表示層次和組織內容。
對象圖的關系
對象圖中元素之間的關系跟類圖相似,可參考 Python設計模式 - UML - 類圖(Class Diagram) 中類圖的關系部分
對象圖示例
以公司架構為例應用對象圖:
對象圖與類圖的區別
- 分欄個數:對象圖兩個分欄;類圖三個分欄
- 名稱格式:對象名稱帶下划線;類名稱不帶下划線
- 是否包含操作:對象圖標中不包含操作;類圖標中包含操作
- 作用范圍:對象圖標表示單一實例;類圖標代表該類的所有實例
- 連接關系:對象之間的連接關系為相互獨立的鏈接;類之間的關系為依賴、關聯、泛化
對象圖注意事項
- 通常單個類的對象可能有很多個,所以我們需要確定出哪些對象對系統具有重大影響
- 重要對象本身可能具有多個功能,所以需要確定出其中的主要功能
- 對象圖中的元素名詞務必直觀、清晰、一目了然
- 如果同一個類有兩個或兩個以上的重要對象時注意捕獲不同對象各自的屬性值
- 添加適當的注釋作為補充說明