介紹

類圖是統一建模語言(UML)中的一項基本工具,用於通過建模類、屬性和關係來表示系統的靜態結構。所提供的圖表展示了實習管理系統,涵蓋了學生、公司和表格等實體。本指南將逐步解析該圖表,解釋關鍵概念,並提供多個類圖範例。

第一部分:理解實習系統類圖

圖表概覽Understanding the Internship System Class Diagram

該圖表代表一個實習管理系統,包含以下關鍵實體:

  • 使用者(抽象類):學生和管理員的父類。
  • 學生:參與實習並提供反饋的使用者。
  • 管理員:具有特定權限的使用者。
  • 公司:舉辦實習並擁有主管的實體。
  • 實習生:代表學生與公司之間的實習參與關係。
  • 反饋:記錄學生對公司的反饋。
  • 表格:追蹤與實習相關的表格(例如:保險、申請、確認)。
  • 地點:儲存公司的地址資訊。
  • 時長:定義實習時間表(例如:部分或完整)。

圖表中的關係

  • 繼承: 學生管理員 繼承自 使用者 (以空心三角箭頭表示)。
  • 組成:
    • 一個 公司擁有一個 地點 (以實心菱形箭頭表示)。
    • 一個 表單實體擁有一個 期間 (以實心菱形箭頭表示)。
  • 關聯:
    • 學生在一個 公司(透過 公司主管).
    • 學生擁有多個 實習生記錄(一對多)。
    • 學生提供 反饋 關於一個 公司.
    • 公司 填寫許多 表格 (一對多)。
  • 多重性:
    • 1..*:一個或多個(例如,一家公司會填寫一個或多個表格)。
    • 0..*:零個或多個(例如,一名學生可以有零個或多個實習)。

第二部分:類圖的關鍵概念

核心組件

  1. :
    • 以一個三部分的矩形表示:類名、屬性與方法(不過在較簡單的圖表中,方法通常會被省略)。
    • 範例:學生 具有如下屬性:姓名, 性別,以及電子郵件.
  2. 屬性:
    • 類中的變數或資料,通常具有類型(例如,名稱:字串).
    • 可見性:+(公開),(私有),#(保護)。
    • 範例:-Id:整數Users類別中。
  3. 關係:
    • 繼承:子類別繼承自父類別(例如,學生繼承自Users).
    • 關聯:類別之間的一般關係(例如,學生公司).
    • 組成:一種強烈的「整體-部分」關係,其中部分無法在沒有整體的情況下存在(例如,公司地點).
    • 聚合: 一種較弱的「整體-部分」關係,其中部分可以獨立存在(此圖中未明確顯示,但在UML中很常見)。
  4. 多重性:
    • 指定一個類別的實例可以與另一個類別的實例關聯的數量。
    • 範例:1..*表示「一個或以上」(一家公司有一個或以上的形式)。
  5. 抽象類別:
    • 無法直接實例化的類別(例如,使用者是抽象的,如其斜體名稱所示)。

關鍵原則

  • 抽象: 聚焦於基本細節,忽略實作上的細節。
  • 封裝: 使用可見性標記隱藏內部資料(例如,用於私有屬性)。
  • 模組化: 將系統分解為可管理且可重用的類別。
  • 清晰度: 確保圖表對利害關係人而言容易理解。

第三部分:建立有效類別圖的指南

  1. 定義範圍:
    • 在繪製圖表之前,先識別系統的關鍵實體及其關係。
    • 範例:針對實習系統,應著重於學生、公司和實習。
  2. 使用一致的命名:
    • 為類別和屬性使用清晰且有意義的名稱(例如,學生而非S).
    • 遵循命名慣例(例如,類別使用單數名詞:公司,而非公司們).
  3. 明確指定可見性:
    • 指出屬性是公開(+)、私有()或受保護(#).
  4. 限制複雜度:
    • 透過將大型系統拆分成較小的圖表來避免過度擁擠。
    • 範例:如有需要,將使用者管理與表單管理分開。
  5. 驗證關係:
    • 確保關係反映現實世界的邏輯(例如,一名學生一次只能在一家公司實習)。
  6. 使用多重性:
    • 明確定義關係中涉及的實例數量(例如,1..*表示一個或多個)。

範例 1:基本的學生與公司關係

此範例著重於學生公司.

  • 說明:
    • 學生公司透過關聯(工作於).
    • 一名學生可在一家或多家公司工作(1..*).

範例 2:使用使用者加入繼承

此範例包含使用者抽象類別及其子類別學生管理員.

  • 說明:
    • 使用者 是一個抽象類別(以 抽象).
    • 學生管理員 繼承自 使用者 使用 <|–.

範例 3:具有位置的公司(組合)

此範例說明 公司位置.

PlantUML Diagram

  • 說明:
    • 公司 擁有 位置(組合關係以 *–>).
    • 公司必須恰好擁有一個位置(“1”).

範例 4:實習與反饋

此範例模擬了實習生反饋實體及其與學生公司.

說明:

  • 一名學生可以擁有零個或更多個實習生記錄(0..*).
  • 一名公司主機可擁有零個或更多個實習生記錄。
  • 一名學生會對一家公司.

範例 5:形式與持續時間

此範例包含形式實體及其持續時間以及其子類型部分完整.

  • 說明:
    • 形式具有持續時間(組合)。
    • 持續時間是以下類別的父類別部分完整(繼承)。

範例 6:完整的實習系統

此圖將所有實體整合為一個完整的圖示。

  • 說明:
    • 此圖呈現原始內容,完整捕捉所有關係與實體。
    • 它使用繼承、組合以及具有正確多重性的關聯。

第五部分:類圖的實用技巧

  1. 從簡單開始:
    • 從核心實體和關係開始,然後逐步迭代添加細節。
    • 範例:從學生以及公司,然後加入實習生以及反饋.
  2. 使用工具進行可視化:
    • 以文字為基礎的方法允許快速編輯和分享;將程式碼貼入相容的檢視器中即可看到圖示。
  3. 測試完整性:
    • 確保包含所有必要的實體和關係。
    • 範例:確認表單連結至公司以及期間.
  4. 記錄假設:
    • 記下任何假設(例如:「學生一次只能在一家公司實習」)。
  5. 協作:
    • 與團隊成員分享文字代碼以獲取反饋並進行迭代。

結論

類圖是建模系統結構的強大工具,例如圖中所示的實習管理系統。透過理解繼承、組合和多重性等關鍵概念,並遵循清晰與簡潔的指南,您可以創建有效的圖表。所提供的範例展示了如何使用文字化方法來表示系統的各個方面,從基本關係到完整的系統模型。經過練習,您可以運用這些技術高效地設計和溝通複雜的系統。

參考文獻