論面向過(guò)程的編程思想和方法_第1頁(yè)
論面向過(guò)程的編程思想和方法_第2頁(yè)
論面向過(guò)程的編程思想和方法_第3頁(yè)
論面向過(guò)程的編程思想和方法_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、面向過(guò)程編程的思想和方法一、 引言隨著更加方便的面向?qū)ο缶幊痰某霈F(xiàn),面向過(guò)程編程逐漸被人們冷落。但是在面向?qū)ο缶幊坛霈F(xiàn)之前,面向過(guò)程編程的高效和清晰的數(shù)據(jù)結(jié)構(gòu)影響了軟件開(kāi)發(fā)的發(fā)展歷程。本文主要介紹了什么是面向過(guò)程編程的思想和方法,分析其特征及優(yōu)缺點(diǎn),并且根據(jù)面向過(guò)程編程和面向?qū)ο蟮木幊痰倪M(jìn)行了比較。二、 面向過(guò)程簡(jiǎn)介:面向過(guò)程編程將程序分成了數(shù)據(jù)和處理函數(shù)兩部分,程序以處理函數(shù)為核心,如果要執(zhí)行什么操作,就將數(shù)據(jù)傳給相應(yīng)的處理函數(shù),返回我們需要的結(jié)果。也有的人把面向過(guò)程定義為:算法 + 數(shù)據(jù)結(jié)構(gòu),我覺(jué)得也很準(zhǔn)確,算法就是處理函數(shù),而數(shù)據(jù)結(jié)構(gòu)即為我們所說(shuō)的數(shù)據(jù),本質(zhì)上是一樣的。面向過(guò)程編程所有的

2、數(shù)據(jù)和處理函數(shù)都是公有的,整個(gè)編程的思維過(guò)程就是定義數(shù)據(jù),定義處理函數(shù),然后將數(shù)據(jù)傳給處理函數(shù)進(jìn)行處理,處理函數(shù)之間也可以互相調(diào)用,數(shù)據(jù)和處理函數(shù)緊密耦合,共同為我們所開(kāi)發(fā)的項(xiàng)目服務(wù)。三、 面向過(guò)程的編程思想:“面向過(guò)程”(Procedure Oriented)是一種以事件為中心的編程思想。“面向過(guò)程”也可稱之為“面向記錄”編程思想,他們不支持豐富的“面向?qū)ο蟆碧匦裕ū热缋^承、多態(tài)),并且它們不允許混合持久化狀態(tài)和域邏輯。就是分析出解決問(wèn)題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。面向過(guò)程其實(shí)是最為實(shí)際的一種思考方式,就是算面向?qū)ο蟮姆椒ㄒ彩呛忻嫦蜻^(guò)

3、程的思想.可以說(shuō)面向過(guò)程是一種基礎(chǔ)的方法.它考慮的是實(shí)際的實(shí)現(xiàn).一般的面向過(guò)程是從上往下步步求精.所以面向過(guò)程最重要的是模塊化的思想方法.對(duì)比較面向?qū)ο?面向?qū)ο蟮姆椒ㄖ饕前咽挛锝o對(duì)象化,對(duì)象包括屬性與行為.當(dāng)程序規(guī)模不是很大時(shí),面向過(guò)程的方法還會(huì)體現(xiàn)出一種優(yōu)勢(shì),因?yàn)槌绦虻牧鞒毯芮宄?按著模塊與函數(shù)的方法可以很好的組織.比如拿學(xué)生早上起來(lái)的事情來(lái)說(shuō)說(shuō)這種面向過(guò)程吧.粗略的可以將過(guò)程擬為: (1)起床 (2)穿衣 (3)洗臉?biāo)⒀?(4)去學(xué)校 而這4步就是一步一步的完成,它的順序很重要,你只須一個(gè)一個(gè)的實(shí)現(xiàn)就行了.而如果是用面向?qū)ο蟮姆椒ǖ脑?可能就只抽象出一個(gè)學(xué)生的類,它包括這四個(gè)方法,但是

4、具體的順序就不能體現(xiàn)出來(lái)面向過(guò)程其實(shí)是最為實(shí)際的一種思考方式,就是算面向?qū)ο蟮姆椒ㄒ彩呛忻嫦蜻^(guò)程的思想。面向過(guò)程最重要的思想是模塊化、結(jié)構(gòu)化的思想方法。當(dāng)程序規(guī)模不是很大時(shí),面向過(guò)程的方法會(huì)體現(xiàn)出一種優(yōu)勢(shì),因?yàn)槌绦虻牧鞒毯芮宄?,按著模塊與函數(shù)的方法可以很好的組織,執(zhí)行效率也比較高。按照模塊化的思想,我們會(huì)先根據(jù)用戶的需求進(jìn)行分析,解析程序的各項(xiàng)功能結(jié)構(gòu),再根據(jù)程序的運(yùn)行過(guò)程將其分解成若干個(gè)順序執(zhí)行的模塊,每個(gè)模塊都是由若干函數(shù)組成,通過(guò)函數(shù)的依次調(diào)用實(shí)現(xiàn)模塊的功能。整個(gè)項(xiàng)目經(jīng)過(guò)這樣的模塊化后,開(kāi)發(fā)人員就可以開(kāi)始有目的的逐個(gè)模塊、逐個(gè)函數(shù)的去實(shí)現(xiàn),進(jìn)而完成整個(gè)項(xiàng)目。而對(duì)于結(jié)構(gòu)化的思想,它

5、重點(diǎn)強(qiáng)調(diào)的是程序設(shè)計(jì)風(fēng)格和程序結(jié)構(gòu)的規(guī)范化。在面向過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì)中,“模塊”是構(gòu)成程序的基本單元,好比是一座大樓中的各個(gè)房間,有辦公室、實(shí)驗(yàn)室、會(huì)議室、門房,各自獨(dú)立,但共同組成了大樓。有了這樣的模塊,程序不需要寫得很長(zhǎng),將一段功能獨(dú)立的代碼寫成一個(gè)函數(shù),讓別的函數(shù)調(diào)用就ok了。四、 面向過(guò)程的編程方法:1. 表述:面向過(guò)程的編程方式必須在編程之前將解決問(wèn)題的流程確定下來(lái),這是一種很不靈活的方式。我們解決一個(gè)問(wèn)題的時(shí)候,是很難開(kāi)始在一開(kāi)始就把流程定的很合理的。面向過(guò)程編程中最常用的一個(gè)分析方法是“功能分解”。我們會(huì)把用戶需求先分解成模塊,然后把模塊分解成大的功能,再把大的功能分解成小的功

6、能,整個(gè)需求就是按照這樣的方式,最終分解成一個(gè)一個(gè)的函數(shù)。這種解決問(wèn)題的方式稱為“自頂向下”,原則是“先整體后局部”,“先大后小”,也有人喜歡使用“自上向下”的分析方式,先解決局部難點(diǎn),逐步擴(kuò)大開(kāi)來(lái),最后組合出來(lái)整個(gè)程序。其實(shí),這兩種方式殊途同歸,最終都能解決問(wèn)題,但一般情況下采用“自頂向下”的方式還是較為常見(jiàn)的,因?yàn)檫@種方式最容易看清問(wèn)題的本質(zhì)。面向過(guò)程的軟件工程方法基于“自頂向下,逐步求精”的原則來(lái)完成團(tuán)結(jié)開(kāi)發(fā)各階段的任務(wù)。程序的執(zhí)行過(guò)程主要由順序、選擇和循環(huán)等控制結(jié)構(gòu)來(lái)控制。2. 特征及優(yōu)缺點(diǎn)面向過(guò)程的編程具有以下一些特點(diǎn):1) 強(qiáng)調(diào)做(算法); 2) 大程序被分隔為許多小程序,這些小程

7、序稱為函數(shù); 3) 大多數(shù)函數(shù)共享全局?jǐn)?shù)據(jù); 4) 數(shù)據(jù)開(kāi)放的由一個(gè)函數(shù)流向另一個(gè)函數(shù)。函數(shù)把數(shù)據(jù)從一種形式轉(zhuǎn)換為另一種形式。面向過(guò)程編程的優(yōu)點(diǎn):面向過(guò)程的編程(OPP)優(yōu)點(diǎn)是程序順序執(zhí)行,流程清晰明了。其次面向過(guò)程的性能比面向?qū)ο笠撸驗(yàn)轭愓{(diào)用時(shí)需要實(shí)例化,開(kāi)銷比較大,比較消耗資源;比如單片機(jī)、嵌入式開(kāi)發(fā)、Linux/Unix等一般采用面向過(guò)程開(kāi)發(fā),性能是最重要的因素。所以當(dāng)我們開(kāi)發(fā)一個(gè)不是很復(fù)雜的程序,同時(shí)對(duì)性能方面又有比較高要求,這時(shí)候面向過(guò)程就顯得十分高效了。面向過(guò)程編程的缺點(diǎn):1) 主控程序承擔(dān)了太多的任務(wù),主控和模塊之間的承擔(dān)的任務(wù)不均衡。2) 重用性低,面向過(guò)程定義的函數(shù)不方便

8、擴(kuò)展。3) 封裝性不好,不能避免外部錯(cuò)誤對(duì)它的影響。程序的安全性正確性沒(méi)法保障。五、 面向過(guò)程和面向?qū)ο蟮膮^(qū)別面向過(guò)程和面向?qū)ο蟮膮^(qū)別并不像人們想象得那么大,面向?qū)ο蟮拇蟛糠炙枷朐诿嫦蜻^(guò)程中也能體現(xiàn)。但面向過(guò)程最大的問(wèn)題(也許是唯一先天的缺陷)在于隨著系統(tǒng)的膨脹,面向過(guò)程將無(wú)法應(yīng)付,最終導(dǎo)致系統(tǒng)的崩潰。 面向過(guò)程和面向?qū)ο筮@兩種編程思想的區(qū)別在于:他們對(duì)于需求的理解是不一樣的。面向過(guò)程編程人員,他們把需求理解成一條一條的業(yè)務(wù)流程,詢問(wèn)用戶的業(yè)務(wù)流程,然后他們分析這些流程,把這些流程交織組合在一起,最后實(shí)現(xiàn)了需求;面向?qū)ο蟮木幊倘藛T,他們把需求理解成一個(gè)一個(gè)的對(duì)象,他們會(huì)詢問(wèn)用戶“這個(gè)東西叫做什

9、么,他們從哪里來(lái),能做什么事”,然后他們制造這些對(duì)象,讓這些對(duì)象互相調(diào)用,符合了業(yè)務(wù)需要。面向過(guò)程就是分析出解決問(wèn)題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。面向?qū)ο笫且怨δ軄?lái)劃分問(wèn)題,而不是步驟,是把構(gòu)成問(wèn)題事物分解成各個(gè)對(duì)象,簡(jiǎn)歷對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描敘某個(gè)事物在整個(gè)解決問(wèn)題的步驟中的行為。以下兩方面, 面向?qū)ο蠛兔嫦蜻^(guò)程會(huì)有區(qū)別1、封裝性上:面向?qū)ο蟮姆庋b將一系列的數(shù)據(jù)和方法集中在類中面向過(guò)程的封裝, 方法一般不做封裝, 數(shù)據(jù)用Struct封裝, 方法和數(shù)據(jù)分離2、代碼復(fù)用性上面向?qū)ο罄美^承的方式復(fù)用面向過(guò)程只能以普通的函數(shù)

10、復(fù)用任何編程思想或者是方法都不可能獨(dú)立存在。對(duì)于面向過(guò)程與面向?qū)ο笠彩且粯印?此颇銙仐壛嗣嫦蜻^(guò)程,全心全意的應(yīng)用面向?qū)ο螅鋵?shí)很大程度上,都是在二者結(jié)合使用,你不可能把他們區(qū)分的那么細(xì)致,二者之間也沒(méi)有明顯得界限,都是各有所長(zhǎng)。在你應(yīng)用面向?qū)ο蟮倪^(guò)程中,不知不覺(jué)的就用到了面向過(guò)程,畢竟,面向?qū)ο笫墙⒃诿嫦蜻^(guò)程的基礎(chǔ)上的。六、 面向過(guò)程的個(gè)人理解:自從有了面向?qū)ο螅芏嗳硕疾辉敢庠偃ヌ崦嫦蜻^(guò)程,覺(jué)得這個(gè)老古董已經(jīng)一無(wú)是處,做軟件開(kāi)發(fā)有面向?qū)ο缶妥銐蛄?。然而我覺(jué)得事實(shí)上不是這樣的,面向?qū)ο笫窃诿嫦蜻^(guò)程的基礎(chǔ)上發(fā)展起來(lái)的,的確,他有很多面向過(guò)程所沒(méi)有的優(yōu)點(diǎn),就目前來(lái)看,在軟件開(kāi)發(fā)中的應(yīng)用也是相當(dāng)?shù)膹V泛。但決不能因此額抹殺了面向過(guò)程。目前做軟件開(kāi)發(fā)的IT人員很大部分用的都是面向?qū)ο蟮乃枷牒头椒ǎ瑢?duì)于面向過(guò)程,除了做小程序和大師級(jí)軟件工程師追求效率這兩部分人以外已經(jīng)很少有人用了

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論