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;
}
我們可以藉由將身高封裝,並提供一個外部的設定管道,
然而此管道是可受控制的,如此必可確保身高的設定不會有不合邏輯的情況發生。
參考資料: