物件有其屬性與行為(attribute & behavior),屬性為描述此物件特徵之資訊,行為為物件所能進行之活動,物件導向的意義在於以物件為基礎給予分類,以物件模式來進行程式的開發,物件具有演化與衍生,這種表徵對於程式的再利用(reuse)與物種變形衍生性有很大的影響(繼承性),另外藉由衍生性不同物種相同分類的物件再不同層級下能給予分類定義(物種名稱)又能達到型別轉換(多型),至於物種屬性表徵藉由行為模式來探討(例如藉由生物的覓食來了解其為肉食性或是草食性),也就是封裝(對於資料的保密性角度來說是重點)。

物件導向的優點有:
1.更接近人類思維方式 

2.程式的重複使用 
繼承是類別間之關係,在此關係中某類別之資料結構與行為可供其關係中之類別分享。繼承者稱為子類別(Subclass),被繼承者稱為父類別(Superclass)。 
子類別將由父類別繼承來的屬性(變數、資料結構)或方法(行為)重新定義的動作稱為覆寫(overriding)。 
繼承:所謂繼承(Inheritance),就是子類別藉由繼承父類別的方式,取得父類別所定義的屬性及方法。通常,父類別會定義通用的屬性及方法,而子類別則延伸父類別定義特定的屬性及方法,以解決特定的問題。 
程式再用:物件、類別可以重複的使用,不用再撰寫新的程式。 
降低風險:程式可重複使用,減少撰寫程式錯誤的風險。 
模組化:可將系統細分然後分配給不同團隊來進行工作。 
低成本:較為複雜的資訊系統可以藉由「再用」較簡單的資訊系統模組,而降低開發成本。 

3.程式易維護 
物件中的資料必須透過物件的方法取用,只要物件的方法對存取作控制,外界的物件便無法取用內部的資料,而達成物件保護的目的。封裝之特性使物件導向的系統較容易維護。 
封裝:所謂封裝(Encapsulation),就是把功能與資料包裝起來成為一個物件,並定義物件的介面。讓外界的程式,透過物件所提供的介面,來與這個物件溝通。外界的使用者,無須知道,物件內部如何執行他的作業。只需要知道,如何使用物件的介面,來完成自己的工作即可。所以,設計物件的開發者,日後要更新物件的程式時,只要維持物件的介面不變,便可以確保,使用這物件的外部程式,不需要改寫,一樣可以執行。而外界程式的開發者,只要遵循不直接存取物件內部的功能及資料,僅透過介面來使用物件的規則,便可以確保程式執行無誤。 

4.程式易擴展 
多型:Polymorphism意指多種型式,簡稱多型,指的是一個方法可以有許多型式,也就是,相同的方法名稱,定義以不同的實作(implementation)。 
多型的目的是希望簡化系統發展的複雜性並增加其彈性。

使用物件導向的方式來開發程式,最主要的關鍵,在於程式設計觀念的改變。之前,我們使用函式來開發留言版的時候,我們著重在於找出留言版應該具有的功能,然後,按照功能來撰寫對應的函式。外界的網頁程式,把資料餵給這些功能,來完成它的工作。使用物件導向程式設計時,我們必須把程式所企圖解決的問題,看做是一個獨立的個體。在這個個體中,包含了它應該處理的資料,以及處理這些資料的功能。這些功能是為了處理這些資料所產生的。所以,在撰寫留言版的程式時,我們要把留言版當作是一個自給自足的個體。把程式所要解決的問題,定義成為個別的個體,這個過程稱之為抽象化(Abstraction)。

當我們的腦子裡,有了這個個體所需要的資料以及功能後,我們就可以專注於定義這個個體的類別。把個體的資料,定義成類別的屬性;把個體的功能,定義成類別的方法。在定義類別時,先別管外界的程式如何運作,全心全力專注於如何按照這個個體的需求,寫好這個類別。類別定義完之後,外界的程式,便可藉由物件變數,來使用這個我們定義的類別(使用者定義的資料型態)。物件導向程式設計,名稱上雖然是物件,但是,實際上,程式設計師大部分的心力,在於找出問題中的個體,定義這個個體的類別。使用這類別的程式部分,反而花的時間不多。

參考資料
語言學習機訂購網站:http://digiwis.shop.conn.tw/list.html?member=af000017132
arrow
arrow
    全站熱搜

    王嘉鴻 發表在 痞客邦 留言(0) 人氣()


    留言列表 留言列表

    發表留言