1. 程式人生 > >UML類圖學習筆記

UML類圖學習筆記

最近在學習設計模式的相關知識,所以會接觸到很多UML類圖。以前學習《軟體工程》這個課程的時候學過UML類圖,但是沒有引起重視,所以現在重新學習UML類圖的相關知識。 我們首先以一個圖示樣例來進行講解。

UML類圖各種關係示例

1. 類和介面

  1. 類 類在UML類圖中表示為一個三行的矩形框,其中第一行表示類的類名;第二行表示類的成員變數;第三行表示類的方法名。 其中類名或者方法名為斜體字表示該類(方法)為抽象類(方法)。 成員變數和方法前的符號表示訪問修飾符,其中"+“表示public,”_“表示private,”#" 表示protected。
  2. 介面 介面在UML類圖中表示為一個兩行的矩形框,其中第一行表示介面的介面名,頭上還有一個<>標誌;第二行表示介面的方法名,注意介面中的方法都為抽象方法。其他通類的UML圖一致。

2. 類(介面)之間的關係

  1. 繼承關係 繼承(Extends)關係在UML類圖中使用“實線+空心三角形”表示,三角形指向基類,如上圖中的“鳥”和“動物之間”的關係。
  2. 介面實現關係 實現(Implement)關係使用“虛線+空心三角形”表示,三角形指向介面,如上圖中的“大雁”和“飛翔”之間的關係。
  3. 關聯關係 關聯(Association)關係在UML類圖中使用“實線箭頭表示”,如上圖中的“企鵝”與“氣候”之間的關係,企鵝需要“知道”氣候的變化。關聯關係體現的是兩個類、或者類與介面之間語義級別的一種強依賴關係,比如我和我的朋友;這種關係比依賴更強、不存在依賴關係的偶然性、關係也不是臨時性的,一般是長期性的,而且雙方的關係一般是平等的、關聯可以是單向、雙向的。
public class Penguin extends Birds {
	private Climate climate;   //氣候
}
  1. 組合(合成)關係 組合(Composition)關係在UML類圖中使用”實心菱形+實線箭頭“表示,連線兩端的數字被稱作基數,表明這一端的類可以有多少個例項,如圖中的“鳥”和“翅膀”之間的關係。組合關係體現的是一種強的”擁有“關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期是一樣的。體現的是一種“contains-a”的關係,這種關係比聚合更強,也稱為強聚合;他同樣體現整體與部分間的關係,但此時整體與部分是不可分的,整體的生命週期結束也就意味著部分的生命週期結束。
public Birds extends Animal {
	private Wing wing;
	public Birds(){
		this.wing=new Wing();
	}
}
  1. 聚合關係 聚合(Aggregation)關係在UML類圖中使用“空心菱形+實線箭頭”表示,聚合表示一種弱的“擁有”關係,體現的是A物件可以包含B物件,但B物件不是A物件的一部分。如上圖中的“大雁”和“雁群“之間的關係。體現的是整體與部分、擁有的關係,即“has-a”的關係,此時整體與部分之間是可分離的,他們可以具有各自的生命週期,部分可以屬於多個整體物件,也可以為多個整體物件共享
public class WideGooseAggregate extends Birds implement IFly {
	private WideGoose[] arrayWideGoose;
}
  1. 依賴關係 依賴(Dependency)關係在UML類圖中使用“虛線箭頭”表示,如圖中的“動物”和“氧氣”、“水”之間的關係。依賴關係是各種關係之間耦合度最小的一種關係,表示一個類A使用到了另一個類B,而這種使用關係是具有偶然性的、臨時性的、非常弱的,但是B類的變化會影響到A。一般是類B的物件是作為類A的區域性變數,生命週期隨著方法的執行完畢而消亡。
public abstract class Animal {
	public metabolism(Oxygen oxygen, Water water){
	}
}