最全面的UML教程

你想要的乾貨,都在這裏喲算法

最全面的UML教程

寫在最前面的話

聲明,本篇博文部分資料摘自維基百科Calvinsily的UML教程,博文不涉及高深技術,旨在分享相關技術,節省大部分朋友學習的時間成本,望與諸君共同進步!編程

UML概述

UML.png

什麼是 UML?
  • UML 是一種爲面向對象開發系統的產品進行說明、可視化、和編制文檔的標準語言;
  • UML 做爲一種模型語言,它使開發人員專一於創建產品的模型和結構,而不是選用什麼程序語言和算法實現;
  • UML 是不一樣於其餘常見的編程語言,如C + +,Java中,COBOL等,它是一種繪畫語言,用來作軟件藍圖;
  • UML 不是一種編程語言,但工具可用於生成各類語言的代碼中使用UML圖;
UML 核心

UML 的核心是圖表,大體能夠將這些圖歸類爲結構圖和行爲圖。segmentfault

  • 結構圖是由靜態圖,如類圖,對象圖等靜態圖;
  • 行爲圖是由像序列圖,協做圖等動態圖;

一個系統的靜態和動態特性是經過使用這些圖的可視化。編程語言

UML 類圖:

類圖是使用面向對象的社會最流行的 UML 圖。它描述了在一個系統中的對象和他們的關係,可以讓咱們在正確編寫代碼之前對系統有一個全面的認識。
一個單獨的類圖描述系統的一個具體方面,收集類圖表示整個系統。基本上,類圖表示系統的靜態視圖。svg

類圖是惟一能夠直接映射到面向對象的語言UML圖。所以,它被普遍應用於開發者社區。

UML 對象圖:

對象圖是類圖的一個實例。所以,一類圖的基本要素是相似的。對象圖是由對象和連接。在一個特定的時刻,它捕獲該系統的實例。
對象圖用於原型設計,逆向工程和實際場景建模。工具

UML 用例圖:

用例圖是從用戶角度描述系統功能,並指出各功能的操做者,用來捕捉系統的動態性質。
一個高層次的設計用例圖是用來捕捉系統的要求,所以它表明系統的功能和流向。雖然用例圖的正向和反向工程是否是一個很好的選擇,但他們仍然在一個稍微不一樣的方法來模擬它。學習

UML 交互圖:

交互圖,用於捕獲系統的動態性質。
交互圖包括序列圖和協做圖,其中:序列圖顯示對象之間的動態合做關係,它強調對象之間消息發送的順序,同時顯示對象之間的交互;協做圖描述對象間的協做關係,協做圖跟時序圖類似,顯示對象間的動態合做關係。spa

UML 狀態圖:

狀態圖是一個用於模擬系統的動態性質的五個圖。這些圖用來模擬一個對象的整個生命週期。
一個對象的狀態被定義爲對象所在的條件下,特定的時間和對象移動對其餘狀態,在某些事件發生時。狀態圖還用於正向和反向工程。
狀態圖着重描述從一個狀態到另外一個狀態的流程,主要有外部事件的參與。設計

UML 活動圖:

活動圖描述知足用例要求所要進行的活動以及活動間的約束關係,有利於識別並行活動。活動圖是一種特殊的狀態圖,它對於系統的功能建模特別重要,強調對象間的控制流程。code

以上就是UML的相關概念了,其實說白了就說畫圖,至於怎麼畫,下面就讓咱們一塊兒來學習吧

在這裏我不會也不太可能將UML的各類元素都介紹一遍,我只介紹類圖中各個類之間的關係;能看懂類圖中各個類之間的線條、箭頭表明什麼意思後,也就足夠應對 平常的工做和交流了;

類圖是面向對象式的建模。他們通常都被用於概念建模(conceptual modelling)的系統分類的應用程序,並可將模型建模轉譯成代碼。

  • UML提供機制,以表明類的成員,如屬性和方法,對他們的其餘信息。
  • 指定一個類成員(即任何屬性或方法)的可見性有下列符號,必須擺在各成員的名字以前:

成員可見性.png

一個類有三個區域

  • 最上面是類名稱
  • 中間部分包含類的屬性
  • 底部部分包含類的方法

image

先從一個示例開始

請看下面這張類圖,主要看類之間的關係:
uml_class_struct.png

  • 車的類圖結構爲<<abstract>>,表示車是一個抽象類;
  • 它有兩個繼承類:小汽車和自行車;它們之間的關係爲實現關係,使用帶空心箭頭的虛線表示;
  • 小汽車爲與SUV之間也是繼承關係,它們之間的關係爲泛化關係,使用帶空心箭頭的實線表示;
  • 小汽車與發動機之間是組合關係,使用帶實心箭頭的實線表示;
  • 學生與班級之間是聚合關係,使用帶空心箭頭的實線表示;
  • 學生與身份證之間爲關聯關係,使用一根實線表示;
  • 學生上學須要用到自行車,與自行車是一種依賴關係,使用帶箭頭的虛線表示;
實例層級的關係
  • 泛化

泛化(Generalization),即繼承的反方向,指的是一個類(稱爲父類、父接口)具備另外的一個(或一些)類(稱爲子類、子接口)的共有功能。子類可視爲其父類的特例,並能夠增長新功能。用帶空心三角形箭頭的實線表示。

  • 實現

實現(Realization)指的是一個class類實現interface接口(能夠是多個)的功能;在Java中此類關係經過關鍵字implements明確標識。用帶空心三角形箭頭的虛線表示。

  • 依賴

依賴關係(Dependency)能夠簡單的理解爲一個類A使用到了另外一個類B," ... uses a ...",被依賴的對象只是做爲一種工具在使用,而並不持有對它的引用。而這種使用關係是具備偶然性、臨時性的、很是弱的,可是B類的變化會影響到A;表如今代碼層面,爲類B做爲參數被類A在某個method(方法)中使用。用帶燕尾箭頭的虛線表示。表示一個類依賴於另一個類的定義;依賴關係僅僅描述了類與類之間的一種使用與被使用的關係。

  • 關聯

關聯關係使一個類知道另一個類的屬性和方法;某個對象會長期的持有另外一個對象的引用,關聯的兩個對象彼此間沒有任何強制性的約束,只要兩者贊成,能夠隨時解除關係或是進行關聯,它們在生命期問題上沒有任何約定。被關聯的對象還能夠再被別的對象關聯,因此關聯是能夠共享的。 在代碼層面上,被關聯類以類屬性的形式出如今關聯類中,也多是關聯類引用了一個類型爲被關聯類的全局變量。目前定義有五種不一樣類型的關聯。雙向(Bi-directional)和單向(uni-directional)的關聯是最多見的。

  • 聚合

聚合(Aggregate)是表示總體與部分的一類特殊的關聯關係,是「弱」的包含(" ... owns a ..." )關係,成分類能夠不依靠聚合類而單獨存在,能夠具備各自的生命週期,部分能夠屬於多個總體對象,也能夠爲多個總體對象共享(sharable)。例如,池塘與(池塘中的)鴨子。再例如教授與課程就是一種聚合關係。又例如圖書館包含(owns a) 學生和書籍。即便沒有圖書館,學生亦能夠存在,學生和圖書館之間的關係是彙集。彙集可能不涉及兩個以上的類。圖形以空心的菱形箭尾與實線來表示。

關於UML 的相關介紹和其中最重要的類圖就介紹到這裏了,相信你此時已經入門UML了,也許你還想再更深刻的瞭解TA,不要緊, 我已經爲你準備了一份很是全面的學習資料,請點擊文章末尾連接領取.

最全面的UML教程
PS: 感謝Calvinsily整理分享的UML教程,你們能夠去點個贊哦!

請賞個小紅心!由於你的鼓勵是我寫做的最大動力!

更多精彩文章請關注
相關文章
相關標籤/搜索