![]() |
![]() |
![]() 在物件導向程式語言的環境裡,程式設計師的焦點放在每一個物件上,設計時只 需設定每個物件在發生特定事件時執行特定工作,並不需要像以前一樣規畫整個 程式的執行流程,而且其他程式需要時,也可以自由的複製物件。 ![]() 事實上遠在 1967 年的 Simula-67 就是屬於物件導向的語言,但當時根本沒有人注 意,直到 70 年代中期 Smalltalk 語言問世後,物件導向語言才開始引起人們的興 趣。80 年代 C++ 的出現,更是炒熱了物件導向語言的市場,往後新上市的程式 語言都免不了要遵循這個趨勢,例如微軟的 Visual Basic 及 Visual C++ ,寶藍( Borland)的 Delphi(Object Pascal)以及現在最熱門的爪哇(JAVA)語言...等都 具有物件導向的特性。 ![]() 真實世界中的「物件」,其實就是我們習以為常的「東西」。 •物件與類別 類別是物件相同特性和行為訊息的集合,例如「人」是一種類別,而你、我、 小明、大華...等都是屬於「人」這個類別的一個物件。 |
•物件具有屬性 每一個物件都有許多屬性,例如一個「人」便具有「髮色」、「身高」、「體 重」、「性別」...等不同的屬性。 |
•事件和事件程序 每一個物件都可以對一個被稱為事件(Event)的動作進行辨識和回應,物件 對事件的回應方法稱為事件程序。例如,當我們「打」「小明」時「小明」會 「喊痛」,「打」便是作用在物件「小明」上的事件,而「喊痛」就是物件「 小明」所回應的事件程序。 ![]() 在物件導向程式設計的環境中,一個圖示、一個按鈕或文字欄位…等都是物件, 每個物件都包含資料以及相關的指令。當程式執行時,物件便等待事件發生,然 後再採取相關行動(即事件程序),這稱為事件驅動(Event-Driven),也是物 件導向程式與傳統程式之間的最大差別。物件導向語言還具有以下特性: •繼承性 一個物件擁有類別中部份或所有的特性,稱為繼承性(Inheritance)。例如, 不論工人、農人、商人、運動員與設計師...等都是「人」,即使工作崗位不同 但仍都一樣具有「身高」、「體重」、「性別」...等屬性。在物件導向程式設 計的環境中,程式設計師不須重覆撰寫經由繼承而來的設定指令,藉此節省開 發時間。 •包裝性 當我們去餐廳吃飯時只要告訴老闆「我要吃排骨飯」,至於這塊排骨是怎樣選 購、切割、浸料、沾粉、油炸...等烹飪流程我們都不必理會。烹飪的複雜性被 隱藏起來,使用者只要注意基本的操作如點餐的動作即可。同樣的,物件導向 將事件程序及屬性的程式碼包裝在一起,使程式設計師不須為每一個細節煩惱 ,這樣的特性便稱為包裝性(Encapsulation)。 •多型性 「小華」或「小明」都一樣可以進行「掃地」的工作,只要我們告訴他「去掃 地」即可。同樣的,程式設計師可用同樣的敘述來執行不同物件中相同的方法 ,這個特性稱為物件導向程式設計的多型性(Polymorphism)。 •抽象性 一般高階語言利用函數來處理相關程序,物件導向程式設計則將變數抽象化, 讓使用者可以更容易使用,這樣的特性稱為抽象性(Abstraction)。例如以「 視窗.開啟」代表開啟視窗的動作,而「視窗.關閉」則表示關閉視窗的動作。 |
![]() |