



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、面向對象程序設計與面向過程程序設計的區(qū)別想要知道面向對象程序設計與面向過程程序設計的區(qū)別,我們應先了解什么事面向對象程序設計,什么事面向過程程序設計,這樣我們才能弄清他們之間的區(qū)別,下面我們就什么是面向對象程序設計和什么事面向過程程序設計展開論述。面向對象的基本概念:對象。對象是人們要進行研究的任何事物,從最簡單的整數到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計劃或事件。對象的狀態(tài)和行為。對象具有狀態(tài),一個對象用數據值來描述它的狀態(tài)。對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。對象實現了數據和操作的結合,使數據和操作封裝于對象的統(tǒng)一體中類。具有相
2、同或相似性質的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。類具有屬性,它是對象的狀態(tài)的抽象,用數據結構來描述類的屬性。類具有操作,它是對象的行為的抽象,用操作名和實現該操作的方法來描述。類的結構。在客觀世界中有若干類,這些類之間有一定的結構關系。通常有兩種主要的結構關系,即一般-具體結構關系,整體-部分結構關系。一般具體結構稱為分類結構,也可以說是“或”關系,或者是“isa”關系。整體一一部分結構稱為組裝結構,它們之間的關系是一種“與”關系,或者是“hasa”關系。消息和方法。對象之間進行通信的結構叫做消息。在對象的操作中,當一個消息發(fā)送給某個對象時,消
3、息包含接收對象去執(zhí)行某種操作的信息。發(fā)送一條消息至少要包括說明接受消息的對象名、發(fā)送給該對象的消息名(即對象名、方法名)。一般還要對參數加以說明,參數可以是認識該消息的對象所知道的變量名,或者是所有(1)對象唯一性。每個對象都有自身唯一的標識,通過這種標識,可找到相應的對象。在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。抽象性。分類性是指將具有一致的數據結構(屬性)和行為(操作)的對象抽象成類個類就是這樣一種抽象,它反映了與應用有關的重要性質,而忽略其他一些無關內容。任何類的劃分都是主觀的,但必須與具體的應用有關。繼承性。繼承性是子類自動共享父類數據結構和方法的機制,這是
4、類之間的一種關系。在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,并加入若干新的內容。繼承性是面向對象程序設計語言不同于其它語言的最重要的特點,是其他語言所沒有的。在類層次中,子類只繼承一個父類的數據結構和方法,則稱為單重繼承。在類層次中,子類繼承了多個父類的數據結構和方法,則稱為多重繼承。在軟件開發(fā)中,類的繼承性使所建立的軟件具有開放性、可擴充性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的創(chuàng)建工作量,增加了代碼的可重性。采用繼承性,提供了類的規(guī)范的等級結構。通過類的繼承關系,使公共的特性能夠共享,提高了軟件的重用性。
5、(4)多態(tài)性(多形性)多態(tài)性是指相同的操作或函數、過程可作用于多種類型的對象上并獲得不同的結果。不同的對象,收到同一消息可以產生不同的結果,這種現象稱為多態(tài)性。多態(tài)性允許每個對象以適合自身的方式去響應共同的消息。多態(tài)性增強了軟件的靈活性和重用性。面向過程程序設計面向過程就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。例如五子棋,面向過程的設計思路就是首先分析問題的步驟:1、開始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最后結果。把上面每個步驟用分別的函數來實現,問題就解
6、決了。面向過程是在面向對象出現之前,以及之后,甚至至今都應用于程序開發(fā)中的程序設計思想。面向過程就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。如:一輛汽車用面向過程的思想去考慮它應該是這樣的:如何啟動汽車、如何起步、加速、剎車、熄火等一個個操作。而汽車在這里并不是我們所關心的。而面向對象則以汽車為對象,一切由汽車開始,以上的可用操作,即功能是汽車這個對象本身所具有的,做任何操作只要告訴汽車就可以了。面向過程是把所有
7、的功能全部在一個大的類里定義出來,當系統(tǒng)龐大時,功能多了,各種操作之間的調用關系也很復雜,當需要修改一個功能時就可能引發(fā)一連串的改動,使修改和維護成本很昂貴。我們經常所說的“對象”,一般指的是解決信息領域內所遇到問題的方法。特別是應用軟件技術來解決問題的方法。如我們經常碰到的面向對象的編程(Object-OrientedProgramming)、面向對象的分析(Object-OrientedAnalysis)、面向對象的設計(Object-OrientedDesign)等。應用前面所介紹的關于對象的概念,可以對這些問題做進一步的分析。在面對較復雜的系統(tǒng),我們可以將它作為一個對象來進行分析。一個
8、系統(tǒng)(解決某個問題的全套解決方案)作為一個對象,可以由多個部分組成。同樣,這個對象也可以由多個對象組成。對于同類的事物,可以由一個對象來表示。這樣做的益處是顯而易見的,它靈活而高效,可以大大減輕設計人員的工作量,簡化實際的模型。舉一個例子。在關系型數據庫的設計當中,我們可以把一個元組當作對象,給它定義一組操作方法。這些方法將適用于所有元組,從而我們不必在更大的范圍內去細致的考慮不同的元組(如判斷一個元素是否合法):因為它們有一組公共的面向本身的方法,它們“自己”可以“解決”自己的問題。更上一層的對象可以是一個表、視圖等。表對象在元組對象的基礎上又有它們自己的方法,如增加、刪除等。從這個層面上講
9、,它也只需要做“自己”的事情,因為有元組對象的支持,它無須去考慮像元素是否合法這類的事情。甚至,有時為了滿足我們還可以將元素或表群當作時對象并定義它們自己的方法。這樣,更能顯示面向對象的優(yōu)勢??梢悦黠@地看出,面向對象是以功能來劃分問題,而不是步驟。同樣是繪制棋局,這樣的行為在面向過程的設計中分散在了總多步驟中,很可能出現不同的繪制版本,因為通常設計人員會考慮到實際情況進行各種各樣的簡化。而面向對象的設計中,繪圖只可能在棋盤對象中出現,從而保證了繪圖的統(tǒng)一。功能上的統(tǒng)一保證了面向對象設計的可擴展性。比如我要加入悔棋的功能,如果要改動面向過程的設計,那么從輸入到判斷到顯示這一連串的步驟都要改動,甚
10、至步驟之間的循序都要進行大規(guī)模調整。如果是面向對象的話,只用改動棋盤對象就行了,棋盤系統(tǒng)保存了黑白雙方的棋譜,簡單回溯就可以了,而顯示和規(guī)則判斷則不用顧及,同時整個對對象功能的調用順序都沒有變化,改動只是局部的。再比如我要把這個五子棋游戲改為圍棋游戲,如果你是面向過程設計,那么五子棋的規(guī)則就分布在了你的程序的每一個角落,要改動還不如重寫。但是如果你當初就是面向對象的設計,那么你只用改動規(guī)則對象就可以了,五子棋和圍棋的區(qū)別不就是規(guī)則嗎?(當然棋盤大小好像也不一樣,但是你會覺得這是一個難題嗎?直接在棋盤對象中進行一番小改動就可以了。)而下棋的大致步驟從面向對象的角度來看沒有任何變化。當然,要達到改
11、動只是局部的需要設計的人有足夠的經驗,使用對象不能保證你的程序就是面向對象,初學者或者很蹩腳的程序員很可能以面向對象之虛而行面向過程之實,這樣設計出來的所謂面向對象的程序很難有良好的可移植性和可擴展性。面向對象和面向過程的區(qū)別,實在是難用一兩句話說明白。面向過程是一種直接的編程方法,它是按照編程語言的思路考慮問題。尤其是想C語言這種過程式語言,它就是通過順序執(zhí)行一組語句來實現一個功能,這些語句的執(zhí)行過程就是整個程序。不同的語言解決同一個問題的過程是不一樣的。面向對象是一種抽象度更高的編程方法。它把眼光集中在了要解決問題本身而不是語言上。它的目標是使模塊的抽象度更高,可復用性更好。面向對象的目的
12、就是可復用。舉個例子,比如我們要寫一個計算器程序。這個計算機目前只要求有加減乘除四種運算。用面向過程的方法,我們可能直接就寫一個main函數。然后就開始定義一些數據結構,然后就開始寫add,sub,multi,div等函數,去實現功能。用面向對象的方法,我們會先定義一個Calculator類。然后定義一些必要的數據成員,然后在定義add,sub,multi,div這四個成員函數(這四個函數的功能實現和上面四個應該是基本一樣的)。從上面的實現來看,這兩種實現方法的差別不是很大,甚至第二種看上去還有些多此一舉。接下來,我們要擴展這個計算器,讓它能計算指數。用面向過程的方法,我們會將上面實現的代碼全
13、部copy過來,然后再增加一個power函數。用面向對象的方法,我們會定義一個CalculatorEx類公有繼承自Calculator,再在CalculatorEx中實現Power函數。上面只是一個簡單的擴展,二者的區(qū)別就明顯起來。面向過程是純代碼級的復用。面向對象的復用方式更為優(yōu)雅,它可以是代碼級的,也可以是類級的,也可以是接口級的,也可以是組件級的,甚至是服務級的。拋下這些復用概念不說。我們假設第一次實現的并不是簡單的四個功能,而是一個復雜的庫,第二次增加的也不是一個功能而是一個擴展庫。這時候面向對象的優(yōu)勢就會比較明顯的體現出來。面向過程是松散部件,而面向對象是一個體系。我說的這些都是自己的理解,可能并不完全正確。對于面向對象有一個官方的定義,但是不同人有不同的理解。所以里面的很多東西都需要在學習的過程中去理解體會。但是,如果不動手做點東西,對這些概念很難理解到位。還有就是,C,C+,Java這些都是語言,他們之間并沒有是不是面向對象的區(qū)別
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 壁紙采購合同
- 小學語文教師跨學科合作計劃
- 部編人教版三年級下冊美術教學工作計劃
- 房產買賣定金協(xié)議注意點
- 2025年人教版小學五年級下冊數學復習計劃
- 房屋抵押評估協(xié)議
- 消防安全應急預案演練計劃
- 課題申報書:國際教育發(fā)展大趨勢研究
- 課題申報書:構建公辦和民辦學校多樣化供給高質量協(xié)同發(fā)展新格局研究
- 課題申報書:高質量共建“一帶一路”的前景與路徑研究
- DBJ-T15-60-2019建筑地基基礎檢測規(guī)范
- 常規(guī)體外受精中國專家共識(2024年)解讀 2
- 《茉莉花》(課件)人音版音樂六年級上冊
- 指尖上的非遺-中國傳統(tǒng)手工藝鑒賞智慧樹知到答案2024年青島黃海學院
- 二年級下冊口算題1000題大全-
- AQ/T 1119-2023 煤礦井下人員定位系統(tǒng)通 用技術條件(正式版)
- 國家中醫(yī)藥管理局發(fā)布的406種中醫(yī)優(yōu)勢病種診療方案和臨床路徑目錄
- 幼兒園班級幼兒圖書目錄清單(大中小班)
- 上海教育出版社:六年級英語下冊(三年級起點)單詞表(帶音標)
- (高清版)JGT 225-2020 預應力混凝土用金屬波紋管
- 第5課+弘揚勞動精神、勞模精神、工匠精神(課時1)(課件)-【中職專用】中職思想政治《職業(yè)道德與法治》高效課堂課件+教學設計(高教版2023·基礎模塊)
評論
0/150
提交評論