一張圖徹底理解UML類圖中的各種關係

就算學習了很久的UML類圖,相信大家對於類圖中的類與類之間的關係的理解可能多多少少還是會有些迷惑,下面我將用一幅圖來幫助大家理解類圖中的各種關係。

如上圖所示,我們先建立一個抽象類動物Animal,動物是需要喝水的,所以建立一個水類Water。動物喝水它肯定需要一個方法名字叫drink,那麼這方法肯定需要一個的引數叫water,型別為Water。那麼,動物是依賴於水的,這樣動物和水之間就形成了一個依賴關係。
動物分很多種類,現在我們簡單來講有哺乳動物Mammal,也有鳥類bird,它們兩類都繼承(泛華Generalization)與動物。鳥類是需要有翅膀才能飛,所以就需要一個翅膀類Wing,鳥有翅膀,所以給鳥類增加一個成員變數wing,型別為Wing。翅膀是不能離開鳥類單獨存在的,所以翅膀和鳥類之間就形成一種組合關係。鴨子也是鳥類的一種,所以鴨子類繼承與鴨子類Duck,但是有一種特殊的鴨子唐老鴨他是會說話Talk也會演電影Act,所以唐老鴨類DonalDuck繼承於Duck,將Talk和Act分別設計為兩個介面,DonalDuck類對這兩個介面進行了實現(Realization)。

對於哺乳動物來說也有很多,我們簡單來舉兩個例子。一個是狼類Wolf,另一個是羊,他們都是繼承於哺乳動物。狼吃羊,羊也會躲避狼,所以他們之間會有關聯關係。一般狼不會單獨存在的,他們會形成一個狼群,所以很多的狼在一起就聚合成了一個狼群類WolfPack。換言之,某一隻狼離開了這個狼群,這個狼群依然存在。一匹狼離開了狼群成為了孤狼,但是它也是能夠單獨存在,所以它們之間是一種聚合關係而不是組合關係。