深入理解面向對象
向下:深入理解三大面向對象機制
封裝,隱藏內部實現
繼承,復用現有代碼
多態,改寫對象行為
向上:深刻把握面向對象機制所帶來的抽象意義,理解如何使用這些機制來表達現實世界,掌握什么是“好的面向對象設計”。
如何解決復雜性?
分解:人們面對復雜性有一個常見的做法,即分而治之,將大問題分解為多個小問題,將復雜問題分解為多個簡單問題。
抽象:更高層次來講,人們處理復雜性? 有一個通用的技術,即抽象。由于不能掌握全部的復雜對象,我們選擇忽視它的非本質細節,而去處理泛化和理想化了的對象模型。
?軟件設計的目標
什么是好的軟件設計?軟件設計的金科玉律:復用!
重新認識面向對象
理解隔離變化
從宏觀層面來看,面向對象的構建方式更能適應軟件的變化,能將變化所帶來的影響減為最小
各司其職
從微觀層面來看,面向對象的方式更強調各個類的“責任”
由于需求變化導致的新增類型不應該影響原來類型的實現——是所謂各負其責
對象是什么?
從語言實現層面來看,對象封裝了代碼和數據
從規格層面講,對象是一系列可被使用的公共接口
從概念層面講,對象是某種擁有責任的抽象
面向對象設計原則
1、針對接口編程,而不是針對實現編程
不將變量類型聲明為某個特定的具體類,而是聲明為接口
客戶程序無需獲知對象的具體類型,只需要知道對象的接口
減少系統中各部分的依賴關系,從而實現“高內聚、低耦合”的類型設計方案
?