UML類圖:類之間的6種關係及表示方法
常見的關係有:繼承,關聯關係,聚合關係,複合關係,依賴關係,實現關係。
其中,聚合關係(Aggregation),組合關係(Composition)屬於關聯關係(Association)。
幾種關係所表現的強弱程度依次爲:組合>聚合>關聯>依賴。
-
虛線箭頭指向依賴;
-
實線箭頭指向關聯;
-
虛線三角指向接口;
-
實線三角指向父類;
-
空心菱形能分離而獨立存在,是聚合;
-
實心菱形精密關聯不可分,是組合;
這些關係之間的表示方法如下圖所示
-
繼承(泛化)
一種繼承關係,表示一般與特殊的關係,它指定了子類如何特化父類的特徵和行爲。
-
實現
一種類與接口之間的關係,表示類是接口所有特徵和行爲的實現
-
組合
整體與部分的關係,但部分不能離開整體而單獨存在
-
聚合
整體與部分的關係,部分可以離開整體而單獨存在
-
關聯
關聯關係是類與類之間的聯結
是一種擁有的關係,它使一個類知道另一個類的屬性和方法
關聯關係可以是
單向
也可以是雙向
,雙向的關聯關係兩端沒有箭頭或兩個箭頭
,單向的關聯關係有一個箭頭
,而且箭頭在被關聯類方 -
依賴
依賴關係也是代表類與類的聯結
是一種使用的關係,即一個類的實現需要另一個類的協助
依賴必須是
單向
的。
聚合和組合的區別
這兩個比較難理解,重點說一下。聚合和組合的區別在於:聚合關係是“has-a”關係,組合關係是“contains-a”關係;聚合關係表示整體與部分的關係比較弱,而組合比較強;聚合關係中代表部分事物的對象與代表聚合事物的對象的生存期無關,一旦刪除了聚合對象不一定就刪除了代表部分事物的對象。組合中一旦刪除了組合對象,同時也就刪除了代表部分事物的對象。
關聯和聚合的區別
關聯和聚合的區別主要在語義上,關聯的兩個對象之間一般是平等的,例如你是我的朋友,聚合則一般不是平等的,例如一個公司包含了很多員工,其實現上是差不多的。
依賴於關聯的區別
1.首先從關係程度上依賴沒有關聯程度強烈,對於兩個類之間的依賴,只是保持在方法上,例如一個類的方法中引用了某個類的變量。
2.在關聯中確實彼此把對方作爲自己的一個屬性,耦合度更高。保持的時間更長些,畢竟是作爲一個屬性存在,實例化我的時候,就會有你。而依賴只是單純的用到對方方法時才存在
泛化與實現的區別
其實泛化與實現之間的關係只有一點,如實是實現的話,那麼子類就不能夠在擴充方法,如果是泛化的話,可以在父類基礎上再次擴充自己的方法。