StarUML類圖相關——關聯、聚合、組合、泛化、依賴、實現
在閱讀設計模式相關的書籍,或者其他一些項目、相關博客等等,經常會遇到類圖,它對於一個類的信息,如變量、方法及其可見性,類與類(接口)之間的繼承關系、依賴關系、聚合關系、組合關系等,都可以比較形象得當地描述出來。這樣有用的工具,還是需要稍微掌握了解下,也方便自己的應用和描述。因此就有了這篇搬運工文檔
一、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
雙向關聯
關聯關系是雙向的,常見的例子:顧客與(即購買)商品,學生與老師,課程與學生
- 顧客與(即購買)商品:顧客可以購買很多商品,而賣出去的商品可以關聯到對應的顧客
- 學生與老師:一個學生可以有很多老師,一個老師也可以找到所教的學生
- 課程與學生:一門課程可以有多個學生選修,一個學生也可以選修多門課程。如下是栗子:
自關聯
簡單理解,就是內部持有該類本身的一個引用,常見的就是鏈表的結點
這裏參考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:以常見的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類圖相關——關聯、聚合、組合、泛化、依賴、實現