1. 程式人生 > >問題雜談:教你讀懂UML圖

問題雜談:教你讀懂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) {
		
	}
}