最全面的UML教程

darryrzhong發表於2018-04-20

你想要的乾貨,都在這裡喲

最全面的UML教程

寫在最前面的話

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

UML概述

UML.png

什麼是 UML?
  • UML 是一種為物件導向開發系統的產品進行說明、視覺化、和編制文件的標準語言;

  • UML 作為一種模型語言,它使開發人員專注於建立產品的模型和結構,而不是選用什麼程式語言和演算法實現;

  • UML 是不同於其他常見的程式語言,如C + +,Java中,COBOL等,它是一種繪畫語言,用來做軟體藍圖;

  • UML 不是一種程式語言,但工具可用於生成各種語言的程式碼中使用UML圖;

UML 核心

UML 的核心是圖表,大致可以將這些圖歸類為結構圖和行為圖。

  • 結構圖是由靜態圖,如類圖,物件圖等靜態圖;

  • 行為圖是由像序列圖,協作圖等動態圖;

一個系統的靜態和動態特性是通過使用這些圖的視覺化。

UML 類圖:

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

類圖是唯一可以直接對映到物件導向的語言UML圖。因此,它被廣泛應用於開發者社群。

UML 物件圖:

物件圖是類圖的一個例項。因此,一類圖的基本要素是類似的。物件圖是由物件和連結。在一個特定的時刻,它捕獲該系統的例項。 物件圖用於原型設計,逆向工程和實際場景建模。

UML 用例圖:

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

UML 互動圖:

互動圖,用於捕獲系統的動態性質。 互動圖包括序列圖和協作圖,其中:序列圖顯示物件之間的動態合作關係,它強調物件之間訊息傳送的順序,同時顯示物件之間的互動;協作圖描述物件間的協作關係,協作圖跟時序圖相似,顯示物件間的動態合作關係。

UML 狀態圖:

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

UML 活動圖:

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

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

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

類圖是物件導向式的建模。他們一般都被用於概念建模(conceptual modelling)的系統分類的應用程式,並可將模型建模轉譯成程式碼。

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

一個類有三個區域

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

image

先從一個示例開始

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

uml_class_struct.png

  • 車的類圖結構為<>,表示車是一個抽象類;
  • 它有兩個繼承類:小汽車和自行車;它們之間的關係為實現關係,使用帶空心箭頭的虛線表示;
  • 小汽車為與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教程,大家可以去點個贊哦!

請賞個小紅心!因為你的鼓勵是我寫作的最大動力!

更多精彩文章請關注

相關文章