




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人股份轉(zhuǎn)讓協(xié)議書(shū)
- 勞務(wù)合同到期不續(xù)簽
- 信息管理系統(tǒng)建設(shè)及維護(hù)合同
- 石油鉆井服務(wù)合同
- 房屋委托租賃居間服務(wù)合同
- 大型挖掘機(jī)買(mǎi)賣(mài)合同
- 綜合辦公服務(wù)合同
- 雙11策劃活動(dòng)方案模板
- 公司內(nèi)部借款協(xié)議
- 連鎖餐飲企業(yè)加盟合同
- 文學(xué)類(lèi)文本閱讀(理解賞析類(lèi))-2025年北京高考語(yǔ)文一輪總復(fù)習(xí)(原卷版)
- 北京某中學(xué)2024-2025學(xué)年九年級(jí)上學(xué)期開(kāi)學(xué)考數(shù)學(xué)試卷
- Unit 5 Section B(2a-2c)教學(xué)設(shè)計(jì)2023-2024學(xué)年人教版七年級(jí)英語(yǔ)下冊(cè)
- 三下 第11課 《在線學(xué)習(xí)工具》教案 浙教版2023信息科技
- 2024年高考真題-英語(yǔ)(新高考Ⅱ卷) 含解析
- 【萬(wàn)通地產(chǎn)償債能力存在的問(wèn)題及優(yōu)化建議(數(shù)據(jù)論文)11000字】
- 吉利收購(gòu)沃爾沃商務(wù)談判案例分析
- JGJ/T235-2011建筑外墻防水工程技術(shù)規(guī)程
- 信息科技課的跨學(xué)科主題學(xué)習(xí)PP義務(wù)教育課程方案和課程標(biāo)準(zhǔn)國(guó)家級(jí)示范培訓(xùn)課件
- 人教版PEP五年級(jí)英語(yǔ)下冊(cè)單詞表與單詞字帖 手寫(xiě)體可打印
- 第七節(jié)碎石路基施工方案
評(píng)論
0/150
提交評(píng)論