面向對象程序設計

面向對象程序設計

計算機編程架構
面向對象程序設計(Object Oriented Programming)作為一種新方法,其本質是以建立模型體現出來的抽象思維過程和面向對象的方法。模型是用來反映現實世界中事物特征的。[1]任何一個模型都不可能反映客觀事物的一切具體特征,隻能對事物特征和變化規律的一種抽象,且在它所涉及的範圍内更普遍、更集中、更深刻地描述客體的特征。通過建立模型而達到的抽象是人們對客體認識的深化。[2]
  • 中文名:
  • 外文名:
  • 别名:
  • 語言名稱:面向對象程序設計
  • 相關語言:c++.java...
  • 釋義:是一種計算機編程架構

基本信息

面向對象程序設計(Object Oriented Programming,OOP)是一種計算機編程架構。OOP的一條基本原則是計算機程序由單個能夠起到子程序作用的單元或對象組合而成。OOP達到了軟件工程的三個主要目标:重用性、靈活性和擴展性。OOP=對象+類+繼承+多态+消息,其中核心概念是類和對象。

面向對象程序設計方法是盡可能模拟人類的思維方式,使得軟件的開發方法與過程盡可能接近人類認識世界、解決現實問題的方法和過程,也即使得描述問題的問題空間與問題的解決方案空間在結構上盡可能一緻,把客觀世界中的實體抽象為問題域中的對象。

面向對象程序設計以對象為核心,該方法認為程序由一系列對象組成。類是對現實世界的抽象,包括表示靜态屬性的數據和對數據的操作,對象是類的實例化。對象間通過消息傳遞相互通信,來模拟現實世界中不同實體間的聯系。在面向對象的程序設計中,對象是組成程序的基本模塊。  

特點

1、封裝性:

封裝是指将一個計算機系統中的數據以及與這個數據相關的一切操作語言(即描述每一個對象的屬性以及其行為的程序代碼)組裝到一起,一并封裝在一個有機的實體中,把它們封裝在一個“模塊”中,也就是一個類中,為軟件結構的相關部件所具有的模塊性提供良好的基礎。在面向對象技術的相關原理以及程序語言中,封裝的最基本單位是對象,而使得軟件結構的相關部件的實現“高内聚、低耦合”的“最佳狀态”便是面向對象技術的封裝性所需要實現的最基本的目标。對于用戶來說,對象是如何對各種行為進行操作、運行、實現等細節是不需要刨根問底了解清楚的,用戶隻需要通過封裝外的通道對計算機進行相關方面的操作即可。大大地簡化了操作的步驟,使用戶使用起計算機來更加高效、更加得心應手。

2、繼承性:

繼承性是面向對象技術中的另外一個重要特點,其主要指的是兩種或者兩種以上的類之間的聯系與區别。繼承,顧名思義,是後者延續前者的某些方面的特點,而在面向對象技術則是指一個對象針對于另一個對象的某些獨有的特點、能力進行複制或者延續。如果按照繼承源進行劃分,則可以分為單繼承(一個對象僅僅從另外一個對象中繼承其相應的特點)與多繼承(一個對象可以同時從另外兩個或者兩個以上的對象中繼承所需要的特點與能力,并且不會發生沖突等現象);如果從繼承中包含的内容進行劃分,則繼承可以分為四類,分别為取代繼承(一個對象在繼承另一個對象的能力與特點之後将父對象進行取代)、包含繼承(一個對象在将另一個對象的能力與特點進行完全的繼承之後,又繼承了其他對象所包含的相應内容,結果導緻這個對象所具有的能力與特點大于等于父對象,實現了對于父對象的包含)、受限繼承、特化繼承。

3、多态性:

從宏觀的角度來講,多态性是指在面向對象技術中,當不同的多個對象同時接收到同一個完全相同的消息之後,所表現出來的動作是各不相同的,具有多種形态;從微觀的角度來講,多态性是指在一組對象的一個類中,面向對象技術可以使用相同的調用方式來對相同的函數名進行調用,即便這若幹個具有相同函數名的函數所表示的函數是不同的。  

名詞解釋

面向對象程序設計中的概念主要包括:對象、類、數據抽象、繼承、動态綁定、數據封裝、多态性、消息傳遞。通過這些概念面向對象的思想得到了具體的體現。

1)對象(Object) :

可以對其做事情的一些東西。一個對象有狀态、行為和标識三種屬性。

2)類(class):

一個共享相同結構和行為的對象的集合。類(Class)定義了一件事物的抽象特點。通常來說,類定義了事物的屬性和它可以做到的(它的行為)。舉例來說,“狗”這個類會包含狗的一切基礎特征,例如它的孕育、毛皮顔色和吠叫的能力。類可以為程序提供模版和結構。一個類的方法和屬性被稱為“成員”。

3)封裝(encapsulation):

第一層意思:将數據和操作捆綁在一起,創造出一個新的類型的過程。第二層意思:将接口與實現分離的過程。

4)繼承:

類之間的關系,在這種關系中,一個類共享了一個或多個其他類定義的結構和行為。繼承描述了類之間的“是一種”關系。子類可以對基類的行為進行擴展、覆蓋、重定義。

5)組合:

既是類之間的關系也是對象之間的關系。在這種關系中一個對象或者類包含了其他的對象和類。

組合描述了“有”關系。

6)多态:

類型理論中的一個概念,一個名稱可以表示很多不同類的對象,這些類和一個共同超類有關。因此,這個名稱表示的任何對象可以以不同的方式響應一些共同的操作集合。

7)動态綁定:

也稱動态類型,指的是一個對象或者表達式的類型直到運行時才确定。通常由編譯器插入特殊代碼來實現。與之對立的是靜态類型。

8)靜态綁定:

也稱靜态類型,指的是一個對象或者表達式的類型在編譯時确定。

9)消息傳遞:

指的是一個對象調用了另一個對象的方法(或者稱為成員函數)。

10)方法:

也稱為成員函數,是指對象上的操作,作為類聲明的一部分來定義。方法定義了可以對一個對象執行那些操作。

設計原理

面向對象技術是對計算機的結構化方法的深入、發展和補充,在保障進行良好的計算機軟件的需求設計的同時,也需要盡可能實現利用低成本來開發出高質量的應用軟件的目标。消息是傳遞一個對象與另一個對象之間的信息,實現兩者進行通信的橋梁,消息鍊負責指定功能無條件的執行,而計算機軟件的主程序則負責對消息進行篩選(哪些可以接受、可以執行,哪些則需要摒棄,不可帶入),軟件開發主要由以下幾個方面組成,分别為需求定義、制定計劃、軟件的功能設計、軟件的功能實現、驗證和确認,這五個方面是最基本的環節,缺一不可。  

設計優點

面向對象出現以前,結構化程序設計是程序設計的主流,結構化程序設計又稱為面向過程的程序設計。在面向過程程序設計中,問題被看作一系列需要完成的任務,函數(在此泛指例程、函數、過程)用于完成這些任務,解決問題的焦點集中于函數。其中函數是面向過程的,即它關注如何根據規定的條件完成指定的任務。

比較面向對象程序設計和面向過程程序設計,還可以得到面向對象程序設計的其他優點:

1)數據抽象的概念可以在保持外部接口不變的情況下改變内部實現,從而減少甚至避免對外界的幹擾;

2)通過繼承大幅減少冗餘的代碼,并可以方便地擴展現有代碼,提高編碼效率,也減低了出錯概率,降低軟件維護的難度;

3)結合面向對象分析、面向對象設計,允許将問題域中的對象直接映射到程序中,減少軟件開發過程中中間環節的轉換過程;

4)通過對對象的辨别、劃分可以将軟件系統分割為若幹相對為獨立的部分,在一定程度上更便于控制軟件複雜度;

5)以對象為中心的設計可以幫助開發人員從靜态(屬性)和動态(方法)兩個方面把握問題,從而更好地實現系統;

6)通過對象的聚合、聯合可以在保證封裝與抽象的原則下實現對象在内在結構以及外在功能上的擴充,從而實現對象由低到高的升級。  

設計缺陷

(1)運行效率較低。

類的大量加載會犧牲系統性能,降低運行速度。雖然CPU速度在提高,内存容量在增加,但這一問題仍會随着系統規模變大而逐漸顯示出來,變得越發嚴重。

(2)類庫龐大。

由于類庫都過于龐大,程序員對它們的掌握需要一段時間,從普及、推廣的角度來看,類庫應在保證其功能完備的基礎上進行相應的縮減。

(3)類庫可靠性。

越龐大的系統必會存在我們無法預知的問題隐患,程序員無法完全保證類庫中的每個類在各種環境中百分之百的正确,當使用的類發生了問題,就會影響後續工作,程序員也有可能推翻原來的全部工作。  

相關詞條

相關搜索

其它詞條