黃博文 譯,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
本書主要目标是讓你學會思考如何将面向對象概念應用于面向對象的系統設計中。曆史上定義面向對象的語言擁有以下特點:封裝(encapsulation)、繼承(inheritance)和多态(polymorphism)。是以,如果設計一門語言時沒有完全實作以上特性,那麼通常我們認為該語言不是完全面向對象的。即使實作了這三點,我也往往會加入組合特性。是以,我認為面向對象的概念如下;
封裝
繼承
多态
組合
本書接下來會詳述這些特性。
從本書第1版開始,我一直在努力解決的問題是這些概念如何直接與目前的設計實踐關聯起來,因為設計實踐始終在變化當中。例如,在面向對象設計中使用繼承總是飽受争議。繼承是否實際上破壞了封裝?(稍後的章節會讨論這一主題。)甚至現在,很多開發人員都試圖盡量避免使用繼承。
我的方式是始終圍繞概念來學習。無論你是否使用繼承,你至少需要了解什麼是繼承,這會保證你的設計決策是有據可依的。正如在介紹中提及的那樣,本書目标讀者是希望學習基本的面向對象概念的總體介紹的人。請記住這一點,本章中我會展現基本的面向對象概念,希望讀者能在做重要的設計決策前打下一個堅實的基礎。本章涵蓋了這些概念的基本知識,随後的章節中的主題也會讨論這些概念的細節。