[物件導向]基礎篇:interface, abstract, 意圖導向設計 (投影片分享)

[物件導向]基礎篇:interface, abstract, 意圖導向設計 (投影片分享)

前言

上一篇介紹了物件導向的三特性:封裝、繼承與多型,接著就是要來介紹物件導向中抽象的部份。分別為 abstract 以及 interface,兩者有何異同,什麼情況下使用,有什麼好處,什麼樣的情況一定得用其中某一種,舉例說明等等…

另外一個與物件導向比較沒有這麼直接相關的部份,是意圖導向設計(intention-driven design),也就是 top-down 的設計方式。

雖說與物件導向沒這麼直接相關,但這卻是設計上的一大重點。可以幫助我們在設計上關注點分離,不會因為物件的實作細節而分心。可以讓程式碼撰寫過程中,更專注於商業邏輯與流程,讓方法行為的內容抽象層級更為一致,搭配介面導向設計(interface-driven design),更可以達到團隊分工並行開發,以及測試驅動開發(test-driven development)的基底。

 

投影片

 

作業題目

題目程式下載:Session-2-Homework template.zip

題目一內容說明:

  1. Code review 流程只有一份。
  2. 思考該怎麼運用 abstract, interface來設計使用場景與物件的互動
  3. 每個 manager 子類,都應該只有自己與眾不同的部份

題目二內容說明:

  1. 請參考 CPR 流程,使用 top-down 的設計方式,設計使用場景

作業整理與回顧

 

結論

物件導向的基礎,基本上就是由封裝、繼承、多型三大特性來組合運用,搭配 abstract 與 interface 兩種抽象,來達到更多的重用性與抽換彈性,接著滿足 SOLID 六項原則,最終達到「高內聚、低耦合」的目的。

一個系統設計的抽象程度,觀察其 interface 的設計。一個系統設計的重用程度,則觀察其 abstract 的設計。

物件導向的基本特性、原則、設計方向與概念了解之後,才有足夠的內力可以發揮 design patterns 招式上的威力。

希望這一系列的內容,可以協助初學者建立物件導向概念的基底。

 

參考

  1. 91之ASP.NET由淺入深 不負責講座 Day15 – Abstract與Interface
  2. [ASP.NET]重構之路系列v2 – DRY & Top-Down思考方式

blog 與課程更新內容,請前往新站位置:http://tdd.best/