如何繪制「UML類圖」?附內容詳解和優質實例分析!
下面這篇文章是筆者整理分析的關于如何繪制「UML類圖」的相關內容,大家一起來看看吧!
UML圖有很多種,但是并非必須掌握所有的UML圖,才能完整系統分析和設計工作。一般說來,在UML圖中,只要掌握類圖、用例圖、時序圖的使用,就能完成大部分的工作。也就是說,掌握UML的20%,就能做80%的事情。
對于程序員來說,最頻繁使用的莫過于類圖。因此,這里我們只講解UML類圖。至于其它UML圖,請在以后的工作中參閱更多UML學習資料繼續學習。
類圖是面向對象系統建模中最常用和最重要的圖,是定義其它圖的基礎。類圖主要是用來顯示系統中的類、接口以及它們之間的靜態結構和關系的一種靜態模型。類圖中最基本的元素是類、接口。軟件設計師設計出類圖后,程序員就可以用代碼實現類圖中包含的內容。
一、UML類圖簡介
類圖以反映類的結構(屬性、操作)以及類之間的關系為主要目的,描述了軟件系統的結構,是一種靜態建模方法。類圖用來描述系統中有意義的概念,包括具體的概念、抽象的概念、實現方面的概念等,是對現實世界中事物的抽象。
類圖的主要作用是對系統的詞匯進行建模、對簡單的協作進行建模和對邏輯數據庫模式進行建模。
二、類圖基本屬性
類圖概括起來主要由兩部分組成:類和類之間的關系,其中對類的定義如下圖所示,主要由三部分組成,它們分別是類名、類的屬性、類的方法,對應圖中的三個分區內容。
類名:圖中最上面的矩形框中為類名。如果字體為斜體,表示為抽象類
- 類的屬性:類名下方的區域
- 類的方法:圖中的下面部分
*符號解釋
說明:屬性和方法前面的“+”“-”和“#”表示訪問級別,以下對這些符號進行解釋說明。
- +:public,公用的,對所有類可見
- -:private,私有的,只對該類本身可用
- #:protected,受保護的,對該類的子孫可見
- ~:package,包的,只對同一包聲明的其他類可見
- =:表示默認值
- 下劃線:static
- 斜體:抽象 (注意也可以用兩個尖括號包裹來表示抽象,比如 —— <<我是抽象類or接口>>)
冒號前是方法名/變量名(根據有無括號區分),冒號后是返回參數/變量類型(根據有無括號區分),如果沒有冒號的話表示方法返回空(也有人通過:void表示返空)
三、類圖中具體類、抽象、接口和包的表示法
UML類圖中具體類、抽象類、接口和包有不同的表示方法。
1. 在UML類圖中表示具體類
具體類在類圖中用矩形框表示,矩形框分為三層:
- 第一層是類名字。
- 第二層是類的成員變量。
- 第三層是類的方法。
成員變量以及方法前的訪問修飾符用符號來表示:
- “+”表示 public;
- “-”表示 private;
- “#”表示 protected;
- 不帶符號表示 default。
2. 在UML類圖中表示抽象類
抽象類在UML類圖中同樣用矩形框表示,但是抽象類的類名以及抽象方法的名字都用斜體字表示。
3. 在UML類圖中表示接口
接口在類圖中也是用矩形框表示,但是與類的表示法不同的是,接口在類圖中的第一層頂端用構造型 <<interface>>表示,下面是接口的名字,第二層是方法。此外,接口還有另一種表示法,俗稱棒棒糖表示法,就是類上面的一根棒棒糖(圓圈+實線)。圓圈旁為接口名稱,接口方法在實現類中出現。
4. 在UML類圖中表示包
類和接口一般都出現在包中,UML類圖中包的表示形式。
四、類之間的關系
類之間的關系主要包括泛化(繼承)、依賴、關聯、聚合、組合和實現6種關系,下面對它們進行一一闡釋。
1. 泛化關系
泛化關系是一種繼承關系,子類繼承父類的所有行為和屬性,子類可以新增新的功能或者重寫父類功能。
表示方法:空心三角+實線,箭頭指向父類
2. 依賴關系
依賴關系表示一個類使用(依賴)另一個類的服務或信息。當一個類的改變會影響到另一個類時,兩個類之間存在依賴關系。一般來說,依賴總是單向的,不應該存在雙向依賴。
表示方法:尖括號+虛線
3. 關聯關系
關聯關系是一種擁有的關系,它使一個類知道另一個類的屬性和方法。它體現不同類的一種強依賴關系,比如我和我的朋友,這種關系比依賴更強,不存在依賴關系中的偶然性,關系也不是臨時的,一般是長期性的。
關聯關系分為單向關聯或雙向關聯,也可以有多重性(一對多),雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
表示方法:尖括號+實線,箭頭指向被擁有者
4. 聚合關系
聚合關系是關聯關系的一種,表示一種“弱”的“擁有”關系,是整體與部分的關系,且部分可以離開整體而單獨存在,如車和輪胎是整體和部分的關系,輪胎離開車仍然可以單獨存在。
表示方法:空心菱形+實線,菱形指向整體
5. 組合關系
組合關系也是關聯關系的一種,是比聚合關系還要強的關系,是整體與個體的關系,但個體不能離開整體而單獨存在。如公司和部門是整體和部分的關系,沒有公司就不存在部門。它要求普通的聚合關系中代表整體的對象負責代表部分的對象的生命周期。
表示方法:實心菱形+實線
6. 實現關系
實現關系是一種類與接口的關系,表示類是接口所有特征和行為的實現。
表示方法:空心三角+虛線
五、類圖案例分析
為了幫助大家更好的理解類之間的6種關系,下面使用例子輔助大家學習和消化吸收。
汽車類圖
汽車類圖說明:
- 車與小汽車和自行車之間是「實現」】關系,使用帶空心箭頭的虛線表示。
- 小汽車與SUV之間的關系為泛化關系,使用帶空心箭頭的實線表示。
- 小汽車與發動機和輪胎之間是「組合」】關系,使用實心菱形箭頭的實線表示。
- 學生上學需要用到自行車,與自行車是一種「依賴」】關系,使用帶箭頭的虛線表示。
- 學生與班級之間是「聚合」】關系,使用帶空心菱形箭頭的實線表示。
- 學生與身份證之間為「關聯」】關系,使用尖箭頭的實線表示。
如果你能快速的看懂并理解以上案例,說明你基本上已經把類圖弄懂了,再去多結合一些代碼和對應的類圖鞏固一下,以后再看到類圖就不會懵了。
六、如何繪制類圖?
ProcessOn支持多種圖形的繪制,當然也包括UML圖啦,用ProcessOn繪制類圖的方法很簡單,只要掌握了類圖繪制的知識點,研究明白了類圖案例,相信每個人都可以快速學會畫類圖。
- Step1:注冊登錄ProcessOn,新建UML圖形。
- Step2:在左側工具欄中選擇類的標志,拖拽到右側編輯區,寫上類名、屬性和方法。
- Step3:根據類之間的關系,標注箭頭和線。
注:ProcessOn每個圖標之間的連線默認都是實線箭頭,大家根據需要可以在上方工具欄中調整連線樣式、連線類型、連線顏色、箭頭方向和箭頭樣式等。如果你想讓自己的圖更美觀一些,可以把文本、圖標、線條等填充不同顏色、相同的圖標盡可能大小相同。
本文由 @觀察月亮的小白羊 原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發揮!