Chapter 9 物件導向的程式設計 - Ian-Liu-1990/Systems-Analysis-Design GitHub Wiki
I. 物件導向技術與特徵 - 抽象化
1. 物件
-
定義 : 具有相同資料結構及行為的物件集合,經抽象化,使類別成為物件的一種定義(Definition),樣板(Tempalte)或模型(Mold)
-
類別與物件關係 : 類別使用相同屬性和操作來描述一個或多個物件,類別中任一物件稱為該類別的實例(Instance),同一類別之物件必須具有相同資訊結構即屬性和行為
II. 物件導向技術與特徵 - 封裝
-
定義 : 將物件的屬性和方法包裝在一起,隱藏物件內部資訊和方法細節,僅提供使用者物件介面如何被呼叫與使用。
- 目的: 防止外界任意存取或更改物件內部屬性狀態及實作細節,使物件更具獨立性重要程式碼結構更動,不會影響操作介面容易理解與維護。
- 定義 : 將內部資訊或操作有限制的開放,使用者只可透過開放的權限存取內部資訊
III. 物件導向技術與特徵 - 繼承(Inheritance)
-
定義 : 被繼承類別與繼承類別之間有一種"Is a"的關係,"繼承者"繼承"被繼承者"的屬性和方法,同時還可以自行定義新屬性或重新實作方法是重組再利用的一種技術
- 目的 : 減少開發時間,減少重複描述程式,減少程式碼錯誤,提高品質,達到軟體再利用(Resue)
-
一般化(Generalization) : 萃取相關下層類別的相同屬性和方法,將其歸類(納)為一個上層類別的一過程
-
特殊化(Specialization) : 可識別一類別比另一類更具專門性的原則,由上層分解出下層類別的一過程
IV. 物件導向技術與特徵 - 多型(Polymorphism)與負/過載(Overload)
1. 多型 - 不同物件間
-
定義 : 以抽象化類別或方法為基礎(不提供具體實作方法)使用同一個操作介面,以操作不同的物件方法,繼承父類別的不同子類別間,使用相同名稱的方法,以不同的方式完成商業需求,呼叫此方法的物件不需要知道接受訊息的物件所屬類別,程式執行期間透過動態連結方式再決定接收訊息的物件並執行該方法
- 設計模式 : 觀察者模式即用一抽象化類別為指標,指向繼承他類別的物件,執行期間透過動態連結決定執行方法的物件
-
定義 : 在父類別與子類別的繼承關係中,子類別延用父類別的方法,回傳型態,參數內容(數目,型別),與方法名稱需一致,可改寫父類別該方法的實現邏輯,但不能限縮使用權限!!
- 多型與覆寫目的: 以相同介面來處理不同物件,或以相同的物件但不同的操作方式來簡化系統開發複雜度並增加擴充彈性
- 回傳型態,參數內容(數目,型別)不一致,但方法名稱相同 : 視為子類別自定義的新方法,透過動態連結方式,由引數決定使用父還是子的方法