問題雜談:教你讀懂UML圖
UML圖可以說是每個程式設計人員必須知道的知識,關於UML了相關知識可以專門開設課程進行學習,知識體系在軟體工程中很重要,特別是設計到專業的團隊開發時,這些東西顯得尤為重要。我在這裡只是介紹UML圖中的基礎概念,讓你可以快速的看懂一張UML圖,而不必啃UML的知識體系。
首先我網上找到了一張比較好的圖(注:如有侵權請告知,僅此博文用途用,無意冒犯)
一、類圖
以圖中動物這個類為例,類圖分為三層,第一層是類名,如果是抽象類,則會用斜體顯示;第二層是類的特性,一般是屬性和欄位,第三層是類的操作,一般是方法。在特性和操作前的符號,其中,“+”代表public,“-”代表private,“#”代表protected。
二、介面圖
介面類共有兩種表示方式,第一種如圖中的“飛翔”,它與類圖的區別主要是頂端有<<interface>>,第一行是介面名,第二行是介面方法,符號含義相同。另一種表示方式如圖中的“唐老鴨”的類似棒棒糖的表示方式,即唐老鴨實現了“講人話”的介面
三、繼承關係
繼承關係用“空心三角形+實線”表示,即子類屬於父類,如鳥屬於動物。
四、實現介面
類實現了一個介面的關係用“空心三角形+虛線”表示,即大雁能夠飛翔。
五、關聯關係
關聯關係用實線箭頭表示,即一個類需要知道另一個類的時候,就用關聯關係,如企鵝需要知道氣候,用程式碼的方式來看,就是企鵝類中使用了氣候作為屬性,程式碼表示如下。
class Penguin extends Bird{
private Climate climate;
}
六、聚合關係
聚合關係用“空心的菱形+實線箭頭”表示,其中聚合表示一種弱的擁有關係,體現的是A物件可以包含B物件,但B物件不是A物件的一部分,如每一個大雁屬於一個雁群,一個雁群可以有多隻大雁,程式碼表示如下。
class WideGooseAggregate{
private WideGoose[] arrayWideGoose;
}
七、合成(組合)關係
合成(組合)關係用“實心菱形+實線箭頭”表示,其中合成是一種強的擁有關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。即圖中鳥與其翅膀是合成關係,因為他們是整體,生命週期一樣。另外合成關係的連線兩端還有數字“1”和數字“2”,這被稱為基數,表明這一端可以有幾個例項,如果有無數個例項,就用“n”表示,關聯關係、聚合關係也可以有基數,程式碼表示如下。
class Bird{
private Wing wing;
public Bird() {
wing = new Wing();
}
}
八、依賴關係
依賴關係用“虛線箭頭”表示,即圖中動物需要水、氧氣以及食物,程式碼表示如下。
abstract class Animal{
public Metabolism(Oxygen oxygen, Waiter water) {
}
}