UML 類圖綜合指南

統一建模語言UML ) 是軟件工程領域的通用開發建模語言,旨在為系統設計的可視化提供標準方法。創建 UML 的最初動機是希望標準化不同的符號系統和軟件設計方法。在 UML 中,類圖是六種結構圖之一。類圖是對象建模過程的基礎,對系統的靜態結構進行建模。

結構圖顯示了系統的靜態結構及其在不同抽象和實現級別上的部分,以及它們之間的關係。結構圖中的元素代表系統的有意義的概念,可能包括抽象概念、現實世界和實現概念,結構圖有以下七種類型:

 

14 種 UML 圖類型概述

什麼是類圖?

統一建模語言 (UML) 中的類圖是一種靜態結構圖,它通過顯示系統的類、它們的屬性、操作(或方法)以及對象之間的關係來描述系統的結構。 類圖是系統或子系統的藍圖。您可以使用類圖對構成系統的對象進行建模,顯示對象之間的關係,並描述這些對象的角色和它們提供的服務。

UML 的起源

UML 的目標是提供一種標準符號,可以被所有面向對象的方法使用,並選擇和集成前體符號的最佳元素。UML 被設計用於廣泛的應用程序。因此,它為廣泛的系統和活動(例如,分佈式系統、分析、系統設計和部署)提供​​了結構。

UML 是一種由 OMT 統一產生的符號

  1. 對象建模技術 OMT  [ James Rumbaugh  1991]——最適合分析和數據密集型信息系統。
  2. Booch [ Grady Booch  1994]——非常適合設計和實施。Grady Booch 與 Ada 語言進行了廣泛的合作,並且是該語言的面向對象技術開發的主要參與者。雖然 Booch 方法很強大,但符號不太受歡迎(很多雲形狀主導了他的模型——不是很整齊)
  3. OOSE(面向對象的軟件工程 [ Ivar Jacobson  1992])——以稱為用例的模型為特色。用例是一種強大的技術,可用於理解整個系統(OO 傳統上薄弱的領域)的行為。

1994 年,OMT 的創建者 Jim Rumbaugh 離開通用電氣並加入 Rational 公司的 Grady Booch 時震驚了軟件界。合作的目的是將他們的想法合併為一個單一的、統一的方法(該方法的暫定名稱)。方法確實是“統一方法”)。

UML 歷史

類圖的目的

類圖在系統設計的許多階段都很有用。在分析階段,類圖可以幫助您了解問題域的需求並識別其組件。在面向對象的軟件項目中,項目早期創建的類圖包含的類,在編寫代碼時往往會轉化為實際的軟件類和對象。

稍後,您可以將早期的分析和概念模型細化為類圖,以顯示系統的特定部分、用戶界面、邏輯實現等。

類圖廣泛用於建模面向對象系統,因為它們是唯一可以直接映射到面向對象語言的 UML 圖。在軟件開發週期的實施階段,您可以使用類圖將模型轉換為代碼,將代碼轉換為模型。

類示例

狗有狀態——顏色、名字、品種以及行為——搖擺、吠叫、進食。對像是類的一個實例。

什麼是班級?

UML 類表示法

類表示封裝狀態(屬性)和行為(操作)的概念。每個屬性都有一個類型。每個 操作 都有一個 簽名。 類名是 唯一的強制性信息

UML 類表示法

班級名稱:

  • 類的名稱出現在第一個分區中。

類屬性:

  • 屬性顯示在第二個分區中。
  • 屬性類型顯示在冒號之後。
  • 屬性映射到代碼中的成員變量(數據成員)。

類操作(方法):

  • 操作顯示在第三個分區中。它們是班級提供的服務。
  • 方法的返回類型顯示在方法簽名末尾的冒號之後。
  • 方法參數的返回類型顯示在參數名稱後面的冒號後面。操作映射到代碼中的類方法

類操作

類關係

一個類可能涉及與其他類的一種或多種關係。關係可以是以下類型之一:(有關關係的圖形表示,請參見右圖)。

關係類型 圖示
繼承 (或泛化):
  • 表示“is-a”關係。
  • 抽像類名稱以斜體顯示。
  • SubClass1 和 SubClass2 是 Super Class 的特化。
  • 帶有空心箭頭的實線,從子類指向父類
遺產
簡單關聯
  • 兩個對等類之間的結構鏈接。
  • Class1 和 Class2 之間存在關聯
  • 連接兩個類的實線
簡單關聯
聚合:一種特殊類型的關聯。它代表關係的“一部分”。
  • Class2 是 Class1 的一部分。
  • Class2 的許多實例(用 * 表示)可以與 Class1 相關聯。
  • Class1 和 Class2 的對象具有不同的生命週期。
  • 連接到復合類的關聯端帶有未填充菱形的實線
聚合
組成:一種特殊類型的聚合,當整體被破壞時,部分被破壞。
  • Class2 的對象與 Class1 一起生存和死亡。
  • Class2 無法獨立存在。
  • 與復合材料類相連的關聯處帶有實心菱形的實線
作品
依賴
  • 如果對一個類的定義的更改可能導致對另一個類的更改(但不是相反),則存在於兩個類之間。
  • Class1 依賴於 Class2
  • 帶有空心箭頭的虛線
依賴

關係名稱

  • 關係名稱寫在關聯行的中間。
  • 當您大聲朗讀它們時,好的關係名稱是有意義的:
    • “每個電子表格都 包含 一些單元格”,
    • “表達式  值”
  • 它們通常有一個 小箭頭來顯示 讀取關係的方向,例如,表達式計算為值,但值不計算為表達式。

關係名稱

關係——角色

  • 角色是關聯的方向性目的。
  • 角色寫在關聯行的末尾,描述了該類在關係中的作用。
    • 例如,一個單元格與一個表達式相關。關係的本質是表達式是單元格的 公式 。

類屬性和操作的可見性

在面向對象的設計中,屬性和操作有一個可見性的表示法。UML 標識了四種類型的可見性:  public、  protected、  private和 package

類中屬性和操作名稱前的 +、-、# 和 ~ 符號表示屬性和操作的可見性。

  • + 表示公共屬性或操作
  • – 表示私有屬性或操作
  • # 表示受保護的屬性或操作
  • ~ 表示包屬性或操作

類可見性示例

簡單類

在上面的例子中:

  • MyClassName 的 attribute1 和 op1 是公共的
  • attribute3 和 op3 受到保護。
  • attribute2 和 op2 是私有的。

下面為不同類的成員顯示了每種可見性類型的訪問權限。

訪問權 公開 (+) 私人的 (-) 受保護 (#) 包(~)
同一班級的成員 是的 是的 是的 是的
派生類的成員 是的 是的 是的
任何其他類別的成員 是的 在同一個包中

多樣性

每個類有多少個對象參與關係和多重性可以表示為:

  • 正好一個 – 1
  • 零或一 – 0..1
  • 許多 – 0..* 或 *
  • 一個或多個 – 1..*
  • 確切數字 – 例如 3..4 或 6
  • 或複雜的關係——例如 0..1、3..4、6.* 表示除 2 或 5 之外的任意數量的對象

多重性示例

  • 要求:一個學生可以參加多門課程,許多學生可以參加一門課程。
  • 在下面的示例中, 類圖 (左側)描述了上述靜態模型的需求陳述,而對像圖(右側)顯示了課程註冊的快照(類圖的實例)分別是軟件工程和數據庫管理課程)

對像圖

聚合示例 – 計算機和部件

  • 聚合是關聯的一種特殊情況,表示“包含”層次結構
  • 聚合是父類,組件是子類

聚合示例

繼承示例——細胞分類

  • 繼承是表示“種類”層次結構的關聯的另一個特例
  • 繼承通過引入分類法來簡化分析模型
  • 子類繼承父類的屬性和操作。

繼承示例

類圖 – 圖表工具示例

類圖也可能附有類或關係的註釋。註釋以灰色顯示。

類圖示例

在上面的例子中:

我們可以通過閱讀以下幾點來解釋上述類圖的含義。

  1. 形狀是一個抽像類。它以斜體顯示。
  2. 形狀是一個超類。Circle、Rectangle 和 Polygon 是從 Shape 派生的。換句話說,圓就是形狀。這是一種泛化/繼承關係。
  3. DialogBox 和 DataController 之間存在關聯。
  4. 形狀是窗口的一部分。這是一種聚合關係。形狀可以在沒有窗口的情況下存在。
  5. 點是圓的一部分。這是一種組合關係。沒有圓,點就不能存在。
  6. 窗口依賴於事件。但是,Event 不依賴於 Window。
  7. Circle 的屬性是半徑和中心。這是一個實體類。
  8. Circle 的方法名稱是 area()、circ()、setCenter() 和 setRadius()。
  9. Circle 中的參數 radius 是 float 類型的 in 參數。
  10. Circle 類的方法 area() 返回一個 double 類型的值。
  11. Rectangle 的屬性和方法名是隱藏的。圖中的其他一些類也隱藏了它們的屬性和方法名稱。

類圖示例:訂單系統

類圖示例:訂單系統

類圖示例:GUI

類圖也可能附有類或關係的註釋。

類圖示例:GUI

處理複雜系統——多類圖還是單類圖?

不可避免地,如果您正在對大型系統或大型業務領域進行建模,那麼您必須考慮許多實體。我們應該使用多個還是單個類圖來建模問題?答案是:

  • 與其在單個類圖上對每個實體及其關係進行建模,不如使用多個類圖。
  • 將系統劃分為多個類圖使系統更易於理解,特別是如果每個圖都是系統特定部分的圖形表示。

軟件開發生命週期中類圖的觀點

我們可以在軟件開發生命週期的不同開發階段使用類圖,  並且通常通過在我們前進的過程中逐步在三個不同的視角(詳細程度)中對類圖進行建模:

概念視角:圖表被解釋為描述現實世界中的事物。因此,如果您從概念的角度來看,您將繪製一個表示所研究領域中概念的圖表。這些概念自然會與實現它們的類相關。概念視角被 認為與語言無關

規範視角:這些圖被解釋為描述具有規範和接口但不承諾特定實現的軟件抽像或組件。因此,如果您從規範的角度來看,我們正在 查看軟件的接口,而不是實現。

實施視角:這些圖被解釋為以特定技術和 語言描述軟件實施。因此,如果您從實施的角度來看,我們正在 研究軟件實施

尋找免費的類圖表工具?

Visual Paradigm Online(VP Online)免費版是一款免費的在線繪圖軟件,支持類圖、其他UML圖、ERD工具和組織圖工具。它有一個簡單而強大的編輯器,可讓您快速輕鬆地創建類圖。這個免費的 UML 編輯器沒有廣告,沒有訪問期限,也沒有限制,例如圖表的數量、形狀的數量等。您擁有為個人和非商業目的創建的圖表。

在線類圖工具

在您的桌面上尋找更正式的 UML 建模?

Visual Paradigm Community Edition 於 2004 年推出,旨在  為非商業目的提供免費的 UML 軟件,支持剛開始 UML 建模的用戶,以及需要免費的跨平台 UML 建模軟件供個人使用的用戶,例如就像在學生項目中應用 UML。

視覺範式屏幕

用於各種非商業目的的免費 UML 建模工具。支持 13 個 UML 2.x 圖

支持 13 個 UML 2.x 圖表的免費 UML 工具

我們被全球超過 100 萬台設備採用,並且還在不斷增長。許多人每天都在使用 Visual Paradigm 的付費版來繪製專業的 UML 和 ERD 圖,用於系統和數據庫的設計和分析。

原因 2

IT 專業人士和大型組織的信任

世界各地的許多藍籌組織、IT 公司、顧問、大學、非政府組織和政府單位都採用了 Visual Paradigm(付費版)。下圖顯示了我們的一些付費客戶。

視覺範式客戶

原因 3

高品質——屢獲殊榮

我們不僅受到全球知名企業的信賴,也受到業界的信賴。Visual Paradigm 是多個國際獎項的獲得者。

視覺範式獎

原因4

學術界使用最廣泛的建模平台

學術界使用最廣泛的 UML 工具,已被數千所大學和學院採用。

使用視覺範式的學校

原因 5

大量免費學習資源(由 VP Community Circle 提供支持)

數百個 UML 和 ERD 圖示例和模板

數百個 UML 和 ERD 示例 可導入 Visual Paradigm 進行即時實驗或開始使用您自己的 UML 模型。全部免費。

原因 6

升級到商業版的路徑,以實現廣泛的應用和可能性

輕鬆升級大量附加功能(例如,BPMN 和團隊協作支持)並用於商業用途,起價 為 6 美元/月

Visual Paradigm 中的打包功能

理由 7

活躍的用戶論壇以獲得幫助並交流想法和經驗

在 Visual Paradigm 的活躍用戶論壇中支持、分享和交流您的想法 。

視覺範式論壇

原因 8

跨平台、用戶友好、快速響應的應用程序

Visual Paradigm 可以在 Windows、Linux 和 Mac 等不同平台上運行。其直觀的界面和強大的建模功能使建模變得簡單快捷!

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。