資源描述:
《面向?qū)ο笈c面向過(guò)程.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、參考資料面向?qū)ο笈c面向過(guò)程——兩種程序設(shè)計(jì)方法的比較與思考1引言目前,程序設(shè)計(jì)方法有兩大類(lèi),一是面向過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì)方法,二是面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。這兩種方法的主要指導(dǎo)思想是什么,各有什么優(yōu)勢(shì)和特點(diǎn),在學(xué)習(xí)和實(shí)用中各存在哪些問(wèn)題。本文想對(duì)這一系列問(wèn)題給出自己的思考。2兩種程序設(shè)計(jì)方法簡(jiǎn)介面向過(guò)程的程序設(shè)計(jì)方法將解決問(wèn)題的重點(diǎn)放在模擬問(wèn)題的過(guò)程方面,它在解決問(wèn)題時(shí)采用功能分解方法,即將一個(gè)系統(tǒng)看作一些功能塊的組合,這些功能塊可以被進(jìn)一步分解,直到參與設(shè)計(jì)和編程的人員可以理解的步驟和過(guò)程為止。功能分解最終產(chǎn)生的模塊和子模塊作為程序構(gòu)成成分的過(guò)程組件。當(dāng)一個(gè)模塊被分解為一系列的子模塊之后,這
2、些子模塊的執(zhí)行過(guò)程可以是順序(一個(gè)子模塊緊接著另一個(gè)子模塊之后執(zhí)行)、選擇(依據(jù)一定的條件執(zhí)行某個(gè)模塊)、循環(huán)(在特定的條件成立時(shí)重復(fù)執(zhí)行某個(gè)子模塊)。面向?qū)ο蟮某绦蛟O(shè)計(jì)方法是通過(guò)為數(shù)據(jù)和代碼建立分塊的內(nèi)存區(qū)域來(lái)提供對(duì)程序進(jìn)行模塊化的一種方法。這些模塊可以被作為樣板在需要時(shí)建立其拷貝。而所謂對(duì)象實(shí)際上是計(jì)算機(jī)內(nèi)存的一塊區(qū)域,通過(guò)將內(nèi)存分塊,每個(gè)對(duì)象在功能上互相之間保持相對(duì)獨(dú)立。這些內(nèi)存塊不但存儲(chǔ)數(shù)據(jù),也儲(chǔ)存代碼,這對(duì)保證對(duì)象是受保護(hù)這一點(diǎn)很重要,只有局部于對(duì)象中的代碼才可以訪問(wèn)存儲(chǔ)于這個(gè)對(duì)象中的數(shù)據(jù),對(duì)象之間只能通過(guò)函數(shù)調(diào)用相互通信。3兩種程序設(shè)計(jì)方法的特點(diǎn)結(jié)構(gòu)化程序設(shè)計(jì)方法的指導(dǎo)思想是提高
3、程序的易讀性和易維護(hù)性,追求結(jié)構(gòu)良好的程序設(shè)計(jì)方法,而結(jié)構(gòu)良好的程序主要體現(xiàn)在三方面:▼具有單入口,單出口的性質(zhì);▼不包含不會(huì)停止執(zhí)行的語(yǔ)句,即執(zhí)行時(shí)間是有限的:▼沒(méi)有無(wú)用語(yǔ)句,即程序中所有語(yǔ)句都有被執(zhí)行的機(jī)會(huì)。結(jié)構(gòu)化程序設(shè)計(jì)方法只允許全部程序均由順序、選擇和循環(huán)三類(lèi)基本結(jié)構(gòu)構(gòu)成。而順序、選擇和循環(huán)都具有結(jié)構(gòu)良好程序的上述三個(gè)主要特征,所以,以這種方法設(shè)計(jì)出來(lái)的程序,實(shí)際上是由許多語(yǔ)句串起來(lái)的順序結(jié)構(gòu),由于每個(gè)語(yǔ)句只有一個(gè)入口,一個(gè)出口,所以來(lái)龍去脈清楚,段落層次分明,即使程序長(zhǎng)一點(diǎn),仍能保持程序易讀性和正確性。3/3面向?qū)ο蟪绦蛟O(shè)計(jì)方法的主要特點(diǎn)是:程序=對(duì)象+消息。面向?qū)ο蟪绦虻幕驹?/p>
4、是對(duì)象。面向?qū)ο蟪绦蛞话阌深?lèi)的定義和類(lèi)的使用兩部分組成。程序中的一切操作都是通過(guò)向?qū)ο蟀l(fā)送相應(yīng)的消息來(lái)實(shí)現(xiàn)的,對(duì)象接收到消息后,啟動(dòng)有關(guān)方法完成相應(yīng)的操作。一個(gè)程序中涉及到的類(lèi),可以由本程序自己定義(即本程序的設(shè)計(jì)者自己定義)也可以使用現(xiàn)成的類(lèi)(包括所用語(yǔ)言系統(tǒng)為用戶提供的類(lèi)庫(kù)中的類(lèi)和他人已定義好的類(lèi)).面向?qū)ο笤O(shè)計(jì)方法還可以有如下幾方面的特點(diǎn):一是可以控制程序的復(fù)雜性,這種方法把有關(guān)數(shù)據(jù)及其上的所有操作集中在一個(gè)個(gè)類(lèi)中,這樣,在程序中任何要訪問(wèn)這些數(shù)據(jù)的地方都只需簡(jiǎn)單地調(diào)用而不需要再重新編碼,這就有效地控制了程序的復(fù)雜性。二是可以增強(qiáng)程序的模塊性。類(lèi)是一種抽象數(shù)據(jù)類(lèi)型,類(lèi)作為一個(gè)程序模塊,
5、要比面向過(guò)程范疇的子程序的獨(dú)立性強(qiáng)得多。三是可以提高程序的重用性。類(lèi)是含有數(shù)據(jù)和程序的獨(dú)立模塊,它完全可以作為一個(gè)大粒度的程序構(gòu)件,供同類(lèi)程序直接使用。特別是,父類(lèi)與子類(lèi)之間的繼承關(guān)系,也構(gòu)成了程序重用的重要方式。四是可以改善程序的可維護(hù)性。由于對(duì)對(duì)象的操作只能通過(guò)消息傳遞來(lái)實(shí)現(xiàn),所以,只要消息模式即對(duì)應(yīng)的方法界面不變,方法體的任何修改不會(huì)導(dǎo)致發(fā)送消息的程序的修改。這顯然對(duì)程序的維護(hù)帶來(lái)了方便。五是能對(duì)現(xiàn)實(shí)世界的分類(lèi)系統(tǒng)進(jìn)行自然的描述,用類(lèi)來(lái)直接描述現(xiàn)實(shí)世界的類(lèi)型,可使計(jì)算機(jī)系統(tǒng)的描述和處理對(duì)象從數(shù)據(jù)擴(kuò)展到現(xiàn)實(shí)世界和思維世界的各種事物,這實(shí)際上大大擴(kuò)展了計(jì)算機(jī)系統(tǒng)的描述和處理范圍。4兩種程序
6、設(shè)計(jì)方法在學(xué)習(xí)和實(shí)用中的存在問(wèn)題面向過(guò)程程序設(shè)計(jì)方法存在一些固有的缺陷,主要表現(xiàn)在:l)程序的可重用性差現(xiàn)在的應(yīng)用程序變得越來(lái)越大,越來(lái)越復(fù)雜.但其中有很多重復(fù)性的工作,代碼重用成為提高效率的關(guān)鍵。采用面向過(guò)程的程序設(shè)計(jì)方法,每次程序員進(jìn)行一個(gè)新系統(tǒng)的開(kāi)發(fā),幾乎都要從零開(kāi)始,并且要針對(duì)具體問(wèn)題做大量重復(fù)而繁瑣的工作。即使代碼重用,也只能進(jìn)行簡(jiǎn)單的拷貝,若稍有不同的話,就必須一行一行的修改。這種方法不能直接繼承引用已編好的應(yīng)用程序的某些部分。2)程序的數(shù)據(jù)與操作相分離面向過(guò)程的程序設(shè)計(jì)方法,其程序的數(shù)據(jù)和有關(guān)操作是分開(kāi)的,而且對(duì)同一數(shù)據(jù)的操作往往分散在程序的各處,如果一個(gè)或多個(gè)數(shù)據(jù)的結(jié)構(gòu)發(fā)生了
7、變化,那么這種變化將波及程序的很多部分甚至整個(gè)程序,致使許多函數(shù)和過(guò)程必須重寫(xiě),嚴(yán)重時(shí)會(huì)導(dǎo)致整個(gè)軟件結(jié)構(gòu)的崩潰。3)數(shù)據(jù)處理范圍較小計(jì)算機(jī)的應(yīng)用領(lǐng)域已從數(shù)值計(jì)算擴(kuò)展到人類(lèi)社會(huì)的各個(gè)方面,所需要處理的數(shù)據(jù)已從簡(jiǎn)單數(shù)字和字符發(fā)展為具有多種格式的多媒體數(shù)據(jù),如文本,圖形,圖像,影像,聲音等。面向過(guò)程程序設(shè)計(jì)方法所能描述的數(shù)據(jù)類(lèi)型已無(wú)法應(yīng)付,數(shù)據(jù)量的增大和程序規(guī)模的日益龐大也使面向過(guò)程的程序設(shè)計(jì)方法有更多地方顯示出局