你想要的乾貨,都在這裏喲算法
最全面的UML教程
聲明,本篇博文部分資料摘自維基百科
和Calvinsily的UML教程
,博文不涉及高深技術,旨在分享相關技術,節省大部分朋友學習的時間成本,望與諸君共同進步!編程
UML 核心
UML 的核心是圖表,大體能夠將這些圖歸類爲結構圖和行爲圖。segmentfault
一個系統的靜態和動態特性是經過使用這些圖的可視化。
編程語言
類圖是使用面向對象的社會最流行的 UML 圖。它描述了在一個系統中的對象和他們的關係,可以讓咱們在正確編寫代碼之前對系統有一個全面的認識。
一個單獨的類圖描述系統的一個具體方面,收集類圖表示整個系統。基本上,類圖表示系統的靜態視圖。svg
類圖是惟一能夠直接映射到面向對象的語言UML圖。所以,它被普遍應用於開發者社區。
對象圖是類圖的一個實例
。所以,一類圖的基本要素是相似的。對象圖是由對象和連接。在一個特定的時刻,它捕獲該系統的實例。
對象圖用於原型設計,逆向工程和實際場景建模。工具
用例圖是從用戶角度描述系統功能,並指出各功能的操做者,用來捕捉系統的動態性質。
一個高層次的設計用例圖是用來捕捉系統的要求,所以它表明系統的功能和流向。雖然用例圖的正向和反向工程是否是一個很好的選擇,但他們仍然在一個稍微不一樣的方法來模擬它。學習
交互圖,用於捕獲系統的動態性質。
交互圖包括序列圖
和協做圖,其中:序列圖顯示對象之間的動態合做關係,它強調對象之間消息發送的順序,同時顯示對象之間的交互
;協做圖描述對象間的協做關係,協做圖跟時序圖類似,顯示對象間的動態合做關係。spa
狀態圖是一個用於模擬系統的動態性質的五個圖。這些圖用來模擬一個對象的整個生命週期。
一個對象的狀態被定義爲對象所在的條件下,特定的時間和對象移動對其餘狀態,在某些事件發生時。狀態圖還用於正向和反向工程。
狀態圖着重描述從一個狀態到另外一個狀態的流程,主要有外部事件的參與。設計
活動圖描述知足用例要求所要進行的活動以及活動間的約束關係,有利於識別並行活動。活動圖是一種特殊的狀態圖,它對於系統的功能建模特別重要,強調對象間的控制流程。code
以上就是UML的相關概念了,其實說白了就說畫圖,至於怎麼畫,下面就讓咱們一塊兒來學習吧
在這裏我不會也不太可能將UML的各類元素都介紹一遍,我只介紹類圖中各個類之間的關係;能看懂類圖中各個類之間的線條、箭頭表明什麼意思後,也就足夠應對 平常的工做和交流了;
類圖是面向對象式的建模。他們通常都被用於概念建模(conceptual modelling)的系統分類的應用程序,並可將模型建模轉譯成代碼。
一個類有三個區域
先從一個示例開始
請看下面這張類圖,主要看類之間的關係:
泛化(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教程,你們能夠去點個贊哦!
更多精彩文章請關注