UML定義:java
UML特色:架構
在UML2.2中一共定義了14中圖示,大致分爲三類:異步
1.結構式圖形:ide
2.行爲式圖形:函數
3.交互式圖形:code
類圖(Class Diagram):用於表示類、接口、實例等之間相互的靜態關係,雖然名字叫類圖,但類圖中並不僅有類。咱們來看一個比較全面的UML類圖樣例:
對象
首先在圖的上方能夠看到一個「動物」矩形框,這個矩形框就表明一個類。類圖分三層,第一層是類的名稱,若是是抽象類,類名會使用斜體表示。第二層是類的屬性,也就是類的字段或變量。第三層是類的行爲,也就是方法或者說函數。繼承
圖中左下角的「飛翔」表示一個接口圖,與類圖的主要區別是接口圖頂端有<<interface>>
。第一層天然是接口的名稱,第二層則是接口方法。接口還有另外一種表示方法,也就是圖中的棒棒糖表示法。接口
而後咱們來簡單說說子類與父類及實現類與接口的關係在UML類圖中的表示方式:生命週期
當類與類之間是繼承關係時,使用空心三角形和實線來表示,而一個類實現了一個接口時,使用空心三角形和虛線來表示,不論是繼承關係仍是實現關係,三角形箭頭都是由子類指向父類或接口
類與類之間的關係及其在UML類圖中的表示方式,關聯關係:
當一個類「知道」另外一個類時,那麼它們就具備關聯關係,關聯關係使用實線箭頭表示。例如圖中的企鵝須要知道氣候這個類,此時企鵝類與氣候類就是關聯關係
聚合關係:
圖中的大雁羣和大雁這兩個類就是聚合關係,咱們都知道大雁是羣居動物,多隻大雁能夠聚合成一個雁羣,因此它們之間就知足聚合關係。聚合表示一種弱的「擁有關係」,體現的是A對象能夠包含B對象,但B對象不是A對象的一部分。聚合關係使用空心菱形和實線箭頭來表示
合成(組合)關係:
合成是一種強的」擁有「關係,體現了嚴格的部分和總體的關係,部分與總體的生命週期同樣。上圖中的鳥和其翅膀就是合成(組合)關係,由於它們是部分和總體的關係,而且翅膀和鳥的生命週期是相同的。合成關係用實心的菱形和實線箭頭來表示。另外,在圖中合成關係的連線兩端還有一個數字1和數字2,這被稱爲基數,代表這一端的類能夠有幾個實例。很顯然,一隻鳥應該有兩隻翅膀,因此翅膀的基數是2。若是一個類可能有無數個實例,則就用n來表示。除了合成關係外關聯關係以及聚合關係也能夠有基數
依賴關係:
咱們都知道動物維持生命就得進行新陳代謝,那麼就須要氧氣、水等物質。也就是說,動物依賴於氧氣和水。因此它們之間是依賴關係,使用虛線箭頭來表示。
接着咱們再來看單個類的類圖:
一樣的從上至下分別是類名、屬性以及行爲。屬性和行爲前面都有權限表示符,+ 表示public、- 表示private、# 表示protected、~ 表示default。屬性和行爲中有下劃線的表示static,即靜態的屬性、方法。
而與該類圖所對應的Java代碼以下:
public abstract class StudentClass { public String name; private int age; protected double weight; double height; public static char sex; public void eat(String food) { } protected void drink() { } private void walk() { } void run() { } public abstract void study(); public boolean openMac() { return true; } public static void playGame(){ } }
下面介紹一些簡單UML類圖的記憶技巧:
記憶技巧1:UML箭頭方向:
可能有些人會認爲子類是以父類爲基礎的,箭頭應從父類指向子類。但咱們都知道定義子類時須要經過extends關鍵字指定父類,那麼子類必定是知道父類定義的,只有知道對方信息時才能指向對方,而父類是不知道子類是如何定義的,因此箭頭方向應從子類指向父類。
記憶技巧2:實線 - 繼承 | 虛線 - 實現:
記憶技巧3:實線 - 關聯 | 虛線 - 依賴:
記憶技巧4: 空心菱形 - 聚合 | 實心菱形 - 組合:
記憶技巧5:常見基數表達及含義,假設有A類和B類,數字標記在A類一端:
注:一般會省略「..」直接使用數字表示
時序圖(Sequence Diagram):是顯示對象之間交互的圖,這些對象是按時間順序排列的
時序圖中包括的建模元素主要有:
咱們來看一個簡單的時序圖, 左邊是代碼右邊是時序圖:
右邊的時序圖的三個方框表示三個實例:Client、Service、Device,而下面的虛線則是該實例的生命線,時間從上向下流逝,生命線僅存在於實例的生命週期內。其中虛線上的細長方形表示實例處於某種活動中,稱之爲控制焦點。黑色的實線實心箭頭表示方法的同步調用,異步調用是實線非實心箭頭,而虛線非實心箭頭則表示方法的結束返回。這些箭頭所表示的元素就是消息,例如圖中的work和open等。