如何繪制「UML類圖」?附內(nèi)容詳解和優(yōu)質(zhì)實例分析!

0 評論 3519 瀏覽 14 收藏 12 分鐘

下面這篇文章是筆者整理分析的關(guān)于如何繪制「UML類圖」的相關(guān)內(nèi)容,大家一起來看看吧!

UML圖有很多種,但是并非必須掌握所有的UML圖,才能完整系統(tǒng)分析和設(shè)計工作。一般說來,在UML圖中,只要掌握類圖、用例圖、時序圖的使用,就能完成大部分的工作。也就是說,掌握UML的20%,就能做80%的事情。

對于程序員來說,最頻繁使用的莫過于類圖。因此,這里我們只講解UML類圖。至于其它UML圖,請在以后的工作中參閱更多UML學習資料繼續(xù)學習。

類圖是面向?qū)ο笙到y(tǒng)建模中最常用和最重要的圖,是定義其它圖的基礎(chǔ)。類圖主要是用來顯示系統(tǒng)中的類、接口以及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)系的一種靜態(tài)模型。類圖中最基本的元素是類、接口。軟件設(shè)計師設(shè)計出類圖后,程序員就可以用代碼實現(xiàn)類圖中包含的內(nèi)容。

一、UML類圖簡介

類圖以反映類的結(jié)構(gòu)(屬性、操作)以及類之間的關(guān)系為主要目的,描述了軟件系統(tǒng)的結(jié)構(gòu),是一種靜態(tài)建模方法。類圖用來描述系統(tǒng)中有意義的概念,包括具體的概念、抽象的概念、實現(xiàn)方面的概念等,是對現(xiàn)實世界中事物的抽象。

類圖的主要作用是對系統(tǒng)的詞匯進行建模、對簡單的協(xié)作進行建模和對邏輯數(shù)據(jù)庫模式進行建模。

二、類圖基本屬性

類圖概括起來主要由兩部分組成:類和類之間的關(guān)系,其中對類的定義如下圖所示,主要由三部分組成,它們分別是類名、類的屬性、類的方法,對應(yīng)圖中的三個分區(qū)內(nèi)容。

類名:圖中最上面的矩形框中為類名。如果字體為斜體,表示為抽象類

  • 類的屬性:類名下方的區(qū)域
  • 類的方法:圖中的下面部分

*符號解釋

說明:屬性和方法前面的“+”“-”和“#”表示訪問級別,以下對這些符號進行解釋說明。

  • +:public,公用的,對所有類可見
  • -:private,私有的,只對該類本身可用
  • #:protected,受保護的,對該類的子孫可見
  • ~:package,包的,只對同一包聲明的其他類可見
  • =:表示默認值
  • 下劃線:static
  • 斜體:抽象 (注意也可以用兩個尖括號包裹來表示抽象,比如 —— <<我是抽象類or接口>>)

冒號前是方法名/變量名(根據(jù)有無括號區(qū)分),冒號后是返回參數(shù)/變量類型(根據(jù)有無括號區(qū)分),如果沒有冒號的話表示方法返回空(也有人通過:void表示返空)

三、類圖中具體類、抽象、接口和包的表示法

UML類圖中具體類、抽象類、接口和包有不同的表示方法。

1. 在UML類圖中表示具體類

具體類在類圖中用矩形框表示,矩形框分為三層:

  • 第一層是類名字。
  • 第二層是類的成員變量。
  • 第三層是類的方法。

成員變量以及方法前的訪問修飾符用符號來表示:

  • “+”表示 public;
  • “-”表示 private;
  • “#”表示 protected;
  • 不帶符號表示 default。

2. 在UML類圖中表示抽象類

抽象類在UML類圖中同樣用矩形框表示,但是抽象類的類名以及抽象方法的名字都用斜體字表示。

3. 在UML類圖中表示接口

接口在類圖中也是用矩形框表示,但是與類的表示法不同的是,接口在類圖中的第一層頂端用構(gòu)造型 <<interface>>表示,下面是接口的名字,第二層是方法。此外,接口還有另一種表示法,俗稱棒棒糖表示法,就是類上面的一根棒棒糖(圓圈+實線)。圓圈旁為接口名稱,接口方法在實現(xiàn)類中出現(xiàn)。

4. 在UML類圖中表示包

類和接口一般都出現(xiàn)在包中,UML類圖中包的表示形式。

四、類之間的關(guān)系

類之間的關(guān)系主要包括泛化(繼承)、依賴、關(guān)聯(lián)、聚合、組合和實現(xiàn)6種關(guān)系,下面對它們進行一一闡釋。

1. 泛化關(guān)系

泛化關(guān)系是一種繼承關(guān)系,子類繼承父類的所有行為和屬性,子類可以新增新的功能或者重寫父類功能。

表示方法:空心三角+實線,箭頭指向父類

2. 依賴關(guān)系

依賴關(guān)系表示一個類使用(依賴)另一個類的服務(wù)或信息。當一個類的改變會影響到另一個類時,兩個類之間存在依賴關(guān)系。一般來說,依賴總是單向的,不應(yīng)該存在雙向依賴。

表示方法:尖括號+虛線

3. 關(guān)聯(lián)關(guān)系

關(guān)聯(lián)關(guān)系是一種擁有的關(guān)系,它使一個類知道另一個類的屬性和方法。它體現(xiàn)不同類的一種強依賴關(guān)系,比如我和我的朋友,這種關(guān)系比依賴更強,不存在依賴關(guān)系中的偶然性,關(guān)系也不是臨時的,一般是長期性的。

關(guān)聯(lián)關(guān)系分為單向關(guān)聯(lián)或雙向關(guān)聯(lián),也可以有多重性(一對多),雙向的關(guān)聯(lián)可以有兩個箭頭或者沒有箭頭,單向的關(guān)聯(lián)有一個箭頭。

表示方法:尖括號+實線,箭頭指向被擁有者

4. 聚合關(guān)系

聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,表示一種“弱”的“擁有”關(guān)系,是整體與部分的關(guān)系,且部分可以離開整體而單獨存在,如車和輪胎是整體和部分的關(guān)系,輪胎離開車仍然可以單獨存在。

表示方法:空心菱形+實線,菱形指向整體

5. 組合關(guān)系

組合關(guān)系也是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強的關(guān)系,是整體與個體的關(guān)系,但個體不能離開整體而單獨存在。如公司和部門是整體和部分的關(guān)系,沒有公司就不存在部門。它要求普通的聚合關(guān)系中代表整體的對象負責代表部分的對象的生命周期。

表示方法:實心菱形+實線

6. 實現(xiàn)關(guān)系

實現(xiàn)關(guān)系是一種類與接口的關(guān)系,表示類是接口所有特征和行為的實現(xiàn)。

表示方法:空心三角+虛線

五、類圖案例分析

為了幫助大家更好的理解類之間的6種關(guān)系,下面使用例子輔助大家學習和消化吸收。

汽車類圖

汽車類圖說明:

  • 車與小汽車和自行車之間是「實現(xiàn)」】關(guān)系,使用帶空心箭頭的虛線表示。
  • 小汽車與SUV之間的關(guān)系為泛化關(guān)系,使用帶空心箭頭的實線表示。
  • 小汽車與發(fā)動機和輪胎之間是「組合」】關(guān)系,使用實心菱形箭頭的實線表示。
  • 學生上學需要用到自行車,與自行車是一種「依賴」】關(guān)系,使用帶箭頭的虛線表示。
  • 學生與班級之間是「聚合」】關(guān)系,使用帶空心菱形箭頭的實線表示。
  • 學生與身份證之間為「關(guān)聯(lián)」】關(guān)系,使用尖箭頭的實線表示。

如果你能快速的看懂并理解以上案例,說明你基本上已經(jīng)把類圖弄懂了,再去多結(jié)合一些代碼和對應(yīng)的類圖鞏固一下,以后再看到類圖就不會懵了。

六、如何繪制類圖?

ProcessOn支持多種圖形的繪制,當然也包括UML圖啦,用ProcessOn繪制類圖的方法很簡單,只要掌握了類圖繪制的知識點,研究明白了類圖案例,相信每個人都可以快速學會畫類圖。

  • Step1:注冊登錄ProcessOn,新建UML圖形。
  • Step2:在左側(cè)工具欄中選擇類的標志,拖拽到右側(cè)編輯區(qū),寫上類名、屬性和方法。
  • Step3:根據(jù)類之間的關(guān)系,標注箭頭和線。

注:ProcessOn每個圖標之間的連線默認都是實線箭頭,大家根據(jù)需要可以在上方工具欄中調(diào)整連線樣式、連線類型、連線顏色、箭頭方向和箭頭樣式等。如果你想讓自己的圖更美觀一些,可以把文本、圖標、線條等填充不同顏色、相同的圖標盡可能大小相同。

本文由 @觀察月亮的小白羊 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于CC0協(xié)議。

該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!