1. 程式人生 > >關於UML和java類的一些知識

關於UML和java類的一些知識

首先,UML圖能比較直觀的表示java類於類之間的關係。

那麼,java的類於類之間的常用關係有幾種呢?以及每種關係如何通過UML表示呢?

1.關聯關係
關聯還細分為一下關係
a.雙向關聯

這裡寫圖片描述

C1-C2:指雙方都知道對方的存在,都可以呼叫對方的公共屬性和方法。
雙向關聯在程式碼的表現為雙方都擁有對方的一個指標,當然也可以是引用或者是值。
即在C1類裡面,有一個C2的引用;C2的類裡面,也有一個C1的引用。

b.單向關聯

這裡寫圖片描述

C3->C4:表示相識關係,指C3知道C4,C3可以呼叫C4的公共屬性和方法。沒有生命期的依賴。一般是表示為一種引用。


c.自關聯

這裡寫圖片描述

自己引用自己,帶著一個自己的引用。

2.聚合/組合關係
當類之間有整體-部分關係的時候,我們就可以使用組合或者聚合
細分,有兩種
a.聚合
這裡寫圖片描述

    表示C9聚合C10,但是C10可以離開C9而獨立存在(獨立存在的意思是在某個應用的問題域中這個類的存在有意義)
    再從網上找一個圖:

這裡寫圖片描述

b.組合

這裡寫圖片描述
組合是有實心菱形加實線箭頭表示。
表示的是C8被C7包容,而且C8不能離開C7而獨立存在。
但這是視問題域而定的,例如在關心汽車的領域裡,輪胎是一定要組合在汽車類中的,因為它離開了汽車就沒有意義了。但是在賣輪胎的店鋪業務裡,就算輪胎離開了汽車,它也是有意義的,這就可以用聚合了。
具體問題具體對待,就像我們最常用的類一樣,我將這個類封裝到什麼程度,完全取決於實際需要。

3.依賴關係
這裡寫圖片描述

依賴是一種弱關係,所以中間的線是虛線
指C5可能要用到C6的一些方法,也可以這樣說,要完成C5裡的所有功能,一定要有C6的方法協助才行。C5依賴於C6的定義,一般是在C5類的標頭檔案中包含了C6的標頭檔案。

這裡寫圖片描述
就是A中的某個方法,用到了B。從而讓B去完成一些事情。比如:我和自行車的關係,我和自行車平時可能沒有什麼關係,突然有一天我想騎車去一個地方,那麼這時候,我和自行車就有了依賴關係,我要依賴自行車帶我去一個地方。

4.泛化(繼承)關係
這裡寫圖片描述

如果兩個類存在泛化的關係時就使用,例如父和子,動物和老虎,植物和花等
這個我們用的很多了。

總結一下,以上UML圖困難不方便記憶,可以這樣,箭頭指向誰,誰就被怎麼怎麼樣。箭頭=被
虛線是弱關係
實現是強關係
這對大家的要求就是看到這些UML表示的關係圖,就能知道是哪種關係。一定要熟練掌握。
如果這個掌握不了,對後續的JAVA設計模式造成影響。從而理解不了設計模式之間的關係。