1. 程式人生 > >代碼簡介之道

代碼簡介之道

6.2 c中 面向過程 理想 現在 方法 3.2 實現類 新的

第六章 對象和數據結構

6.1 數據抽象

數據抽象的目的在於不暴露對象的內部數據細節.
只需要知道接口在做什麽(功能).

6.2數據, 對象的反對稱性

即面向過程(數據), 面向對象(對象)的代碼的區別.

  • 面向過程可以方便的添加方法
    -> 難以添加新的數據結構, 因為需要修改所有函數
  • 面向對象的代碼可以再已有的方法基礎上增加新的對象
    -> 難以添加新的方法, 因為需要修改所有實現的類.

總結:
需要持續添加新的方法用過程式
需要持續添加新的類用面向對象

6.3 得墨忒爾律

類C中的方法f只能調用以下對象的方法:

  1. C
  2. f創建的對象
  3. f的參數對象
  4. C的實體變量持有的對象

6.3.1火車失事

類C中:
A a= x.getA()
B b = a.getB()
調用者並不能在當前類C的環境中明白a.getB()在幹什麽事情(理想情況getB()應該出現在對象a的代碼範圍之中).
解決方案一:
A.B 采用過程式代碼.
但會導致混雜

6.3.2 混雜

過程式代碼與對象式代碼混合
導致既難以添加方法, 又難以擴展實現類.

正確的解決方案:

隱藏結構

把getA().getB() 包到一個對象裏:
B b = x.getB()

代碼簡介之道