資源描述:
《面向?qū)ο笈c面向過(guò)程程序設(shè)計(jì)方法的比較》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、面向?qū)ο笈c面向過(guò)程程序設(shè)計(jì)方法的比較摘要:區(qū)別于一般講述面向?qū)ο蠹夹g(shù)的文章,本文系統(tǒng)地比較了面向?qū)ο蠹夹g(shù)和面向過(guò)程技術(shù)的異同,并著重介紹面向?qū)ο蠹夹g(shù)以及它的封裝、繼承和多態(tài)三個(gè)特點(diǎn),讓讀者對(duì)面向?qū)ο笥幸粋€(gè)形象的理解。然后通過(guò)比較和舉例,文章分析了OO技術(shù)在軟件工程中的三大優(yōu)勢(shì)。Abstract:Beingdifferentfromgeneralarticlesaboutobject-orientedtechnology,thispapersystematicallycomparedtheobject-orie
2、ntedtechnologyandtheprocess-orientedtechnology,andmainlyintroducestheobject-orientedtechnologyanditsthreecharacteristics:packaging,inheritanceandpolymorphism,tomakethereaderhaveanimageofunderstandingofobject-oriented.Thenthroughthecomparisonandsomeexamples,
3、thispaperanalyzestheOObasedsoftwareengineeringinthreepoints.關(guān)鍵字:面向?qū)ο竺嫦蜻^(guò)程軟件工程Keywords:Object-OrientedProcess-OrientedSoftware-Engineering一引言20世紀(jì)60年代中期開(kāi)始爆發(fā)的軟件危機(jī),使人們認(rèn)識(shí)到大中型軟件系統(tǒng)與小型軟件系統(tǒng)的本質(zhì)區(qū)別,軟件工程以及面向?qū)ο缶幊蹋∣bject-OrientedProgramming)技術(shù)得以應(yīng)運(yùn)而生。從最初的SIMULA到如今的C++、JAVA和
4、C#,面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言已發(fā)展為當(dāng)前最流行的程序設(shè)計(jì)語(yǔ)言。談到面向?qū)ο?,一個(gè)不能回避的問(wèn)題是面向過(guò)程的程序設(shè)計(jì)思想。作為一種常用的面向?qū)ο笳Z(yǔ)言,C++自C語(yǔ)言發(fā)展而來(lái),是一種混合型面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它既支持面向?qū)ο笥种С置嫦蜻^(guò)程。面向?qū)ο笈c面向過(guò)程雖然在設(shè)計(jì)理念上截然相反,前者是自底向上而后者是自頂向下的,但它倆仍有眾多的相似之處。只有建立在深入理解二者的關(guān)系的基礎(chǔ)上,我們才算是真正駕馭了面向?qū)ο笈c面向過(guò)程技術(shù),以便在未來(lái)將它們熟練地運(yùn)用于學(xué)習(xí)和生活中。二面向過(guò)程的程序設(shè)計(jì)方法著名的計(jì)算機(jī)科學(xué)家Nik
5、iklausWirth提出了一個(gè)公式:程序=算法+數(shù)據(jù)結(jié)構(gòu)。這個(gè)公式很好地詮釋了面向過(guò)程程序設(shè)計(jì)方法的核心思想——算法和數(shù)據(jù)。更加具體地說(shuō),面向過(guò)程的程序設(shè)計(jì)方法稱(chēng)為功能分解,即自頂向下。以?xún)蓚€(gè)人下五子棋為例,面向過(guò)程的設(shè)計(jì)方法是先決定二人中誰(shuí)先手,然后是先手者下一子,判斷游戲是否結(jié)實(shí),后手者下一子,判斷游戲是否結(jié)束??可以看到無(wú)論是猜先、落子還是最后的判勝負(fù),它們都是一場(chǎng)五子棋游戲中不能再分割的邏輯單位。程序員的工作是將這些最底層的功能進(jìn)行編碼并測(cè)試,然后將這些功能自底向上裝配在一起,直到得到一個(gè)完整功能的
6、應(yīng)用程序。在這種體系中,我們的著眼點(diǎn)是一個(gè)個(gè)最基本的功能,數(shù)據(jù)是為了實(shí)現(xiàn)這些功能而設(shè)計(jì)的,它是后于功能的。當(dāng)問(wèn)題的規(guī)模不大時(shí),面向過(guò)程的設(shè)計(jì)方法因其邏輯關(guān)系明確,實(shí)現(xiàn)簡(jiǎn)單而備受程序員們的青睞。但是當(dāng)問(wèn)題規(guī)模擴(kuò)大到大中型軟件時(shí),一個(gè)項(xiàng)目的代碼量不是一個(gè)人可以單獨(dú)完成的。小組的分工與合作成為解決代碼量大的方法,但是這又向程序員之間的配合提出了新的挑戰(zhàn),同時(shí)數(shù)據(jù)共用導(dǎo)致的不安全、代碼重用率低等問(wèn)題也阻礙著面向過(guò)程的方法在大型軟件工程中的發(fā)展。這便是前文中提到的軟件危機(jī)。三面向?qū)ο蟮某绦蛟O(shè)計(jì)方法區(qū)別與面向過(guò)程的“先功
7、能后數(shù)據(jù)”思想,面向?qū)ο蟮某绦蛟O(shè)計(jì)方法把狀態(tài)(數(shù)據(jù))和行為(功能)捆綁在一起,形成了對(duì)象。當(dāng)遇到一個(gè)具體的問(wèn)題時(shí),我們只需要將一個(gè)系統(tǒng)分解成一個(gè)個(gè)的對(duì)象,同時(shí)將狀態(tài)和行為封裝在對(duì)象中。此時(shí)我們回過(guò)頭再考慮五子棋游戲,作為一個(gè)系統(tǒng),它可以被我們分解成若干對(duì)象,一種思路是分成棋盤(pán)、棋子和玩家三類(lèi)?;蛟S在這個(gè)簡(jiǎn)單的例子中,OO的優(yōu)勢(shì)并不明顯,但是在一些大型的系統(tǒng)中,第二種解題思路會(huì)清晰得多。人們總結(jié)了面向?qū)ο蟮娜齻€(gè)基本特點(diǎn):封裝、繼承和多態(tài)。1封裝封裝是一個(gè)用來(lái)指代將對(duì)象的狀態(tài)和行為捆綁到一個(gè)單一邏輯單元的機(jī)制的正
8、式術(shù)語(yǔ)。它不是面向?qū)ο笳Z(yǔ)言所特有的,面向過(guò)程的C語(yǔ)言用結(jié)構(gòu)封裝了數(shù)據(jù),函數(shù)封裝了邏輯。但是面向?qū)ο蠓庋b了兩者,從這種意義上來(lái)說(shuō),面向?qū)ο蟮姆庋b更加完美。出于一些安全性與方便性的考慮,對(duì)象經(jīng)常會(huì)限制對(duì)它們特征(包括屬性和方法)的訪問(wèn),這種限制稱(chēng)為信息隱藏。作為對(duì)象的抽象,類(lèi)通常只公開(kāi)對(duì)象可以公開(kāi)的東西,主要是一個(gè)特定對(duì)象對(duì)系統(tǒng)的服務(wù),而隱藏執(zhí)行服務(wù)的內(nèi)部細(xì)節(jié)和為了完成這些服務(wù)而設(shè)計(jì)的數(shù)據(jù)。注意這不是說(shuō)