【深入淺出物件導向分析與設計】第五章、良好的設計 = 彈性的軟體

紀錄 O'REILLY 深入淺出物件導向分析與設計 (Head First Object-Oriented Analysis & Design) 的讀後心得,並將範例轉為 C#.Net Code。

延續第一章 - Rick 吉他庫存管理

此章節將延續第一章的案例,來新增擴展功能,所以底下先來回顧一下「Rick 吉他庫存管理應用程式」的類別圖。

UML三種常見的依賴關係:

  1. Association (關聯):依賴度【弱】,交情【泛泛之交】,Key word【knows a...】,舉例【汽車與駕駛】。
  2. Aggregation (聚合):依賴度【中】,交情【有共同生活圈】,Key word【has a...】,舉例【汽車與輪胎】。
  3. Composition (組合):依賴度【強】,交情【生死與共】,Key word【owns a...】,舉例【汽車與引擎】。

改變無可避免

新增需求:「庫存增加另一種樂器曼陀林(mandolin)」。

當類別圖中的類別名稱為 斜體  時,表示該類別為 抽象類別,目的是不希望讓使用者建立該類別的實例,而是只作為其子類別的共同基礎。

檢視軟體是否設計良好

再新增需求:「庫存需要再增加四種樂器低音吉他(bass guitar)、班卓琴(banjo)、dobro吉他、小提琴(Fiddle)」。

目前的設計若庫存要新增樂器,實在不是一件容易的事,這樣實在太沒有彈性了!

彈性的軟體