close

Q: 名詞解釋- encapulation 。

Ans:

什麼是encapulation?

 

encapulation中譯為封裝,為物件導向程式設計的"原則"之一。

讓實作和介面分開,以便讓同一介面但不同的實作物件能以一致的面貌讓外界存取。

或可以說是適當的將資訊隱藏,避免外界不使用。

 

運用encapulation封裝有什麼樣的優點呢?


1.可以避免不必要的資料存取現象發生,

 封裝可以將資料適度隱藏,避免存取到不必要的資料,而造成問題。

2.製作適當的細節封裝可以降低ripple effect(漣波效益),

 意思就是避免日後修改一個問題所帶來的連帶效應過大。


所以說,適當的封裝是日後系統易維護的良藥。


那封裝是怎麼樣的手法呢?(前提:得先去了解class概念唷!)


提供受控制的間接操作 取代 不受控制的直接存取。

舉例說明:

若有一個Person的類別,當中有身高、體重兩個屬性,若不將他們宣告成private

那外部類別可以直接取得並設定如下,試想身高設定成-100是什麼樣的狀況又是否合理

但只要你允許外面存取,就無法保證外界是否會對你的屬性做此類愚蠢的設定。

 

               身高 = -100

 

針對上述該如何處理呢?建議作法如下:

 

        private 身高;

 

        public boolean set身高(int h) 

   {

 

          if(h<0) return false;

 

          else 身高 = h;

 

        }

我們可以藉由將身高封裝,並提供一個外部的設定管道,

然而此管道是可受控制的,如此必可確保身高的設定不會有不合邏輯的情況發生。


參考資料:

 

論物件導向part 3:Encapsulation


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 tingtahou 的頭像
    tingtahou

    TingTa的部落格

    tingtahou 發表在 痞客邦 留言(0) 人氣()