iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
0
自我挑戰組

來讀設計模式:Junior developer 跟大家一起練功系列 第 4

DAY4: 類別間的關係

在簡單介紹完物件導向之後,我們在簡單地介紹類別間的關係。這對往後程式架構設計以及理解即將提到的設計模式有很大的幫助。

UML 圖

What the heck is UML?

UML 是一種用來說明程式碼中物件之間的關係的圖形語言。 UML 可以用於分析、用於設計或用於部署。在這裡,我們主要將我們的重心放在設計階段的類別圖 —— 主要在詳細描述類別之間的關係。

透過類別圖來理解

UML 如何形容類別

舉一個簡單例子,現在有個類別 Dog,那麼在UML 圖中,就會顯示如下圖。

我們可以看到他有三個資訊:

  • 類別名稱
  • 類別中的資料元素
  • 類別的 method

在這個例子,類別名稱是 Dog、資料元素有 agegender、method 有 woof()(汪汪叫)。

(沒什麼原因,只是想再放一次這隻狗)

類別的關係

類別圖描述的關係有可能是以下幾種類型:

  • 某類別是「一種」另外一個類別:is-a 關係
    • 例如 DAY3 提到的,研究生 GraduateStudent 是一種 (is a) 學生 Student
  • 兩個類別之間存在關聯時:
    • 一個類別包含另一種類別:has-a 關係
    • 一個類別使用另一種類別:use-a 關係
    • 一個類別建立另一種類別

其中的包含關係,還可分為兩種

  • 被包含者是包含者的一部分:組合 (composition)
  • 一種集合,集合中的東西可以獨立存在:聚合 (aggregation)

舉例來說,前者就像是刮鬍刀與刮鬍刀刀片,刀片本身不能自己存在;後者則像是浴室與盥洗用具(刮鬍刀 is a 盥洗用具),盥洗用具可以自己存在。

如何用 UML 紀錄類別的關係

接續著上面提到的,UML 如何記錄這些關係呢?關係如下圖:

  • 繼承:B 是 A 的子類別

  • 組合:A 是由 B 組成的

  • 聚合:B 是 A 的一部分

  • 相依:A 使用 B

舉幾個例子

這裡舉出兩個例子,各位可以自己想想該怎麼解讀他們:

  • 第一個例子

  • 第二個例子

接下來

接下來總算要進入我們的重頭戲,設計模式的簡介。我們下篇見~~~

晚了兩分鐘 QQ


上一篇
DAY3: 從物件導向範型談起2
下一篇
DAY5: 簡單介紹設計模式
系列文
來讀設計模式:Junior developer 跟大家一起練功22

尚未有邦友留言

立即登入留言