一、首先聲明一點,我 UML 類圖的學習是借鑒的 《大話設計模式》中的例子,僅僅是為了個人的學習,不涉及其他。
二、將大鳥講給小菜的 UML 類圖樣例貼上來。
三、說明:
1.類圖
第一層顯示的是類名,如果是抽象類,就用斜體表示。
第二層是類的特性,通常就是字段和屬性。
第三層是類的操作,通常是方法和行為。
注意:'+' 表示 public, '-' 表示 private,'#' 表示 protected。
2.接口圖
第一層是接口名稱
第三層是接口方法,如果為抽象方法的話,就用斜體表示。
3.接口的另一種表示方式:棒棒糖表示法。
如:唐老鴨講人話
4.類與類之間的關系
(1)繼承
繼承關系是用 空心三角形 + 實線來表示的。
表示is-a的關系,是對象之間耦合度最大的一種關系,子類繼承父類的所有細節。
如:動物、鳥、鴨、唐老鴨之間的關系。
(2)關聯關系
關聯用尖箭頭 + 實線來表示。當一個類“知道”另一個類時,可以用關聯。
如:企鵝需要“知道”氣候的變化,需要“了解” 氣候規律。
(3)聚合(Aggregation)
聚合用空心的菱形 + 實線來表示。菱形從局部指向整體。
聚合表示一種弱的 “擁有”關系,體現的是 A 對象可以包含 B 對象,但 B 對象不是 A 對象的一部分。
表示 has-a 的關系,是一種不穩定的包含關系。較強於一般關聯,有整體與局部的關系,並且沒有了整體,局部也可單獨存在。
如公司和員工的關系,公司包含員工,但如果公司倒閉,員工依然可以換公司。
又如大雁是群居動物,每只大雁都是屬於一個雁群,一個雁群可以有多只大雁。
(4)組合(Composition)
組合用實體菱形 + 實線來表示,菱形從局部指向整體。
組合表示一種強的“擁有”關系,體現了嚴格的部分和整體關系,部分和整體的生命周期一樣。
表示 contains-a 的關系,是一種強烈的包含關系。組合類負責被組合類的生命周期。是一種更強的聚合關系。
如公司和部門的關系,沒有了公司,部門也不能存在了;調查問卷中問題和選項的關系;訂單和訂單選項的關系。
又如鳥和翅膀就是組合關系,它們是整體與部分的關系,並且翅膀和鳥的生命周期是相同的。
(5)依賴(dependency)
依賴用虛線箭頭來表示,箭頭從使用類指向被依賴的類。
依賴表示對象之間最弱的一種關聯方式,是臨時性的關聯。
(6)多重性(Multiplicity)
通常在關聯、聚合、組合中使用。就是代表有多少個關聯對象存在。使用數字..星號(數字)表示。
如一只鳥有兩只翅膀。
5.類與接口之間的關系
實現接口
接口實現是用空心三角形 + 虛線來表示的。如大雁實現了飛翔的接口,唐老鴨實現了講人話的方法。