1. 程式人生 > >《面向對象程序設計概述》 牛詠梅

《面向對象程序設計概述》 牛詠梅

編程 活性 原型 現象 定義 program steps 大型 ram

面向對象程序設計概述

牛詠梅

(南陽理工學院 河南 南陽 473000)

摘要: 分析傳統程序設計方法與面向對象程序設計方法之間的差別,重點分析了面向對象程序設計方法的特點,介紹了面向對象程序設計 方法的步驟及其優點。

關鍵詞: 面向對象程序設計; 對象; 封裝; 繼承

Abstract: To analyse the difference of procedure - oriented programming and object - oriented programming. emphasize introduce the characteristics ,steps and advantages of OOP. key words: Object- Oriented Programming; Object; encapsulation; inheritance

面向對象技術引起了程序設計方法學的一場革命, 它已經替代面向過程的程序設計技術, 成為當今計算機應用開發領域的主流技術。

一、面向過程程序設計與面向對象程序設計的比較

傳統的程序設計技術是面向數據過程的設計方法,註重算法的描述,回答的是“做什麽、怎麽做”的問題。這種方法把數據和過程作為相互獨立的實體,數據代表問題空間中的客體,用於表達實際問題中的信息;程序代碼則用於處理這些數據。

面向對象的設計方法與傳統的面向數據過程的方法有本質不同。面向對象的程序設計方法註重需求分析和設計反復,回答的是“用何做、為何做”的問題,它使程序員擺脫了具體的數據格式和過程的束縛,可以集中精力研究和設計所要處理的對象。新的對象類可以通過繼承已存在的對象類的性質而產生,因此,這樣實現的可重用性是自然的和準確的。采用面向對象的方法表示知識,不僅表達的能力強,可以表示相當廣泛的知識,能夠描述非常復雜的客觀事物,而且具有模塊性強、結構化程度高、便於分層實現,有利於設計、復用、擴充、修改等一系列優點。因此,面向對象的程序設計方法在知識處理與專家系統等在人工智能領域中的應用前景是光明的、樂觀的。

二、面向對象程序設計語言中的基本概念

1. 對象

對象是對象式系統中運行時刻的基本成分,它是屬性和行為的封裝體,其中還包括和其他對象進行通信的設施。對象有三種不同含義:實在對象、問題對象和計算機對象。實在對象是現實世界中存在的實體;問題對象是實在對象在問題域中的抽象,用以根據需要,完成某些行為;計算機對象是問題對象在計算機系統中的表示,它是數據和操作的封裝通信單位。因此,對象式語言中的對象是指計算機對象。

2. 類

類是對一組具有相同數據和相同操作的對象的描述,也就是說類是一組對象的抽象概括。其作用有:一是作為對象的描述機制,刻劃一組對象的公共屬性和行為;二是作為程序的基本單位,它是支持模塊化設計的設施,並且,類上的分類關系是模塊劃分的規範標準。類有三部分組成:數據、操作和接口。數據刻劃對象的狀態,操作刻劃對象的行為,類中所有數據均為私有,接口使操作對外可見。

3. 消息

消息是對象與對象之間可以傳遞信息,所傳遞的信息即為消息。它要求某個對象執行類中所定義的某個操作的規格說明,由三部分組成:接受消息的對象、消息選擇子(又稱為消息名)、零個或多個變元(實參)。

三、面向對象程序設計語言的特性

1. 抽象

抽象就是忽略問題的細枝末節,以便更充分地註意與當前目標有關的方面。抽象並非是對問題全面的描述,而只是選擇其中核心的、共性的、能說明其性質的關鍵性問題,而非共性及細節部分可留給低級的派生類來解決。比如, 我們要設計一個學生成績管理系統,考察學生這個對象時, 我們只關心他的班級、學號、成績等, 而不用去關心他的身高、體重這些信息。抽象包括兩個方面, 一是過程抽象,二是數據抽象。過程抽象是指任何一個明確定義功能的操作都可被使用者看作單個實體看待,盡管這個操作實際上可能由一系列更低級的操作完成。數據抽象定義了數據類型和施加於該類型對象上的操作,並限定了對象的值只能通過使用這些操作修改和觀察。

2. 封裝性

封裝是面向對象的特征之一, 是對象和類概念的主要特性。封裝是把過程和數據包圍起來, 對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念, 即現實世界可以被描繪成一系列完全自治、封裝的對象, 這些對象通過一個受保護的接口訪問其他對象。一旦定義了一個對象的特性, 則有必要決定這些特性的可見性, 即哪些特性對外部世界是可見的, 哪些特性用於表示內部狀態。在這個階段定義對象的接口。通常, 應禁止直接訪問一個對象的實際表示, 而應通過操作接口訪問對象, 這稱為信息隱藏。事實上, 信息隱藏是用戶對封裝性的認識, 封裝則為信息隱藏提供支持。封裝保證了模塊具有較好的獨立性, 使得程序維護修改較為容易。對應用程序的修改僅限於類的內部, 因而可以將應用程序修改帶來的影響減少到最低限度。封裝、抽象和信息隱藏是用來降低軟件復雜性的重要技術。

3. 繼承性

繼承是一種聯結類的層次模型, 並且允許和鼓勵類的重用, 它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生, 這個過程稱為類繼承。新類繼承了原始類的特性, 新類稱為原始類的派生類( 子類) , 而原始類稱為新類的基類( 父類) 。派生類可以從它的基類那裏繼承方法和實例變量, 並且類可以修改或增加新的方法使之更適合特殊的需要。這也體現了大自然中一般與特殊的關系。繼承性很好的解決了軟件的可重用性問題。比如說, 學生類, 所有的學生可以看作是從同一個學生類派生出來的, 但是每一種學生的具體表現行為各有不同, 這是由於派生了不同的子類, 各個子類添加了不同的特性。繼承對軟件開發有許多的好處:

(1)軟件復用性:如果一個操作是從另一個類繼承來的,這個操作的所有源代碼不用重寫。

(2)代碼復用:面向對象程序設計中存在多層次的代碼復用,在一個層次上,許多不相幹的程序員及項目可以使用的相同的類。

(3)界面的一致性:當許多類都從同一類繼承時,在所有情況下,這些類繼承的操作都是相同的,這樣就很容易保證相似的類的界面也相似。

(4)快速原型技術:如果一個軟件系統的大部分都可以由可復用的成分(例如類庫等)構成,那麽開發中的大部分精力就可以花在理解系統中新的以及特殊的部分。這樣軟件系統開發變得快速簡單,這種開發叫做快速原型技術。

4. 多態性

在程序設計語言中多態性指相同的語言結構可以代表不同類型的實體或者對不同類型的實體進行操作。在面向對象程序語言中,對於類和對象之間的繼承關系有一種獨特的多態現象;如果類P 是類 S 的父類, 則子類 S 的一個對象 s 可以用類 P 的一個對象 p 所使用的任何地方,這就意味著一個公共的消息集(即操作)可以送到類 p和類 s 的對象上,這正體現了多態性。多態性與語方的運行鏈接有關,運行時鏈接表示系統在運行期間根據接收對象的類型將一個選擇器和實現它的特定方法鏈接在一起,這種鏈接方式比起編譯時鏈接在實現多態性方面具有很大的方變性和靈活性。

多態性的優點在於:高層代碼(算法)只寫一次,而通過提供不同的低層服務來滿足復用的要求。在面向對象程序設計中,各種多態性方法以及其它方法相組合使用可以大大提高代碼復用及共享。面向對象程序設計方法克服傳統程序設計方法的大部分缺點,目前出現了很多面向對象的程序設計語言,例如 VC++, Object Pascal Visual Basic 等。

四、面向對象的程序設計步驟及優點

面向對象軟件開發的主要目的是用可重用軟件分解基類和用子類加快問題求解,縮短開發時間和減少軟件開發費用;通過改變一個或多個類的實現,使其影響局部化,從而降低軟件維護費用。其步驟略述為:

1.選擇主要數據對象;

2.定義每個對象能夠接收和發送的消息;

3.說明為實現每個對象所必須的數據元素;

4.用小說明書說明每個對象的方法;

5.最終優化整個設計。

它的優點在於:

1.易於維護

2.可擴充性

3.代碼重用

五、結語

從上面的概述我們可以看出, 面向對象程序設計成為現代編程技術的一個重要組成的原因。從面向過程到面向對象是程序設計的一個飛躍。人們之所以要采用面向對象的程序設計技術, 其目的是:

1.提高程序的運行效率

2.提高程序設計工作的效率

3.提高程序的可維護性

運用面向對象技術不是必須的, 但是對於一個大型復雜應用系統的開發, 如果采用了面向對象技術, 則開發效率會大大提高。

參考文獻:

[1] 徐家福等.對象式程序設計語言[M].南京: 南京大學出版社.1992.

[2] 賈洞, 楊小鋒.面向對象技術中若幹問題的探討[J].小型微型計算 機系統.1998.

[3] 全柄哲.面向對象軟件規格語言的設計[J].軟件學報.1995.

[4] [美] Setphen Prata. C++ PrimePlus 中文版(第 4 版)[M].孫建春譯. 北京: 人民郵電出版社, 2002.

《面向對象程序設計概述》 牛詠梅