物件導向的特性
今天要談的是物件導向的幾個基本性質以及衍生出來的特性。 筆者相信,即便是寫了一年以上的程式,不懂物件導向的人也還是很多,光從學校的教科書來看,似乎也不是那麼容易了解,因為物件導向這件事是很抽象的東西,就像不懂畫的人在看畢卡索的畫一樣,只看到一堆顏色和線條,但根本看不出畢卡索要表達的是什麼。 物件導向的三個基本性質是: 1.封裝(encapsulation) 物件 將其本身的資料以及行為 (behaviors) 包裝在物件內部 ,外界除了透過物件所開放的成員 (ex: 屬性,方法,事件等) 使用物件外,不需知道物件內部的各種實作細節。 2.繼承(inheritances) 子物件透過繼承的方式,可以 複製父物件所有開放 (透過存取修飾子設定) 的功能 ,外界在存取子物件時也可以得到父物件的所有開放的功能。而子物件本身也可以存取到父物件所開放的功能,或是進一步改變父物件的行為。 3.多型(polymorphism) 相同性質的物件並同一個成員的行為,會依物件不同而有所不同 ,這個性質經常出現在介面實作以及抽象類別的覆寫上,例如一個 Car 物件,定義有一個 getEngineProperties() 方法來取得引擎資訊,但 2000 年的車子和 2011 年的車子引擎資訊可能略有不同,而不同車子的引擎也未必相同,所以這些 Car 的子類別都會覆寫 Start() 方法,並且在用戶端存取不同的 Car 物件的 getEngineProperties() 方法時,會得到不同的結果。 (參考自維基百科 http://en.wikipedia.org/wiki/Object-oriented_programming ) 而這幾年來物件導向界的 Design Pattern 愈來愈流行,所以又會加上下列幾個原則,其中有五項是著名的 SOLID 原則: 1. 單一職責原則 (SRP, Single Responsibility Principle) 這是物件導向中最常用的,每個物件的成員原則上最好只負責一件事,不要給予太多的責任,否則在除錯上會有很大的問題,若需要整合時,再使用一個成員來整合這些單一職責的成員即可。這樣的原則有助於成員的單純,在測試與除錯上也會比較簡單快速。 2. 最少知識原則 (PLK, Principle of ...