Python設計模式 - UML - 組合結構圖(Composite Structure Diagram)
簡介
組合結構圖用來顯示組合結構或部分系統的內部構造,包括類、接口、包、組件、端口和連接器等元素,是UML2.0的新增圖。
組合結構圖側重復合元素的方式展示系統內部結構,包括與其他系統的交互接口和通信端口,各部分的配置和協作,組件相關的服務,以及各服務之間的通信和調用。
組合結構圖建模步驟
- 確定系統中的主要組合結構、重要類以及與外部的連接或調用關系
- 分析主要組合結構在系統中所起的作用以及與系統中其他組件的調用關系
- 將重要類分解為復合元素,並確定其部件、接口以及需要對外暴露的端口
- 確定類復合元素與其內部成員之間的比例關系、成員與成員之間的連接關系、接口的種類以及該類元與其他類之間的關系
- 將需要進行緊密合作共同完成一項功能的一系列角色定義為協作,並確定協作的角色與連接器類型
組合結構圖主要元素
- 類元與成員:
- 類元:類元素在類圖中和組合結構圖中的表示形式不同
類元素在組合結構圖中以復合元素的方式展示內部結構,比如對外暴露接口、端口或部件。
- 成員:成員指與類元具有組成關系的其他類,一般把成員放到類元的內部結構中描述
如下所示,CPU、Memory等與Computer類元有組成關系
- 類元與成員的數量關系:一對一或一對多
- 成員與成員的連接關系:成員之間如果依賴、泛化、關聯或調用關系可以用連接符連接。用不帶箭頭的直線標識連接符
- 類元與關聯類的連接關系:在類元中用邊框為虛線的矩形標識關聯類
- 組件(Component): 承擔具體功能單元的實際文件,一般為lib, jar, dll, exe等格式,遵循接口定義並提供具體的接口實現
- 部件(Part):代表屬於類元的一個元素,該元素可能包含一個或多個實例。常用在類或組件內部用不加修飾的矩形框標識
- 接口(Interface):一組操作的集合,聲明了組件提供或請求的服務契約,這個契約由實現和使用這個接口的組件共同遵守。
- 提供接口:也叫供接口,是指組件給其他組件提供服務時實現的特性和約束。用帶棒球體標識
- 需求接口: 也叫需接口,是指組件像其他組件請求服務時要遵循的接口。用帶棒杯體標識
- 端口(Port):類元與外部部件交互的連接處。用類元邊框線上的小矩形框標識
類元一般都是以封閉的結構體,在組合結構圖中通過端口與外部交互。
組合結構圖元素關系
- 委托與委托連接器(Delegate Connector):委托用來定義組件外部接口和端口的工作方式。用帶關鍵字<<delegate>>的實線箭頭標識委托連接器
- 委托連接器表示法
- 委托示例
- 協作(Collaboration):定義了共同完成一項功能的一系列角色,包括這些角色相應的實體和實體間的關系。用虛線框橢圓標識協作
- 協作表示法
- 協作示例
- 綁定與角色綁定連接器(Role Binding Connector):綁定用來連接從協作到完成該角色任務的類元。
用帶關鍵字Role的虛線箭頭標識角色綁定連接器,並在類元端顯示角色名稱。
- 角色綁定連接器表示法
- 綁定示例
- 表現與表現連接器(Represents Connector):表現用來連接從協作到使用該協作的類元。用帶關鍵字<<represents>>的虛線箭頭標識表現連接器
- 表現連接器表示法
- 表現示例
- 發生與發生連接器(Occurrence Connector):發生用來連接從協作到描繪該協作的類元。用帶關鍵字<<occurrence>>的虛線箭頭標識
- 發生連接器表示法
- 連接示例
組合結構圖示例
以供應鏈(生產商-廠家直銷-批發商-零售-電子商務)為例
組合結構圖註意事項
- 側重類的整體特性,就使用類圖;側重類的內部結構,就使用組合結構圖
- 註意區分端口和接口,端口主要是類元對外可視的部分、負責類元與外部環境的交互,接口主要是類元自身的供需定義
- 註意區分組件和部件,組件一般是指系統中獨立的組成部分,部件一般指類元內部的組成部分
- 對於合作緊密完成意向功能的一系列角色建議組合為協作,對外作為獨立的整體操作
- 註意區分不同的連接器類型及適用場景
Python設計模式 - UML - 組合結構圖(Composite Structure Diagram)