學習Pattern之前,首先要學會看Class Diagram,以了解Pattern中物件與物件之間的關係是什麼,並且能快速套用Pattern在自己設計的Diagram上。
還記得之前在物件導向基本概念篇所提到的「類別」與「抽象類別」嗎?在Class Diagram中,這兩種類別長的也不太一樣喔!具體的類別會長得像是圖片中最左邊那樣;而抽象類別會是中間的樣子,可以看到抽象類別的標題是斜體字,具體的類別則是一般字體,這點很重要!因為這在類別圖中能夠分辨抽象類別與具體類別的特徵,使讀者在視圖時可以清楚了解,不會搞混!
而介面則是上圖中最右邊的樣子,會發現它比類別多了一個斜體字標示Interface。
三者間可以發現各自擁有三個區塊,最上面的就是它們的名稱,中間的則是屬性欄位,而最下面寫的是各自擁有的方法。各屬性與方法前面都會有個符號,在類別圖中我們稱之為Visibility,總共有四個符號:「+#-~」,依序為「public」、「protected」、「private」及「package」,有這些符號就可以讓開發者在視圖時快速了解各類別的屬性與方法,使類別封裝得更加完整。
繼承與實作在物件導向的概念中非常重要,所以在類別圖中也少不了它們的身影。圖片的左邊工程師類別繼承了員工類別,它們之間的關係是以實線與空心的箭頭表示;另外圖片右邊是小孩類別實作了行為介面,實作是用虛線和空心箭頭表示。
依賴與關連的差別在於一個是「有」,另一個是「使用」,關聯是用實線箭頭來表示物件之間的關係,圖中的車子類別有人類的屬性,也就是「車子有車主的變數」,所以箭頭指向人類類別(被擁有者);而依賴是用虛線箭頭表示,主廚類別的方法中有用到食物的參數,也就是「主廚使用食物來做菜」,所以箭頭指向食物類別(被使用者)。
聚合是用來表示物件之間「比較弱的」擁有關係,就像客廳可以有沙發、有電視,但沙發和電視並不是客廳的一部份,即使沒有沙發和電視,它們都可以獨立存在。表示方式為空心菱形與實線。
而組合則是用來表示物件之間「比較強的」擁有關係,好比說機器人有頭、有手、有腳,其物件都是屬於機器人的一部份,如果沒有它們組成,機器人就不存在了。表示方式為實心菱形與實線。
以上大概就是類別圖經常出現的元素,以及各元素所表達的意義,其實還有很多細節沒有說明完整,有興趣的可以找找網路上更複雜的範例,而這篇的目的是至少可以讓大家認識類別圖的物件,在看到系統分析師所畫的Class Diagram的時候不會太錯愕。
另外推薦大家使用免費的繪圖工具:draw.io,我自己本身繪圖是用網頁版的,但是他也有應用程式版本。在編輯完後會自動儲存到指定的資料夾或雲端硬碟上,最重要的是它有工程師必備的暗黑主題!至於好不好用的話就見仁見智,提供網址給大家:https://app.diagrams.net/
除此之外,也歡迎大家走走逛逛關於我們團隊夥伴的文章
juck30808 - Python - 數位行銷分析與 Youtube API 教學
SiQing47 - 前端?後端?你早晚都要全端的,何不從現在開始?