物件導向設計(Object Oriented Design) - 封裝(Encapsulation)

  • 4169
  • 0
  • 2011-04-21

摘要:物件導向設計(Object Oriented Design) - 封裝(Encapsulation)

封裝的定義,Google一下其實還滿多資訊的,東看看西看看,
總結一下自己對物件導向設計-封裝(Encapsulation)的定義。

定義(From MSDN):
方法、屬性和事件,以及所有其他內部變數和常數 (欄位),都稱為類別的成員。將成員群組成類別不僅是符合邏輯的,還可以讓您隱藏不想讓其他程式碼存取的資料和函式。這個原則稱為「封裝」(Encapsulation)。
當您瀏覽 .NET Framework 類別庫時,您只會看到這些類別的公用成員。
每個類別也可能有私用成員,這些私用成員由該類別或與其相關的類別在內部使用,但不可供應用程式使用。
例如:我們在使用ClassA時,就只會看到MemberA ,FunctionA
public class ClassA
    {
        public string MemberA { get; set; }
        private string MemberB;

        public string FunctionA() { return ""; }
        private string FunctionB() { return ""; }
    }

 

舉個實際的例子:
請看小弟寫的c# 自訂項目機率(獻醜了XD)。
這個類別就是將算機率的部分封裝在類別內部,
使用者只需要自訂每個項目的機率,就會依照所設定的機率來產生結果。

 

結論:一個類別如果封裝的好,就應該會方便使用,而不需要知道類別裡面如何運作。

 

感覺寫的好心虛XD
要寫的好真的不容易,加油~GOGO
如果觀念有不對或是不足的地方,請不要吝嗇您的指正~Thx

 

參考資料:
http://msdn.microsoft.com/zh-tw/library/ey4ke239(VS.90).aspx
http://www.dotblogs.com.tw/hatelove/archive/2010/10/15/object-oriented.aspx