在學習設計模式的時候UML圖是必須要了解的。
UML:統一建模語言(Unified Modeling Language)
UML主要包括如下圖:
其中,案例圖、類圖和序列圖是最有用的。
如下面的解釋可以深入理解類圖的關系:
(1)類class的解釋:
如圖的"動物"框,它就代表一個類。類圖分為三層,第一層顯示類的名稱,如果是抽象類,則用斜體表示。第二層是類的特性,通常就是字段和屬性。第三層就是類的操作,通常是行為和方法。注意前面的符號,"+" 表示public ,"-" 表示private,"#"表示friendly (默認值,本包可見)。,
(2)接口
如圖左下角的"飛翔"就是一個接口。接口與類的區別是頂端有<<interface>>。第一層是接口名稱,第二層是接口方法(這種是不贊成在接口中定義屬性)
補充:接口還有另外一種表示方法,在PowerDesigner中的接口是在名稱區加一個帶橫杠的三角,如下:
(3)繼承關系:空心三角形+實線表示
(4)實現關系:空心三角形+虛線表示
(5)關聯關系:當一個類知道另一個類時就需要用關聯(association),關聯用實線箭頭表示。
企鵝需要知道天氣的變化。
在代碼中表現為:關系對象出現在實例變量中。
(6)聚合關系:用空心的棱形+實心箭頭表示
看大雁與雁群的關系。大雁是群居動物,每個大雁都屬於一個雁群,一個雁群可以有多個大雁。所以說他們滿足聚合關系(Aggretation)。聚合是一種弱的"擁有關系",體現的是A可以包含B,但B不是A對象的一部分。
在代碼中表現為:關系對象出現在實例變量中。
(7)組合(合成)關系:用實心的棱形+實心箭頭表示
組合關系是一種強的擁有關系,體現了嚴格的部分和整體的關系,部分和整體的生命周期一樣。比如鳥和雞翅的關系,其生命周期是一樣的。連線兩端有基數,如下表示一個鳥有2個翅膀。關聯關系、聚合關系也可以有基數。
在代碼中表現為:關系對象出現在實例變量中。
(8)依賴關系:虛線+箭頭表示
動物依賴於洋氣和水,因此形成依賴關系。
在代碼中表現為:關系對象出現在局域變量或者方法的參量里;或者關系類的靜態方法被調用等。
注意:(1)關聯關系、聚合關系和合成關系不能從java語法上表現出來。(2)關聯關系常常可以進一步說明為聚合關系或者合成關系,因此上面關聯關系和合成關系的實現是一樣的。
編程是一門技術,更是一門藝術。