本文簡要介紹UML及類圖的相關知識。用少量例子講述類圖的一些語法規則,常用的符號表示。 ...
統一建模語言(UML) | 類圖
什麼是UML?
UML是一種用於可視化描述系統,具有廣泛用途的建模語言。作為一種標準化的圖形語言,在軟體工業中被用於軟體系統部件的具體化,可視化,結構化描述以及撰寫文檔,同樣在商業模型中也得到應用。
UML的優點:
- 使複雜的軟體設計更為簡單,也能夠實現像OOP(面向對象編程)這一類被廣泛應用的概念。
- 用理解起來可能更容易的圖來描述,避免了大量的文字。
- 是表達和交流概念或系統結構變得更容易。
- 在一張圖中就能夠描繪出整個系統。
- 程式員實用類圖來描述實際需求時,可讓問題更加清晰明瞭,實現起來更容易。
UML的分類
UML通常分為兩類:描述結構的UML圖(Structural UML diagrams)和描述行為的UML圖(Behavioral UML diagrams),具體見下表:
描述結構的UML圖 | 描述行為的UML圖 |
|
|
UML | 類圖
類圖展示出OOP中的類,介面,及其中存在的關係,關聯與協作。UML在類圖中是標準化的。類是OOP的主要構件模塊,而類圖用恰當的結構展示OOP中遇到的一切,包括類,繼承關係,類關係。它能夠描述各種對象和它們之間的靜態關係。使用類圖的主要目的:
- 類圖是唯一能夠恰當的展示出OOP中各種不同概念的UML。
- 利用類圖來對應用程式做出優化的設計與分析高效而快速。
- 類圖是部署圖和組件圖的基礎。
類圖一般的規則如下:
- 每個類用一個矩形框表示,框內由類名,屬性,及定義的操作三個子部件構成。
- 三種表示可見性的修飾符:
- + 表示public
- # 表示protected
- - 表示private
- ~ 表示default(無修飾符)
一些常用的構成模型的組件:
- 類(Class){名(name),屬性(attribute),方法(method)
- 對象(Object)
- 介面(Interface)
- 關係(Relationships) { 繼承(inheritance),關聯(association),泛化(generalization)}
- 關聯(association){雙向,單向(unidirectional,aggregation)}
常用表示關係的組件:
關於繪製類圖:
一些線上或離線的軟體都能夠完成類圖的製作,比如Edraw max, lucid chart等。如果能在相關網站軟體找到模板,製作類圖更為方便。
推薦網站https://www.draw.io/,可製作各種各樣的diagram,使用很快捷,可保存文件到本地,免費無需登錄。之前也經常用來畫流程圖。
例子:
下圖為實現interface和aggregation的類圖描述。MovablePoint, MovableCircle實現Movable。MovablePoint成為MovableCircle一部分。
如下是一張類圖,父類Animal有兩個子類dog,cat。d1為子類dog的對象。
以下為對應代碼:
import java.io.*; class GFG { public static void main(String[] args) { dog d1 = new dog(); d1.bark(); d1.run(); cat c1 = new cat(); c1.meww(); } } class Animal { public void run() { String name; String colour; System.out.println("animal is running"); } } class dog extends Animal { public void bark() { System.out.println("wooh!wooh! dog is barking"); } public void run() { System.out.println("dog is running"); } } class cat extends Animal { public void meww() { System.out.println("meww! meww!"); } }
參考資料:
[1]. Unified Modeling Language (UML) | Class Diagrams - GeeksforGeeks https://www.geeksforgeeks.org/unified-modeling-language-uml-class-diagrams/
[2]. UML Class Diagrams Tutorial, Step by Step – Salma – Medium https://medium.com/@smagid_allThings/uml-class-diagrams-tutorial-step-by-step-520fd83b300b