UML類圖(Unified Modeling Language Class Diagrams)

統一建模語言(UML) |  類圖

什麼是UML?

  UML是一種用於可視化描述系統,具有廣泛用途的建模語言。作爲一種標準化的圖形語言,在軟件工業中被用於軟件系統部件的具體化,可視化,結構化描述以及撰寫文檔,同樣在商業模型中也得到應用。

UML的優點:

  • 使複雜的軟件設計更爲簡單,也能夠實現像OOP(面向對象編程)這一類被廣泛應用的概念。
  • 用理解起來可能更容易的圖來描述,避免了大量的文字。
  • 是表達和交流概念或系統結構變得更容易。
  • 在一張圖中就能夠描繪出整個系統。
  • 程序員實用類圖來描述實際需求時,可讓問題更加清晰明瞭,實現起來更容易。

UML的分類

  UML通常分爲兩類:描述結構的UML圖(Structural UML diagrams)和描述行爲的UML圖(Behavioral UML diagrams),具體見下表:

描述結構的UML圖 描述行爲的UML圖
  • 類圖(Class diagram)
  • 包圖(Package diagram)
  • 對象圖(Object diagram)
  • 組件圖(Component daigram)
  • 組合結構圖(Composite structure diagram)
  • 部署圖(Deployment diagram)
  • 活動圖(Activity diagram)
  • 時序圖(Sequence diagram)
  • 用例圖(Use case diagram)
  • 狀態圖(State diagram)
  • 協作圖(Communication diagram)
  • 交互關係概覽圖(Interaction overview diagram)
  • 時間線圖(Timing diagram)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章