UML Package Diagram / 封裝圖

  • 2549
  • 0
  • uml
  • 2019-03-20

大系統提供特殊挑戰。為大型系統繪製班級模型,而且它太大而難以理解。類之間有太多的聯繫要理解。您可以將圖表分成幾個頁面,但儘管這使得查看圖表變得更加容易,但底層軟件可能會有很多鏈接,導致代碼難以理解和易碎。

處理這個問題的一個有用的技術是UML的包:它基於Booch的類類。在這種技術中,每個類都被放入一個包中。如果一個班級希望在同一個班級中使用另一個班級,一切都很好。如果一個類想要在一個不同的包中使用一個類,它就必須為該包提供一個依賴(由Booch稱為可見性)。系統的總體情況是包和它們依賴關係的圖片,目的是將依賴關係降到最低。

Image result for package diagram visual paradigm

在一個包中,類可以是公共的或私有的。公共類被具有可見性的包所看到,私有類只能被相同包中的類使用。軟件包可以全球化,在這種情況下,所有其他軟件包都可以看到它們。對於諸如整數,字符串和集合等常規組件,這是必需的。

這種方法的一個重要組成部分是依賴關係不是傳遞性的。我的意思是,如果投資組合UI對投資組合應用程序有依賴性,而投資組合應用程序對位置有依賴性,則投資組合UI可以在職位中使用類。事實上,這個系統的全部重點都是一個分層架構,其中投資組合應用程序將組件用戶界面中的職位隱藏起來。

這種傳遞性的缺乏很重要,它是包依賴性與C ++包含的重要區別,也是Smalltalk Envy的先決條件。編譯先決條件必須是可傳遞的,但良好的包體系結構使用分層。程序包依賴性與Java的包和導入語句(不是傳遞性的)相同。它比Java更強大,因為如果在沒有導入語句的情況下使用類,則存在依賴關係。

使用這種方案,包的接口是域中所有公共類型的接口的聯合。這可能是因為這個界面太寬泛了。也可能是不同的客戶端軟件包需要不同的接口。在這兩種情況下[Wirfs-Brock]的合同概念都是有用的。合同本質上是一個已發布的軟件包界面。合同列出了可用的功能。每個功能都由包內的類實現。一個包可能有多個合同。

何時使用它們

包是任何大型系統的重要技術。對於小型系統,無需使用它們就可以很好地管理。對於Smalltalk來說,它們並不重要,它是一個動態環境,其中包含快速查找方法級別依賴關係的工具。

UML和[Booch]都不將包圖視為一種單獨的技術,而是將它們視為類圖中的圖標我更願意將它們作為單獨的技術來處理,但通過在同一圖上顯示類和包來組合它們通常很有用。 

哪裡可以找到更多

所有這些技術都是最少討論的方法之一。 [Booch]是最受關注的人,但他對他的技術的描述令人沮喪。對於這種方法的最佳描述是[Martin]給出的 ,他在書中的大型示例中包含了幾個使用包的例子(在Booch的舊類名稱下)。[Fowler]也討論了使用這種技術的幾種模式。

尋找在線uml編輯器? 點擊打開並立即編輯

 

 

Visual Paradigm International