1. 程式人生 > >StarUML類圖相關——關聯、聚合、組合、泛化、依賴、實現

StarUML類圖相關——關聯、聚合、組合、泛化、依賴、實現

及其 jpg str 類的繼承 sed core tar 必須 物理

在閱讀設計模式相關的書籍,或者其他一些項目、相關博客等等,經常會遇到類圖,它對於一個類的信息,如變量、方法及其可見性,類與類(接口)之間的繼承關系、依賴關系、聚合關系、組合關系等,都可以比較形象得當地描述出來。這樣有用的工具,還是需要稍微掌握了解下,也方便自己的應用和描述。因此就有了這篇搬運工文檔

一、StarUML下載和入手

1、先捧出StarUML官網StarUML——The Open Source UML/MDA Platform

2、入手簡單的UML開發可以參考:使用StarUML創建類圖 ,這個教程可以滿足平時記錄的一些基本類圖開發。

二、關聯、聚合、組合、泛化、依賴、實現——概念介紹

在StarUML中有幾個常見的概念

Association

DirectedAssociation

關聯
Aggregation 聚合
Composition 組合
Generalization 泛化(繼承)
Dependency 依賴
Realization 實現

如下是在StarUML中的樣子。

技術分享圖片

1、關聯——Association或者DirectedAssociation

參考UML Association

Association is a relationship between classifiers which is used to show that instances of classifiers could be either linked to each other or combined logically or physically into some aggregation.

關聯用於描述類之間的一種關系,表示類之間有聯系,或者在邏輯上、物理上有組合、聚合的關系。關聯關系是一種比較寬泛的描述。對於聚合和組合,其實也是屬於關聯,只是從不同角度出發而已。

簡單一點描述,把關聯看成是has-a的泛化。從實際的場景來考慮,關聯關系,可以有單向關聯、雙向關聯、自關聯等。

單向關聯

單向關聯表現為單向的關系,比如說,裝13 has-a 愛瘋X

技術分享圖片

雙向關聯

關聯關系是雙向的,常見的例子:顧客與(即購買)商品,學生與老師,課程與學生

  1. 顧客與(即購買)商品:顧客可以購買很多商品,而賣出去的商品可以關聯到對應的顧客
  2. 學生與老師:一個學生可以有很多老師,一個老師也可以找到所教的學生
  3. 課程與學生:一門課程可以有多個學生選修,一個學生也可以選修多門課程。如下是栗子:

技術分享圖片

自關聯

簡單理解,就是內部持有該類本身的一個引用,常見的就是鏈表的結點

技術分享圖片

這裏參考Java7——HashMap內部結點Entry的實現:

 1 /**
 2  * 參考Java7-HashMap源碼內部實現
 3  */
 4 class Entry<K,V> implements Map.Entry<K,V> {
 5         final K key;
 6         V value;
 7         Entry<K,V> next;
 8         int hash;
 9         //...
10 }

2、聚合——Aggregation

體現的是整體與個體之間的關聯關系,兩者是可以分離的。沒有強制的生死關系。例如:圖書館與書;電腦與鍵盤、鼠標;汽車與輪胎、發動機。個體是可以脫離整體單獨存在的。

技術分享圖片

3、組合——Composition

在聚合關系之上的一種關聯關系,是最強的關聯關系,代表的是整體與部分的關系,具有統一的生存期,是不可分割一個整體存在。以人為例子,頭部、心臟、手、腳等,都必須放在一起,共存亡。

技術分享圖片

4、泛化或者繼承——Generalization

類的繼承或者接口與接口之間的繼承關系,常見到的概念就是“is-a”

技術分享圖片

5、依賴——Dependency

類的定義,包括其行為等,會受到另一個(些)類的影響。

  1. 作為(方法的)局部變量,
  2. 作為方法的形參
  3. 靜態方法調用

例子1:以常見的Controller、Servie、DAO為例,請求轉發到Controller時,依賴與具體的Servie實現,而Servie則是依賴DAO層實現數據庫交互。

技術分享圖片

例子2:Maven的pom.xml依賴配置,就是常見的Dependency

6、實現——Realization

Java中常見的就是實現接口。例如,List接口的幾個常見實現類:ArrayList、LinkedList、Vector。

技術分享圖片

以上uml類圖參考我的github鏈接:wpbxin-github

參考1:使用StarUML創建類圖

參考2:類與類之間的關系-依賴,關聯,聚合,組合,繼承泛化的區別

參考3:UML圖中類之間的關系:依賴,泛化,關聯,聚合,組合,實現

參考4:關聯、組合、聚合、依賴關系比較

參考5:UML類圖(上):類、繼承和實現

參考6:UML類圖(下):關聯、聚合、組合、依賴

StarUML類圖相關——關聯、聚合、組合、泛化、依賴、實現