3月 03, 2011

物件導向的特性 (OOP)

如果人家問 OOP 的三大特性,那麼就寫:

1. 資料抽像化 (Data Abstraction)
將要處理的資料及作用在這些資料上的操作方法,封裝在一個語法單元中,例如像:類別(class),以達到資訊隱藏的功能。

2. 繼承(inheritance)
一個新的類別,可以定義為一個現有類別的子類別,這個現有類別稱為父類別,而子類別可以繼承父類別的資料與方法。

使用繼承的好處,父類別的程式碼可以在子類別中重複使用,可以節省開發時間。因為父類別為子類別的一般化,而子類別則是父類別的特殊化。

3. 多型 (動態繫結)
同一個函數呼叫,在執行時期可以繫結到不同的函數定義。

以動態繫結的方式來決定「程序呼叫」與「程序定義」之間的繫結。對於類別中的方法呼叫,與其方法的定義為動態繫結,是在程式執行時才能真正決定要叫用的方法為何。

在 c++ 中可透過「虛擬函數(virtual function)」來達到動態繫結的功能,
父類別的 virtual function 在子類別中重新定義後,則在呼叫虛擬函數時
會依照訊號的接收個體為何,決定執行哪個類別中定義的虛擬函數。
note: 透過繼承與動態繫結,可用來實現物件導向中的多型概念。
4. 抽象資料型態 (ADT,Abstract Data Type)
是使用資料抽象化的方法建立的自訂資料型態

5. 封裝
主要是將物件的內外部份分開,其他物件只能藉由外部界面,取得資料,
物件內部的細節資料則隱藏起來,其他物件無法瞭解此物件的內部細節。

6. 覆載 (Overloading) 屬於靜態繫結,編譯時就會知道
函式覆載是指,相同的函式名稱,但能有不同的函式定義。不過這同名函式,必須具有不同的參數個數,編譯程式才可以此為區分,決定哪一個 overloaded function 才是真正要執行的函數。

7. 覆寫 (Overriding)
子類別將由父類別繼承來的屬性變數、資料結構或方法重新定義的動作。

沒有留言:

張貼留言