版權聲明
- 本文原創作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
- 本文參考資料:《UML面向對象分析、建模與設計(第2版)》呂云翔,趙天宇 著
包圖概述
包圖(package diagram)是用來描述模型中的包和所包含元素的組織方式的圖,是維護和控制系統總體結構的重要內容。包圖通過對圖中的各個包元素以及包之間關系的描述展示出系統的模塊以及模塊之間的依賴關系。
包圖能夠組織許多 UML 中的元素,其最常見的用途是用來組織用例圖和類圖。
核心知識點
請務必熟悉并掌握以下核心知識點。
包圖中的主要組成元素包括包以及包的依賴關系。
包的概念
包(package)是用于把模型本身組織成層次結構的通用機制,它不能執行。包是一個組織模型的組塊,是一種將設計元素分組組織的通用機制。包在圖形上被表示為一個文件夾的形狀,即一個大矩形的左上角附有一個小矩形,圖形上顯示有包名另外,也可以將包所包含的元素顯示在上面。
包名
每個包都必須有一個與其他包相區別的名稱。
包中的元素
包本身是一個容器,可以擁有很多元素,這些元素被稱作該包的內部元素。包中可以容納各種高級的模型元素,如類和類的關系、狀態機、用例圖、交互、協作等,甚至是一個完整的 UML圖。
包的依賴關系
包元素之間最常見的關系就是依賴關系。包之間的依賴關系實際上是從一個更高的層次來描述包內某些元素之間的依賴關系。也就是說,如果不同包中任何元素之間存在著一個依賴,則兩個包之間就存在著依賴關系。
包的依賴關系表示為一條帶箭頭的虛線。
包的引入
包的依賴關系同樣可以通過添加構造型來使其語義更加明確。最常見的包依賴關系的構造型就是引入,表示為<< import >>。引入指的是允許一個包(客戶包)中的元素可以自由訪問另一個包(提供者包)中的公有元素。引人是單向的,其表示法的箭頭從引入方指向輸出方。在引入的過程中,客戶包把提供者包的包名添加到自己的命名空間中,從而使客戶包中可以使用引入元素的簡單名來引用該元素。
例如,訂單Ordering引入了產品Products包和價格Pricing包。Ordering是客戶包,Products和Pricing是提供者。
航空購票系統包圖
在此,繼續使用航空購票系統演示包圖的繪制方法。
用例圖現狀
目前,在航空購票系統中用例圖如下:
元素分包
請選中用例圖,然后選擇添加包;圖示如下:
點擊確定后,圖示如下:
請將所有參與者拖動至Actors包中;圖示如下:
類似地,建立登錄注冊包并將登錄用例和注冊用例拖動至該包中;圖示如下:
類似地,建立核心業務包并將查看行程用例、查詢航班用例、購買機票用例、退訂機票用例拖動至該包中;圖示如下:
類似地,建立后臺操作包并將設定航班安排用例拖動至該包中;圖示如下:
類似地,建立信用評價包并將修改信用等級用例、檢查信用等級用例拖動至該包中;圖示如下:
最后我們做一個小調整,將Actors包下的用例圖拖出,放至用例圖下;圖示如下:
至此,完成了元素分包工作。
創建包圖
在用例圖文件夾上右鍵選擇添加圖再選擇UML Structural并選擇Package;圖示如下:
點擊確定后,圖示如下:
請將拖動各個包至繪圖區,松開鼠標時請選擇包元素;圖示如下:
添加包中的關系
對于創建好的包圖,可依據實際情況添加依賴和引入關系。利用Class Relationships 中的Associate添加關系,并在松開鼠標時選擇Import;圖示如下:
至此,完成了航空購票系統包圖的繪制。