面向過(guò)程與面向?qū)ο骭第1頁(yè)
面向過(guò)程與面向?qū)ο骭第2頁(yè)
面向過(guò)程與面向?qū)ο骭第3頁(yè)
面向過(guò)程與面向?qū)ο骭第4頁(yè)
面向過(guò)程與面向?qū)ο骭第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2021-8-41 疑惑之源l 面向過(guò)程與面向?qū)ο笥泻萎愅琹 面向?qū)ο蟪绦蛟O(shè)計(jì)方法是否將取代面向過(guò)程 尋根究底l 從概念上詮釋l 從實(shí)際問(wèn)題中剖析 茅塞頓開(kāi)l 兩者之間相輔相成2021-8-42l面向過(guò)程與面向?qū)ο笥泻萎愅嫦蜻^(guò)程與面向?qū)ο笥泻萎愅?你是否曾一直在苦苦糾結(jié)面向?qū)ο螅╫bject-oriented)與面向過(guò)程(procedure-oriented)的根本區(qū)別區(qū)別是什么?的確,在以前的學(xué)習(xí)過(guò)程中,我們首先接觸到的是面向過(guò)程的編程語(yǔ)言面向過(guò)程的編程語(yǔ)言,例如:C語(yǔ)言,之后我們相繼開(kāi)始了解面向?qū)ο蟮木幊陶Z(yǔ)言面向?qū)ο蟮木幊陶Z(yǔ)言,例如:C+、JAVA。但是,我們時(shí)常會(huì)在學(xué)習(xí)了面向?qū)ο蟮木幊?/p>

2、語(yǔ)言后,而設(shè)計(jì)出面向過(guò)程的軟件的局面,致使我們陷入迷茫。l面向?qū)ο蟪绦蛟O(shè)計(jì)方法是否將取代面向過(guò)程面向?qū)ο蟪绦蛟O(shè)計(jì)方法是否將取代面向過(guò)程 2021-8-43 20世紀(jì)80年代提出面向?qū)ο蟮某绦蛟O(shè)計(jì)方法之后,對(duì)于程序設(shè)計(jì)的面向?qū)ο蠛兔嫦蜻^(guò)程兩種方法,大部分教材偏重于討論他們的區(qū)別,產(chǎn)生兩種方法是對(duì)立偏重于討論他們的區(qū)別,產(chǎn)生兩種方法是對(duì)立的,互無(wú)關(guān)聯(lián)的的想法大有人在,似乎有了面向的,互無(wú)關(guān)聯(lián)的的想法大有人在,似乎有了面向?qū)ο蠹夹g(shù),就可以不用面向過(guò)程。對(duì)象技術(shù),就可以不用面向過(guò)程。 實(shí)際上,面向?qū)ο蟮募夹g(shù)是在面向過(guò)程的基實(shí)際上,面向?qū)ο蟮募夹g(shù)是在面向過(guò)程的基礎(chǔ)上,為程序設(shè)計(jì)提供了更多的手段和方法,兩

3、礎(chǔ)上,為程序設(shè)計(jì)提供了更多的手段和方法,兩種技術(shù)不是非彼即此的對(duì)立關(guān)系,不能說(shuō)面向?qū)ΨN技術(shù)不是非彼即此的對(duì)立關(guān)系,不能說(shuō)面向?qū)ο蟮募夹g(shù)取代了面向過(guò)程象的技術(shù)取代了面向過(guò)程,如果用面向?qū)ο蟮募夹g(shù)就要把一個(gè)軟件任務(wù)劃分成兩個(gè)層次,那么面向?qū)ο蠹夹g(shù)面向?qū)ο蠹夹g(shù)是解決第一個(gè)層次的問(wèn)題,面向過(guò)程是解決第二是解決第一個(gè)層次的問(wèn)題,面向過(guò)程是解決第二個(gè)層次的問(wèn)題個(gè)層次的問(wèn)題,只有在兩個(gè)層次上的任務(wù)都完成之后,才能說(shuō)完成了整個(gè)程序設(shè)計(jì)任務(wù)。2021-8-44l從概念上詮釋從概念上詮釋 何謂面向過(guò)程的程何謂面向過(guò)程的程序設(shè)計(jì)?序設(shè)計(jì)? 面向過(guò)程面向過(guò)程就是分析出解決問(wèn)題所需要的步驟步驟,然后用函數(shù)逐步調(diào)用函數(shù)逐

4、步調(diào)用就可以一步一步實(shí)現(xiàn),即面向過(guò)程化程序設(shè)計(jì)是先確定算法,再確先確定算法,再確定數(shù)據(jù)結(jié)構(gòu)定數(shù)據(jù)結(jié)構(gòu)。如圖1所示圖1 結(jié)構(gòu)化程序2021-8-45 何謂面向?qū)ο蟮某绦蚝沃^面向?qū)ο蟮某绦蛟O(shè)計(jì)設(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)是面向問(wèn)題中的各種獨(dú)立問(wèn)題中的各種獨(dú)立個(gè)體個(gè)體,程序的分析設(shè)計(jì)過(guò)程就是將程序分解成不同對(duì)象之間的交互的過(guò)程。將數(shù)據(jù)將數(shù)據(jù)( (成員數(shù)成員數(shù)據(jù)據(jù)) )及處理這些數(shù)據(jù)及處理這些數(shù)據(jù)的相應(yīng)函數(shù)的相應(yīng)函數(shù)( (成員函成員函數(shù)數(shù)) )封裝到一個(gè)類(lèi)封裝到一個(gè)類(lèi)(Class)(Class)中中,而使用類(lèi)的數(shù)據(jù)變量則稱(chēng)為對(duì)象(Object) , 如圖2所示圖2 類(lèi)與對(duì)象2021-8-46 相比較,面向過(guò)程

5、面向過(guò)程的程序上一步和下一步環(huán)環(huán)相環(huán)環(huán)相扣扣,設(shè)計(jì)人員只考慮實(shí)現(xiàn)客戶的需求不考慮以后只考慮實(shí)現(xiàn)客戶的需求不考慮以后擴(kuò)展擴(kuò)展,一旦客戶的需求有變化,那代碼量要改變非常大,耗費(fèi)的時(shí)間也相當(dāng)多。從本質(zhì)上說(shuō),面向過(guò)程基本上是一種狀態(tài)機(jī),不利于修改不利于修改,當(dāng)新?tīng)顟B(tài)出現(xiàn)的時(shí)候,甚至可能需要重設(shè)每一個(gè)狀態(tài)解決實(shí)現(xiàn)。所以說(shuō)面向過(guò)程是一種直接的編程方法,它是按照編程語(yǔ)言的思路考慮問(wèn)題。以C語(yǔ)言為例,它就是通過(guò)順序執(zhí)行一組語(yǔ)句來(lái)實(shí)現(xiàn)一個(gè)功能,這些語(yǔ)句的執(zhí)行過(guò)程就是整個(gè)程序。 而面向?qū)ο竺嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)許多東西都是獨(dú)立獨(dú)立的,每個(gè)對(duì)象都可以重復(fù)使用。面向?qū)ο蟪绦蛟O(shè)計(jì)強(qiáng)調(diào)強(qiáng)調(diào)“封封裝裝”,“繼承繼承”和和“多態(tài)

6、多態(tài)”。數(shù)據(jù)和數(shù)據(jù)相關(guān)的操作被包裝成對(duì)象(嚴(yán)格地說(shuō)是“類(lèi)”),每個(gè)對(duì)象是完全完整和獨(dú)立的。對(duì)象可以有派生的類(lèi)型,派生的類(lèi) 2021-8-47 型可以覆蓋(或重載)原有的操作。所有這些,是為了達(dá)到更好的內(nèi)聚性內(nèi)聚性,即一種對(duì)象做好一件事情,對(duì)象內(nèi)部的細(xì)節(jié)外面世界不關(guān)心也看不到;同時(shí)不同種類(lèi)的對(duì)象之間的依賴(lài)性降低,這將降低耦合性低耦合性,而所有這些都有助于達(dá)成一個(gè)崇高的目標(biāo),就是可重用性可重用性。2021-8-48 面向過(guò)程編程面向過(guò)程編程的程序員,習(xí)慣于建立數(shù)據(jù)結(jié)建立數(shù)據(jù)結(jié)構(gòu)構(gòu)存放數(shù)據(jù)并定義方法(函數(shù))來(lái)操作數(shù)據(jù);而面向面向?qū)ο缶幊虒?duì)象編程的程序員則構(gòu)造一個(gè)對(duì)象模型構(gòu)造一個(gè)對(duì)象模型,將數(shù)據(jù)將數(shù)據(jù)

7、與方法組織在一起與方法組織在一起。以計(jì)算長(zhǎng)方形的周長(zhǎng)和面積為例n 面向過(guò)程的程序設(shè)計(jì)方式思考:1、確定長(zhǎng)方形的周長(zhǎng)和面積的算法;2、編寫(xiě)兩個(gè)方法(函數(shù))分別計(jì)算長(zhǎng)方形的周長(zhǎng)和面積;3、求周長(zhǎng)的方法(函數(shù))和求面積的方法(函數(shù))需要兩個(gè)參數(shù),分別是長(zhǎng)方形的長(zhǎng)和寬。 C語(yǔ)言中源代碼示例如下:2021-8-49#includeint main() void Perimeter(double x, double y); void Area(double x, double y); double a,b,p,s; cina; cinb; p=Perimeter(a,b); s=Area(a,b); co

8、ut“長(zhǎng)方形的周長(zhǎng)是:”pendl; cout“長(zhǎng)方形的面積是:”sendl; return 0;調(diào)用函數(shù)參數(shù)2021-8-410int Perimeter(int x, int y) return 2*(x+y);int Area(int x, int y) return x*y;被調(diào)函數(shù)的實(shí)現(xiàn)2021-8-411n面向?qū)ο蟮某绦蛟O(shè)計(jì)方式思考:1、一個(gè)長(zhǎng)方形可以看成一個(gè)長(zhǎng)方形對(duì)象(類(lèi));2、一個(gè)長(zhǎng)方形對(duì)象有兩個(gè)屬性(長(zhǎng)和寬)和兩個(gè)行為(求周長(zhǎng)和求面積);3、將所有長(zhǎng)方形的共性抽取出來(lái),設(shè)計(jì)一個(gè)長(zhǎng)方形的類(lèi);4、通過(guò)長(zhǎng)方形對(duì)象的行為,就可以求出某個(gè)具體的長(zhǎng)方形對(duì)象的周長(zhǎng)和面積。C+中源代碼示例如

9、下:class Retangle private: double a,b; /數(shù)據(jù)成員,即對(duì)象的屬性 public:2021-8-412Retangle(double x, double y);double Perimeter();double Area(); ;#includeusing namespace std;int main() Rectangle obj(1.0,2.0); coutobj.Perimeter()endl; coutobj.Area()endl; return 0;成員函數(shù),即對(duì)對(duì)象的操作2021-8-413Retangle:Retangle(double x, d

10、ouble y) a=x; b=y;double Perimeter:Retangle() return 2*(a+b);double Area:Retangle() return a*b;成員函數(shù)的具體實(shí)現(xiàn)2021-8-414l兩者之間相輔相成兩者之間相輔相成 面向?qū)ο蟮募夹g(shù)是在面向過(guò)程的自頂向下面向?qū)ο蟮募夹g(shù)是在面向過(guò)程的自頂向下逐步求精最終將軟件分解成為具有三種控制結(jié)逐步求精最終將軟件分解成為具有三種控制結(jié)構(gòu)的若干方法過(guò)程或函數(shù)基礎(chǔ)之上,又提供了構(gòu)的若干方法過(guò)程或函數(shù)基礎(chǔ)之上,又提供了抽象、封裝、繼承、多態(tài)技術(shù)手段。抽象、封裝、繼承、多態(tài)技術(shù)手段。 面向?qū)ο蟮脑O(shè)計(jì)包含了面向過(guò)程,面向?qū)ο蟊让嫦蜻^(guò)程站到了一個(gè)更高的層次上,主要進(jìn)行總體結(jié)構(gòu)??傮w結(jié)

溫馨提示

  • 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)論