導語
在一些框架講解、設計模式等技術帖子或者書中,經常出現UML圖。以自己的經歷來判斷,一般情況下,看到這些圖解都會選擇性忽視。這算是惰性,也沒有辦法;如果突然有一天,非要使用UML圖,那麼這篇文章可能會有所幫助。
這個是starUML的下載地址
接口和類的簡介
首先從最簡單的入手:接口和類
Class典型的UML示範
從上到下分成了三個部分,分別是:
- 類名
- 屬性
- 方法
屬性和方法前面有#,-,+符號,分別表示:
- + –> public
- - –> private
- # –> protected
上面的UML圖,翻譯成Java代碼如下:
public class Person {
private int age;
protected String name;
public int sex;
private int getAge() {
return age;
}
protected String getName() {
return name;
}
public int getSex() {
return sex;
}
}
interface典型的UML示範
《interface》很清楚地標明瞭這個是一個接口。上圖翻譯成Java代碼如下:
public interface CallBack {
public void call();
}
繼承和實現
繼承
類與類之間的繼承用空心三角形+實線表示,例如:
實現
類與接口之間的實現使用空心三角形+虛線表示,例如:
如果在使用starUML,會發現沒有extends和implements相關的線條,因爲不同的語言,這種表述不太一致,所以一般軟件使用更加通用的名稱來表示,具體來說就是:
- Generalization(泛化)–>extends
- Realization(實現)–>implements
依賴、關聯、聚合和組合(Dependence、Association、Aggregation和Composition)
除了繼承(泛化)和實現以外,一般類與類的關係還包括依賴、關聯、聚合和組合。
這幾種類與類之間的關係是有強弱之分的,可以大致排序爲:
泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴
依賴
依賴表示一個類的實現需要另一個類的協助,是類與類之間一種很弱的聯繫
表示方法:虛線+箭頭,箭頭指向被使用的對象
例如:
學生爲了得到高分需要書本的協助,但這種協助的效果有限(這裏只是舉例子,不用較真)
關聯
關聯表示:一種擁有關係,一個類知道另一個類的屬性和方法
表示方法:單向關聯:實線+箭頭;雙向關聯:只有直線
例如:
學生與老師之前是互動關係,是相互關聯的;學生可以選課、逃課、翹課……是單向關聯
聚合
聚合表示:一種整體與部分的關係,部分可以脫離整體而單獨存在
表示方法:使用空心菱形鏈接
例如:
眼鏡可以離開人體而單獨存在。
組合
組合表示:一種整體與部分的關係,部分不能脫離整體而單獨存在
表示方法:使用實心菱形
例如:
腿不能離開人體而單獨存在
ps:不同工具可能在聚合和組合的線段展示上不太一致,但最重要的菱形的空心與實心分別代表聚合和組合是一致的
結語
UML類圖的解讀並不複雜,只需稍微看下,就可以掌握。另外,如果想自己製作UML類圖,可以參考這篇文章。所使用的工具在這裏下載
轉載請標明出處:http://blog.csdn.net/qq_26411333/article/details/53507165