UML類關係(依賴,關聯,聚合,組合的區別)
UML Class Relationships
由於最近看一些java書涉及到了uml類圖,因此查閱資料,思考後整理總結寫成如下文章
注重於理解,沒有如何實現(畫圖)的部分
Generalization/specialization
一般而言是指繼承
Realization
表示一些已定義但是沒有任何實現細節的類,所以很多情況是指介面和抽象類
Dependency
dependency exists between two elements if changes to the definition of one element (the supplier) may cause changes to the other (the client)
依賴其實定義非常模糊,所以使用依賴只應該是在其他關係無法表示的時候:
- 依賴通常體現為呼叫一個其他所依賴類的方法
- 在程式碼中往往體現為依賴類作為函式引數或者區域性臨時變數
- 舉例:人依賴車
Association
- 關聯暗示了依賴,與依賴的最大區別在於:關聯類通常作為一個類成員變數存在
- 與依賴相似,關聯用來表示無法用聚合和組合表示的關係
- 舉例:學生與老師的關係
Aggregation
聚合和組合是兩種部分整體的關聯關係
- 我認為最重要的特點是成員可獨立
- 舉例:班級與學生
Composition
- 我認為最重要的特點是成員不可獨立
- 成員必須依賴於整體才有意義
- 舉例:汽車和引擎
關聯,聚合,組合的區別
從例子來說
- 老師不能說包含學生,但老師帶很多學生;學生同樣不包含老師,但一個學生可以有很多老師
- 班級包含很多學生,但學生自己可以獨立存在,所以並不是在班級中建立的學生,而是班級中有學生的reference
- 汽車包含引擎,引擎脫離汽車之後毫無意義,所以引擎必須依賴於汽車,不可獨立存在
再說聚合和組合
- 很多文章都會說組合意味著擁有共同的lifetime,這點我不完全同意,因為以汽車和引擎為例,即使某一汽車壞了,引擎也可以搬移到其他的汽車上使用,所以生命週期的說法在我看來不完全對,所以我也並沒有說在汽車裡建立引擎
- 另一種說法是聚合的物件是可分享(share)的,而組合不是,這種說法我覺得比較靠譜,所以最後總結一下:
- 聚合與組合區別可以考慮是否可獨立和是否可分享
再說關聯
- 可以認為除了聚合和組合之外的類成員關係均認為是關聯
最後,我想補充一下
- 以上對於不同關係的定義是儘量關係正交,儘可能不存在重疊
- 這幾種關係是語義上的區別,關係之間可以相互轉化,所以一定要具體情況具體分析
相關推薦
用例關係(包含、擴充套件、泛化) uml類關係(依賴、關聯、聚合、組合、泛化)
用例關係 用例圖使使用者 與開發人員交流的一種重要的方式,是對使用者需求的一種描述。開發人員從使用者的角度整體上理解系統的功能。 1)用例“註冊學生資訊”和“充值”與用例“使用者登陸”之間的關係就是包含關係。b和a本質不一樣,就是做b之前一定要做a,那a和b就是包含。
UML類關係(依賴,關聯,聚合,組合,泛化,實現)
轉自 https://blog.csdn.net/k346k346/article/details/59582926 在學習面向物件設計時,類關係涉及依賴、關聯、聚合、組合和泛化這五種關係,耦合度依次遞增。關於耦合度,可以簡單地理解為當一個類發生變更時,對其他類造成的影響程
UML類關係(依賴,關聯,聚合,組合的區別)
UML Class Relationships 由於最近看一些java書涉及到了uml類圖,因此查閱資料,思考後整理總結寫成如下文章 注重於理解,沒有如何實現(畫圖)的部分 Generalization/specialization
類和類之間的依賴、關聯、聚合、組合關係
一、繼承關係 繼承指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力。在Java中繼承關係通過關鍵字extends明確標識,在設計時一般沒有爭議性。在UML類圖設計中,繼承用一條帶空心三角箭頭的實線表示,從子類指向父類,或者子介面指向父介面。
UML類圖關係(泛化 、繼承、實現、依賴、關聯、聚合、組合)-轉
繼承、實現、依賴、關聯、聚合、組合的聯絡與區別 分別介紹這幾種關係: 繼承 指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力,繼承是類與類或者介面與介面之間最常見的關係;在Java中此類關係通過關鍵字extends明確標識,在設計
設計模式之UML(一)類圖以及類間關係(泛化 、實現、依賴、關聯、聚合、組合)
類圖用於描述系統中所包含的類以及它們之間的相互關係,幫助人們簡化對系統的理解,它是系統分析和設計階段的重要產物,也是系統編碼和測試的重要模型依據。接下來我們就來談談類圖的組成,在下一篇中我們將討論一下類圖之間的關係。 一、類圖的組成 1. 普通類 上圖
UML類圖關係(繼承、實現、依賴、關聯、聚合、組合)
原文地址:http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html 類圖中包涵題目中的6中關係,用例圖中包涵泛化(繼承和實現的通稱),包含,擴張等 uml中關係很多,注意各個關係使用的是uml中的哪類圖即可,下面
UML類圖關係(泛化 、繼承、實現、依賴、關聯、聚合、組合)
繼承、實現、依賴、關聯、聚合、組合的聯絡與區別 分別介紹這幾種關係: 繼承 指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力,繼承是類與類或者介面與介面之間最常見的關係;在Java中此類關係通過關鍵字extends明確標識,在設計時一般沒有爭議性;
UML類圖關係(泛化、依賴、關聯、聚合、組合)
一、泛化關係 表示類與類之間的繼承關係,介面與介面之間的繼承關係,或類對介面的實現關係。一般化的關係是從子類指向父類的,與繼承或實現的方法相反。 二、關聯關係 表示類與類之間的聯接,它使一個類知道另一個類的屬性和方法。體現的是兩個類、或者類與介面之間語義級別的一種強依賴關係
UML類圖關系(泛化 、繼承、實現、依賴、關聯、聚合、組合)-轉
定位 雙向 圖關系 bst 操作 att one 一般來說 eal 繼承、實現、依賴、關聯、聚合、組合的聯系與區別 分別介紹這幾種關系: 繼承 指的是一個類(稱為子類、子接口)繼承另外的一個類(稱為父類、父接口)的功能,並可以增加它自己的新功能的能力,繼承是類與類或者
UML類圖關係之 繼承、實現、依賴、關聯、聚合、組合
原文出自 https://www.cnblogs.com/jiqing9006/p/5915023.html 繼承 指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力,繼承是類與類或者介面與介面之間最常見的關係;在Java
認識UML類關係——依賴、關聯、聚合、組合、泛化
在學習面向物件設計時,類關係涉及依賴、關聯、聚合、組合和泛化這五種關係,耦合度依次遞增。關於耦合度,可以簡單地理解為當一個類發生變更時,對其他類造成的影響程度,影響越小則耦合度越弱,影響越大耦合度越強。 下面根據個人理解,嘗試講解這五種類關係。 1.依賴(D
幾種類間關係:繼承、實現、依賴、關聯、聚合、組合及UML實現圖
轉自:http://www.cnblogs.com/yyyyy5101/archive/2011/03/11/1981078.html 繼承 指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力,繼承是類與類或者介面與介
面向物件設計物件之間關係---依賴、關聯、聚合和組合
在學習面向物件設計物件關係時,依賴、關聯、聚合和組合這四種關係之間區別比較容易混淆。特別是後三種,僅僅是在語義上有所區別,所謂語義就是指上下文環境、特定情景等。他們在程式語言中的體現卻是基本相同的,但是基本相同並不等於完全相同,這一點在我的前一篇博文《設計模式中類的關係》
Java 類中的繼承、實現、依賴、關聯、聚合、組合
繼承(又稱泛化) 指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力,繼承是類與類或者介面與介面之間 最常見的關係;在Java中此類關係通過關鍵字extends明確標識,在設計時一般沒有爭議性; 實現 指的是一
面向物件之依賴、關聯、聚合、組合
如果你確定兩件物件之間是is-a的關係,那麼此時你應該使用繼承;比如菱形、圓形和方形都是形狀的一種,那麼他們都應該從形狀類繼承而不是聚合。 如果你確定兩件物件之間是has-a的關係,那麼此時你應該使用聚合;比如電腦是由顯示器、CPU、硬碟等組成的,那麼你應該把顯示器、CP
泛化、依賴、關聯、聚合、組合
時間久了不用了,慢慢慢慢也就淡忘了,寫一篇部落格記錄下 借來一張《大話設計模式》圖: 類的關係一般分為泛化(繼承,實現),依賴,關聯,聚合,組合 繼承 指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力,繼承
23種設計模式-依賴、關聯、聚合和組合之間區別的理解
在學習面向物件設計物件關係時,依賴、關聯、聚合和組合這四種關係之間區別比較容易混淆。特別是後三種,僅僅是在語義上有所區別,所謂語義就是指上下文環境、特定情景等。他們在程式語言中的體現卻是基本相同的,但是基本相同並不等於完全相同,這一點在我的前一篇博文《設計模式中類的關係
UML類圖中常見的幾種關係:泛化、 實現、關聯、聚合與組合
在UML類圖中,常見的有以下幾種關係:泛化(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency) 1.泛化(Generalizati
SparkStreaming部分:OutPutOperator類,SaveAsHadoopFile運算元(實際上底層呼叫textFileStream讀取的,跟前兩種有一些區別)【Java版純程式碼】
package streamingOperate.output; import java.util.Arrays; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; imp