物件與類別
文章推薦指數: 80 %
認識物件導向. 物件導向的觀念 在物件導向程式語言的環境裡,程式設計師的焦點放在每一個物件上,設計時只需設定每個物件在發生特定事件時執行特定工作,並不需要像 ...
認識物件導向
物件導向的觀念
在物件導向程式語言的環境裡,程式設計師的焦點放在每一個物件上,設計時只
需設定每個物件在發生特定事件時執行特定工作,並不需要像以前一樣規畫整個
程式的執行流程,而且其他程式需要時,也可以自由的複製物件。
物件導向語言
事實上遠在1967年的Simula-67就是屬於物件導向的語言,但當時根本沒有人注
意,直到70年代中期Smalltalk語言問世後,物件導向語言才開始引起人們的興
趣。
80年代C++的出現,更是炒熱了物件導向語言的市場,往後新上市的程式
語言都免不了要遵循這個趨勢,例如微軟的VisualBasic
及VisualC++
,寶藍(
Borland)的Delphi(Object
Pascal)以及現在最熱門的爪哇(JAVA)語言...等都
具有物件導向的特性。
物件與事件
真實世界中的「物件」,其實就是我們習以為常的「東西」。
‧物件與類別
類別是物件相同特性和行為訊息的集合,例如「人」是一種類別,而你、我、
小明、大華...等都是屬於「人」這個類別的一個物件。
‧物件具有屬性
每一個物件都有許多屬性,例如一個「人」便具有「髮色」、「身高」、「體
重」、「性別」...等不同的屬性。
‧事件和事件程序
每一個物件都可以對一個被稱為事件(Event)的動作進行辨識和回應,物件
對事件的回應方法稱為事件程序。
例如,當我們「打」「小明」時「小明」會
「喊痛」,「打」便是作用在物件「小明」上的事件,而「喊痛」就是物件「
小明」所回應的事件程序。
物件導向的特性
在物件導向程式設計的環境中,一個圖示、一個按鈕或文字欄位…等都是物件,
每個物件都包含資料以及相關的指令。
當程式執行時,物件便等待事件發生,然
後再採取相關行動(即事件程序),這稱為事件驅動(Event-Driven),也是物
件導向程式與傳統程式之間的最大差別。
物件導向語言還具有以下特性:
‧繼承性
一個物件擁有類別中部份或所有的特性,稱為繼承性(Inheritance)。
例如,
不論工人、農人、商人、運動員與設計師...等都是「人」,即使工作崗位不同
但仍都一樣具有「身高」、「體重」、「性別」...等屬性。
在物件導向程式設
計的環境中,程式設計師不須重覆撰寫經由繼承而來的設定指令,藉此節省開
發時間。
‧包裝性
當我們去餐廳吃飯時只要告訴老闆「我要吃排骨飯」,至於這塊排骨是怎樣選
購、切割、浸料、沾粉、油炸...等烹飪流程我們都不必理會。
烹飪的複雜性被
隱藏起來,使用者只要注意基本的操作如點餐的動作即可。
同樣的,物件導向
將事件程序及屬性的程式碼包裝在一起,使程式設計師不須為每一個細節煩惱
,這樣的特性便稱為包裝性(Encapsulation)。
‧多型性
「小華」或「小明」都一樣可以進行「掃地」的工作,只要我們告訴他「去掃
地」即可。
同樣的,程式設計師可用同樣的敘述來執行不同物件中相同的方法
,這個特性稱為物件導向程式設計的多型性(Polymorphism)。
‧抽象性
一般高階語言利用函數來處理相關程序,物件導向程式設計則將變數抽象化,
讓使用者可以更容易使用,這樣的特性稱為抽象性(Abstraction)。
例如以「
視窗.開啟」代表開啟視窗的動作,而「視窗.關閉」則表示關閉視窗的動作。
延伸文章資訊
- 1什麼是物件導向程式設計(Object-oriented programming)
還有其他哪些程式設計典範? · 語言導向程式設計(Language-Oriented programming) · 元程式設計(Metaprogramming) · 事件驅動程式設計(Event...
- 2讀書筆記- UML 物件導向系統分析與設計(Part 2) 事件與功能
讀書筆記- UML 物件導向系統分析與設計(Part 2) 事件與功能. ... 反應時間(Response Time):觸發事件執行,花費的時間; 使用性(Usability): ...
- 3物件與類別
認識物件導向. 物件導向的觀念 在物件導向程式語言的環境裡,程式設計師的焦點放在每一個物件上,設計時只需設定每個物件在發生特定事件時執行特定工作,並不需要像 ...
- 4編寫程式的基本技巧與認識
然而,欲設計這些使用者習以為常的介面,必須先具備「物件導向(Object oriented)」概念,進而體會帶動程式運作之「事件驅動(Event driven)」觀念。 § 物件導向(Objec...
- 5物件導向程式設計
物件導向程式設計 · 首頁(current) · 課程連結 · 課程影音專區 · 4/22 final常數宣告 · 4/29 陣列 · 6/3 事件處理機制(1) · 6/3 事件處理機制(2)