包是一組模型元素,這意味著一個包可以包含不同類型的模型元素,包括用於創建層次結構的其他包。一個包為它的內容定義了一個命名空間,用於各種目的。
封裝圖一覽
包圖用於簡化複雜的類圖,可以將類分組到包中。包是邏輯相關的 UML 元素的集合。
下圖是一個業務模型,其中類被分組到包中:
- 包顯示為頂部帶有小標籤的矩形。
- 包名稱位於選項卡上或矩形內。
- 虛線箭頭是依賴項。
- 如果另一個包的變化可能會迫使第一個包發生變化,那麼一個包依賴於另一個包。
封裝圖的基本概念
包圖遵循嵌套包的層次結構。嵌套包的原子模塊通常是類圖。使用包圖的限制很少,如下所示。
- 系統的包名稱不應相同,但是不同包中的類可以具有相同的名稱。
- 包可以包含整個圖表、單獨的組件名稱或根本不包含組件。
- 包的完全限定名稱具有以下語法。
包可以用符號表示,下面顯示一些示例:
包圖——依賴表示法
依賴關係涉及兩種子類型。它們是 <<import>> 和 <<access>>。雖然有兩種原型,但用戶可以使用他們自己的原型來表示兩個包之間的依賴類型。
封裝圖的關鍵要素
包用於組織大量模型元素:
- 能見度
- 進口
- 使用權
何時使用包?
創建大量模型元素的概覽
- 組織大型模型
- 對相關元素進行分組
- 分隔命名空間
包的可見性
每個包含的元素都具有相對於包含包的可見性。
- 公共元素對包外的元素可見,用“+”表示
- 受保護的元素僅對繼承包中的元素可見,用“#”表示
- 私有元素對包外的元素完全不可見,用“-”表示
- 類中屬性和操作可見性的相同語法
包之間的導入關係
這些關聯由包 X 擁有:
導入和訪問
遺產
具有對另一個包的泛化的包繼承了由繼承的包擁有或導入的公共和受保護元素。包在靜態圖中以兩種等效的方式顯示容器:
子系統
子系統用於可以由系統的各個部分錶示的系統分解:(規範/實現)
子系統內部和外部方面
一個子系統有一個規範和一個實現來表示兩個視圖:
- 外部視圖,顯示子系統提供的服務
- 內部視圖,顯示子系統的實現
- 兩個方面之間存在映射關係
子系統建模技巧
- 為大型系統的每個獨立部分定義一個子系統
- 根據系統類型和子系統類型等因素選擇規範技術
- 獨立實現每個子系統,使用規範作為需求規範
建模複雜分組
包圖通常用於描述包與其他包或對象之間的層次關係(分組)。一個包代表一個命名空間。
封裝圖示例——分層結構