UML超新手入門(4)套件圖型 by Michael | CodeData
top

UML超新手入門(4)套件圖型

分享:

UML超新手入門(3)類別圖型 – 結合關係 << 前情

在UML中並沒有規定「套件圖型、Package Diagrams」,「套件、Package」在UML中只是一種特殊的「標記、Notation」,套件標記用來表示Java程式語言中的套件結構。例如J2SE內建的套件,可以使用下列的圖型來表示:

umlandjava_04_01

使用Java的套件規格將軟體系統切割為套件之後,套件與套件之間,也會產生類似類別之間的關聯,你可以把套件看成是一個包裝多個類別的「邏輯單位」,從邏輯單位來看整個軟體系統的架構,也就是說,把焦點從類別之間的關聯,提昇到套件之間的關聯,這對於龐大的軟體系統來說,幫助是非常大的。

套件標記

Java的套件規格是採用「分類」與「資料夾」的概念,將不同分類的類別,使用資料夾來管理,在分割為套件的同時,也定義出「名稱空間、Namespace」,這樣就可以允許在不同的套件下有相同名稱的類別。一個套件標記(Package Notation),就相對於Java的套件宣告:

umlandjava_04_02

在Java裡的套件,會對應到檔案系統下的資料夾結構:

umlandjava_04_03

下列是一般常見的套件標記樣式:

umlandjava_04_04

如果只是想呈現軟體系統中所有套件的邏輯單位,還要在套件中顯示類別圖型,會讓套件圖型過於複雜,在這樣的情形下,大多會省略類別圖型的顯示:

umlandjava_04_05

有時為了要顯示套件裡包含的類別,又不想讓類別圖型佔去太多空間,也可以使用下列圖型的作法:

umlandjava_04_06

在上列的圖型中,以「booking.client」套件來說,類別檔案在檔案系統中的位置應該要像這樣:

umlandjava_04_07

對應到原始程式檔的宣告,應該要像這樣:

umlandjava_04_08

相依性

套件標記之間的「相依性、Dependency」,在Java實作裡指的就是「import」的關聯,如果在兩個套件標記之間有下列的結合關係,當你修改「db」套件時,就要考慮是否會影響到「client」套件的運作:

umlandjava_04_09

對應到Java的實作,表示在原始程式裡有這樣的宣告:

umlandjava_04_10

延續上面討論的「client」對於「db」的相依性,在軟體系統中,可能會出現這樣的情況:

umlandjava_04_11

對應到Java的實作,表示除了原有的「BookingGui」和「DBMain」之間的關聯外,在原始程式裡還有這樣的宣告:

umlandjava_04_12

這種情形稱為「高度結合、High coupled」的套件相依性,或稱為「循環相依、Cyclic dependency」。雖然這樣的情形很常見,但這是比較不好的狀況,這個時候,通常會調整套件的規劃,避免循環相依的情形發生:

umlandjava_04_13

相關的檔案都可以GitHub瀏覽與下載。

https://github.com/macdidi5/UMLTutorial

後續 >> UML超新手入門(5)物件圖型

分享:
按讚!加入 CodeData Facebook 粉絲群

相關文章

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言

關於作者

張益裕。目前的工作是講師與作者,專長是教育訓練課程規劃、教材編製與課程推廣,技術書籍與專欄寫作。涵蓋的領域有OOAD、Java程式設計、JavaFX、Java Embedded、Android與SQL。已出版電子書Google Play圖書Pubu

熱門論壇文章

熱門技術文章