面向?qū)ο蟮膬?yōu)缺點(diǎn)_第1頁(yè)
面向?qū)ο蟮膬?yōu)缺點(diǎn)_第2頁(yè)
面向?qū)ο蟮膬?yōu)缺點(diǎn)_第3頁(yè)
面向?qū)ο蟮膬?yōu)缺點(diǎn)_第4頁(yè)
面向?qū)ο蟮膬?yōu)缺點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(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)介

面向?qū)ο蟮膬?yōu)缺點(diǎn)什么是面向?qū)ο蟪绦蛟O(shè)計(jì)?面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)技術(shù)汲取了結(jié)構(gòu)化程序設(shè)計(jì)中的好的思想,并將這些思想與一些新的,強(qiáng)大的理念相結(jié)合,從而給你的程序設(shè)計(jì)工作提供了一種全新的方法。通常,在面向?qū)ο蟮某绦蛟O(shè)計(jì)風(fēng)格中,你會(huì)將一個(gè)問(wèn)題分解為一些相互關(guān)聯(lián)的子集,每個(gè)子集內(nèi)部都包括了相關(guān)的數(shù)據(jù)和函數(shù)。同時(shí),你會(huì)以某種方法將這些子集分為不同等級(jí),而一個(gè)對(duì)象就是已定義的某個(gè)類型的變量。當(dāng)你定義了一個(gè)對(duì)象,你就隱含的創(chuàng)建了一個(gè)新的數(shù)據(jù)類型。面向?qū)ο蟪绦蛟O(shè)計(jì)模式發(fā)明面向?qū)ο蟪绦蛟O(shè)計(jì)方法的主要出發(fā)點(diǎn)是彌補(bǔ)面向過(guò)程程序設(shè)計(jì)方法中的一些缺點(diǎn)。OOP把數(shù)據(jù)看作程序開(kāi)發(fā)中的基本元素,并且不允許它們?cè)谙到y(tǒng)中自由流動(dòng)。它將數(shù)據(jù)和操作這些數(shù)據(jù)的函數(shù)緊密的連結(jié)在一起,并保護(hù)數(shù)據(jù)不會(huì)被外界的函數(shù)意外的改變。OOP允許我們將問(wèn)題分解為一系列實(shí)體一一這些實(shí)體被稱為對(duì)象(object),然后圍繞這些實(shí)體建立數(shù)據(jù)和函數(shù)。一、 使用面向?qū)ο笏枷腴_(kāi)發(fā)的優(yōu)點(diǎn):1、 易維護(hù)采用面向?qū)ο笏枷朐O(shè)計(jì)的結(jié)構(gòu),可讀性高,由于繼承的存在,即使改變需求,那么維護(hù)也只是在局部模塊,所以維護(hù)起來(lái)是非常方便和較低成本的。2、 質(zhì)量高在設(shè)計(jì)時(shí),可重用現(xiàn)有的,在以前的項(xiàng)目的領(lǐng)域中已被測(cè)試過(guò)的類使系統(tǒng)滿足業(yè)務(wù)需求并具有較高的質(zhì)量。3、 效率高在軟件開(kāi)發(fā)時(shí),根據(jù)設(shè)計(jì)的需要對(duì)現(xiàn)實(shí)世界的事物進(jìn)行抽象,產(chǎn)生類。使用這樣的方法解決問(wèn)題,接近于日常生活和自然的思考方式,勢(shì)必提高軟件開(kāi)發(fā)的效率和質(zhì)量。4、 易擴(kuò)展由于繼承、封裝、多態(tài)的特性,自然設(shè)計(jì)出高內(nèi)聚、低耦合的系統(tǒng)結(jié)構(gòu),使得系統(tǒng)更靈活、更容易擴(kuò)展,而且成本較低。缺點(diǎn):類和繼承等特點(diǎn)使得程序會(huì)多很多指針操作來(lái)定位函數(shù)入口和自身要維護(hù)虛擬方法表等額外的工作,程序的處理效率相對(duì)要低(但程序開(kāi)發(fā)效率高】所以現(xiàn)在單純的C語(yǔ)言還是大為用武之地的。但隨著科技的進(jìn)步,CPU和內(nèi)存的性能也突發(fā)猛進(jìn)。由原來(lái)的1核到8核,內(nèi)存16M和現(xiàn)在的16G,所以程序的效率多多少少會(huì)隨著硬件的性能變得更好。你可以發(fā)現(xiàn)很多大的項(xiàng)目也開(kāi)始由C轉(zhuǎn)而變成讓C++和JAVA等面向?qū)ο髞?lái)寫了。二、 面向?qū)ο蟮奶攸c(diǎn)和優(yōu)缺點(diǎn):1、特點(diǎn)利用特定軟件直接從對(duì)象客體的描述到軟件結(jié)構(gòu)的轉(zhuǎn)換。解決了傳統(tǒng)結(jié)構(gòu)化方法中客觀世界描述工具與軟件結(jié)構(gòu)的不一致性。減少了從系統(tǒng)分析、設(shè)計(jì)到軟件模塊結(jié)構(gòu)之間的多次轉(zhuǎn)換映射的繁雜過(guò)程。2、OO方法優(yōu)缺點(diǎn)優(yōu)點(diǎn):是一種全新的系統(tǒng)分析設(shè)計(jì)方法(對(duì)象、類、結(jié)構(gòu)屬性、方法)。適用于各類信息系統(tǒng)的開(kāi)發(fā)。實(shí)現(xiàn)了對(duì)客觀世界描述到軟件結(jié)構(gòu)的直接轉(zhuǎn)換,大大減少后續(xù)軟件開(kāi)發(fā)量。開(kāi)發(fā)工作的重用性、繼承性高,降低重復(fù)工作量。縮短了開(kāi)發(fā)周期。缺點(diǎn):需要一定的軟件支持環(huán)境。不太適宜大型的MIS開(kāi)發(fā),若缺乏整體系統(tǒng)設(shè)計(jì)劃分,易造成系統(tǒng)結(jié)構(gòu)不合理、各部分關(guān)系失調(diào)等問(wèn)題。只能在現(xiàn)有業(yè)務(wù)基礎(chǔ)上進(jìn)行分類整理,不能從科學(xué)管理角度進(jìn)行理順和優(yōu)化。(4)初學(xué)者不易接受、難學(xué)。三、面向?qū)ο缶幊痰膬?yōu)缺點(diǎn):1、優(yōu)點(diǎn):通過(guò)繼承,我們可以大幅減少多余的代碼,并擴(kuò)展現(xiàn)有代碼的用途。我們可以在標(biāo)準(zhǔn)的模塊上構(gòu)建我們的程序,而不必一切從頭開(kāi)始。這可以減少軟件開(kāi)發(fā)時(shí)間并提高生產(chǎn)率。數(shù)據(jù)隱藏的概念幫助程序員保護(hù)程序免受外部代碼的侵襲。容許一個(gè)對(duì)象的多個(gè)實(shí)現(xiàn)同時(shí)存在,而且彼此之間不會(huì)相互干擾。容許將問(wèn)題中的對(duì)象直接映射到程序中?;趯?duì)象的工程可以很容易的分割為獨(dú)立的部分。以數(shù)據(jù)為中心的設(shè)計(jì)方法容許我們抓住可實(shí)現(xiàn)的更多細(xì)節(jié)。面向?qū)ο蟪绦虻南到y(tǒng)很容易從小到大逐步升級(jí)。對(duì)象間通訊所使用的消息傳遞技術(shù)與外部系統(tǒng)接口部分的描述更簡(jiǎn)單。更便于控制軟件的復(fù)雜度。面向?qū)ο蠓椒▽W(xué)把分析、設(shè)計(jì)和實(shí)現(xiàn)很自然地聯(lián)系在一起了。雖然面向?qū)ο笤O(shè)計(jì)原則上不依賴于特定的實(shí)現(xiàn)環(huán)境,但是實(shí)現(xiàn)結(jié)果和實(shí)現(xiàn)成本卻在很大程度上取決于實(shí)現(xiàn)環(huán)境。因此,直接支持面向?qū)ο笤O(shè)計(jì)范式的面向?qū)ο蟪绦蛘Z(yǔ)言、開(kāi)發(fā)環(huán)境及類庫(kù),對(duì)于面向?qū)ο髮?shí)現(xiàn)來(lái)說(shuō)是非常重要的。為了把面向?qū)ο笤O(shè)計(jì)結(jié)果順利地轉(zhuǎn)變成面向?qū)ο蟪绦颍紫葢?yīng)該選擇一種適當(dāng)?shù)某绦蛟O(shè)計(jì)語(yǔ)言。面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言適合用來(lái)實(shí)現(xiàn)面向?qū)ο笤O(shè)計(jì)結(jié)果。事實(shí)上,具有方便的開(kāi)發(fā)環(huán)境和豐富的類庫(kù)的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,是實(shí)現(xiàn)面向?qū)ο笤O(shè)計(jì)的最佳選擇。良好的程序設(shè)計(jì)風(fēng)格對(duì)于面向?qū)ο髮?shí)現(xiàn)來(lái)說(shuō)格外重要。它既包括傳統(tǒng)的程序設(shè)計(jì)風(fēng)格準(zhǔn)則,也包括與面向?qū)ο蠓椒ǖ奶攸c(diǎn)相適應(yīng)的一些新準(zhǔn)則。面向?qū)ο蠓椒▽W(xué)使用獨(dú)特的概念和完成軟件開(kāi)發(fā)工作,因此,在測(cè)試面向?qū)ο蟪绦虻臅r(shí)候,除了繼承傳統(tǒng)的測(cè)試技術(shù)之外,還必須研究與面向?qū)ο蟪绦蛱攸c(diǎn)相適應(yīng)的新的測(cè)試技術(shù)。在這方面需要做的研究工作還很多,目前已逐漸成為國(guó)內(nèi)外軟件工程界研究的一個(gè)新的熱門課題。面向過(guò)程的優(yōu)缺點(diǎn)“面向過(guò)程”(ProcedureOriented)是一種以過(guò)程為中心的編程思想?!懊嫦蜻^(guò)程”也可稱之為“面向記錄”編程思想,他們不支持豐富的“面向?qū)ο蟆碧匦裕ū热缋^承、多態(tài)),并且它們不允許混合持久化狀態(tài)和域邏輯。就是分析出解決問(wèn)題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。面向過(guò)程其實(shí)是最為實(shí)際的一種思考方式,就是算面向?qū)ο蟮姆椒ㄒ彩呛忻嫦蜻^(guò)程的思想.可以說(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ò)程擬為。⑴起床(2)穿衣⑶洗臉?biāo)⒀愧热W(xué)校而這4步就是一步一步的完成,它的順序很重要,你只須一個(gè)一個(gè)的實(shí)現(xiàn)就行了.而如果是用面向?qū)ο蟮姆椒ǖ脑挘赡芫椭怀橄蟪鲆粋€(gè)學(xué)生的類,它包括這四個(gè)方法,但是具體的順序就不能體現(xiàn)出來(lái)。1、面向?qū)ο笙鄬?duì)面向過(guò)程的優(yōu)點(diǎn)(1) 結(jié)構(gòu)清晰。使人們的編程與實(shí)際的世界更加接近,所有的對(duì)象被賦予屬性和方法,結(jié)果編程就更加富有人性化。(2) 封裝性。減小外部對(duì)內(nèi)部的影響。封裝將對(duì)象有關(guān)的數(shù)據(jù)和行為封裝成整體來(lái)處理,使得對(duì)象以外的部分不能隨意存取對(duì)象的內(nèi)部屬性,從而有效地避免了外部錯(cuò)誤對(duì)它的影響,大大減小了查錯(cuò)和排錯(cuò)的難度。(3)容易擴(kuò)展,代碼重用率高。容易擴(kuò)展,在大框架不變的情況下很容易就開(kāi)發(fā)出適合自己的功能,實(shí)現(xiàn)簡(jiǎn)單,可有效地減少程序的維護(hù)工作量,軟件開(kāi)發(fā)效率高。2、 面向?qū)ο笙鄬?duì)面向過(guò)程的缺點(diǎn)增加工作量。如果一味地強(qiáng)調(diào)封裝,當(dāng)進(jìn)行修改對(duì)象內(nèi)部時(shí),對(duì)象的任何屬性都不允許外部直接存取,則要增加許多沒(méi)有其他意義、只負(fù)責(zé)讀或?qū)懙男袨?。這會(huì)為編程工作增加負(fù)擔(dān),增加運(yùn)行開(kāi)銷,并且使程序顯得臃腫。性能低。由于面向更高的邏輯抽象層,使得面向?qū)ο笤趯?shí)現(xiàn)的時(shí)候,不得不做出性能上面的犧牲,計(jì)算時(shí)間和空間存儲(chǔ)大小的都開(kāi)銷很大。3、 舉例面向?qū)ο蟮膬?yōu)點(diǎn)舉例:如象棋程序,比如我要加入悔棋的功能,如果面向過(guò)程設(shè)計(jì)的話,那么從輸入到判斷到顯示這一連串的步驟都要改動(dòng),甚至步驟之間的循序都要進(jìn)行大規(guī)模調(diào)整。如果是面向?qū)ο蟮脑?,只用改?dòng)棋盤對(duì)象就行了,棋盤系統(tǒng)保存了紅黑雙方的棋譜,簡(jiǎn)單回溯就可以了,而顯示和規(guī)則判斷則不用顧及,同時(shí)整個(gè)對(duì)對(duì)象功能的調(diào)用順序都沒(méi)有變化,改動(dòng)只是局部的。面向?qū)ο蟮娜秉c(diǎn)舉例:如技術(shù)類開(kāi)放問(wèn)題2的留言板系統(tǒng),當(dāng)設(shè)計(jì)一個(gè)留言板系統(tǒng),要求滿足記錄數(shù)每日新增10萬(wàn)條和查詢量100萬(wàn),如果每一個(gè)數(shù)據(jù)交換過(guò)程都是一個(gè)對(duì)象,那么總的性能損失將是天文數(shù)字。泛型編程思想什么是泛型編程思想:泛型編程(GenericProgramming)最初提出時(shí)的動(dòng)機(jī)很簡(jiǎn)單直接:發(fā)明一種語(yǔ)言機(jī)制,能夠幫助實(shí)現(xiàn)一個(gè)通用的標(biāo)準(zhǔn)容器庫(kù)。所謂通用的標(biāo)準(zhǔn)容器庫(kù),就是要能夠做到,比如用一個(gè)List類存放所有可能類型的對(duì)象這樣的事;泛型編程讓你編寫完全一般化并可重復(fù)使用的算法,其效率與針對(duì)某特定數(shù)據(jù)類型而設(shè)計(jì)的算法相同。泛型即是指具有在多種數(shù)據(jù)類型上皆可操作的含意,與模板有些相似。STL巨大,而且可以擴(kuò)充,它包含很多計(jì)算機(jī)基本算法和數(shù)據(jù)結(jié)構(gòu),而且將算法與數(shù)據(jù)結(jié)構(gòu)完全分離,其中算法是泛型的,不與任何特定數(shù)據(jù)結(jié)構(gòu)或?qū)ο箢愋拖翟谝黄?。概述泛型編程的代表作品STL是一種高效、泛型、可交互操作的軟件組件。STL以迭代器(Iterators)和容器(Containers)為基礎(chǔ),是一種泛型算法(GenericAlgorithms)庫(kù),容器的存在使這些算法有東西可以操作。STL包含各種泛型算法(algorithms)、泛型指針(iterators)、泛型容器(containers)以及函數(shù)對(duì)象(functionobjects)。STL并非只是一些有用組件的集合,它是描述軟件組件抽象需求條件的一個(gè)正規(guī)而有條理的架構(gòu)。泛型的第一個(gè)好處是編譯時(shí)的嚴(yán)格類型檢查。這是集合框架最重要的特點(diǎn)。此外,泛型消除了絕大多數(shù)的類型轉(zhuǎn)換。如果沒(méi)有泛型,當(dāng)你使用集合框架時(shí),你不得不進(jìn)行類型轉(zhuǎn)換。關(guān)于泛型的理解可以總結(jié)下面的一句話,它是把數(shù)據(jù)類型作為一種參數(shù)傳遞進(jìn)來(lái)。泛型編程(GenericProgramming)最初提出時(shí)的動(dòng)機(jī)很簡(jiǎn)單直接:發(fā)明一種語(yǔ)言機(jī)制,能夠幫助實(shí)現(xiàn)一個(gè)通用的標(biāo)準(zhǔn)容器庫(kù)。所謂通用的標(biāo)準(zhǔn)容器庫(kù),就是要能夠做到,比如用一個(gè)List類存放所有可能類型的對(duì)象,這樣的事情;熟悉一些其它面向?qū)ο蟮恼Z(yǔ)言的人應(yīng)該知道,如Java里面這是通過(guò)在List里面存放Object引用來(lái)實(shí)現(xiàn)的。Java的單根繼承在這里起到了關(guān)鍵的作用。然而單根繼承對(duì)C++這樣的處在語(yǔ)言鏈底層的語(yǔ)言卻是不能承受之重。此外使用單根繼承來(lái)實(shí)現(xiàn)通用容器也會(huì)帶來(lái)效率和類型安全方面的問(wèn)題,兩者都與C++的理念不相吻合。由來(lái)泛型編程最初誕生于C++中,由AlexanderStepanov[2]和DavidMusser[3]創(chuàng)立。目的是為了實(shí)現(xiàn)C++的STL(標(biāo)準(zhǔn)模板庫(kù))。其語(yǔ)言支持機(jī)制就是模板(Templates)。模板的精神其實(shí)很簡(jiǎn)單:參數(shù)化類型。換句話說(shuō),把一個(gè)原本特定于某個(gè)類型的算法或類當(dāng)中的類型信息抽掉,抽出來(lái)做成模板參數(shù)T。比如qsort泛化之后就變成了:template<classRandomAccessIterator,classCompare>voidsort(RandomAccessIteratorfirst,RandomAccessIteratorlast,Comparecomp);其中first,last這一對(duì)迭代器代表一個(gè)前閉后開(kāi)區(qū)間,迭代器和前閉后開(kāi)區(qū)間都是STL的核心概念。迭代器建模的是內(nèi)建指針的接口(解引用、遞增、遞減等)、前閉后開(kāi)區(qū)間是一個(gè)簡(jiǎn)單的數(shù)學(xué)概念,表示從first(含first)到last(不含last)的區(qū)間內(nèi)的所有元素。此外,comp是一個(gè)仿函數(shù)(functor)。仿函數(shù)也是STL的核心概念,仿函數(shù)是建模的內(nèi)建函數(shù)的接口,一個(gè)仿函數(shù)可以是一個(gè)內(nèi)建的函數(shù),也可以是一個(gè)重載了operator()的類對(duì)象,只要是支持函數(shù)調(diào)用的語(yǔ)法形式就可成為一個(gè)仿函數(shù)。通過(guò)操作符重載,C++允許了自定義類型具有跟內(nèi)建類型同樣的使用接口;又通過(guò)模板這樣的參數(shù)化類型機(jī)制,C++允許了一個(gè)算法或類定義,能夠利用這樣的接口一致性來(lái)對(duì)自身進(jìn)行泛化。例如,一個(gè)原本操作內(nèi)建指針的算法,被泛化為操縱一切迭代器的算法。一個(gè)原本使用內(nèi)建函數(shù)指針的算法,被泛化為能夠接受一切重載了函數(shù)調(diào)用操作符(operator。)的類對(duì)象的算法。編輯本段泛型的機(jī)制編譯機(jī)制第一輪編譯時(shí),編譯器只為Stack<T>(棧算法)類型產(chǎn)生“泛型版”的IL代碼與元數(shù)據(jù)-----并不進(jìn)行泛型類型的實(shí)例化,T在中間只充當(dāng)占位符JIT編譯時(shí),當(dāng)JIT編譯器第一次遇到Stack<int>時(shí),將用int替換“泛型版”IL代碼與元數(shù)據(jù)中的T---進(jìn)行泛型類型的實(shí)例化。CLR為所有類型參數(shù)為“引用類型”的泛型類型產(chǎn)生同一份代碼;但如果類型參數(shù)為“值類型”,對(duì)每一個(gè)不同的“值類型”,CLR將為其產(chǎn)生一份獨(dú)立的代碼。泛型編程的優(yōu)點(diǎn):(1) 使用泛型類型可以最大限度地重用代碼、保護(hù)類型的安全以及提高性能;(2) 使用泛型可以創(chuàng)建集合類;.NETFramework類庫(kù)在System.Collections.Generic命名空間中包含幾個(gè)新的泛型集合類,應(yīng)盡可能地使用這些類來(lái)代替普通的類,如System.Collections命名空間中的ArrayList;(3) 可以創(chuàng)建自己的泛型接口、泛型類、泛型方法、泛型事件和泛型委托;(4) 可以對(duì)泛型類進(jìn)行約束以訪問(wèn)特定數(shù)據(jù)類型的方法;關(guān)于泛型數(shù)據(jù)類型中使用的類型的信息可在運(yùn)行時(shí)通過(guò)反射獲取。缺點(diǎn):在性能上沒(méi)有數(shù)組快。雖然泛型程序設(shè)計(jì)方法與面向?qū)ο蟪绦蛟O(shè)計(jì)方法相比具有極大的優(yōu)越性,并已成功地用于一大批通用程序庫(kù)的開(kāi)發(fā)。然而,在實(shí)際運(yùn)用中面向?qū)ο蟪绦蛟O(shè)計(jì)依然具備泛型程序設(shè)計(jì)尚未具備的一個(gè)很大優(yōu)勢(shì),由于面向?qū)ο蟪绦蛟O(shè)計(jì)采用的對(duì)象類表示簡(jiǎn)單、易于理解,并且基于對(duì)象類的繼承機(jī)制語(yǔ)義清晰、便于實(shí)現(xiàn)。面向?qū)ο蟪绦蛟O(shè)計(jì)的抽象、封裝、繼承性、多態(tài)性等特點(diǎn)能夠得到語(yǔ)言一級(jí)的支持。對(duì)于泛型程序設(shè)計(jì),目前尚沒(méi)有任何一個(gè)主流程序設(shè)計(jì)語(yǔ)言能夠直接定義或表示泛型程序設(shè)計(jì)方法。無(wú)論是早期的Ada泛型編程,還是目前流行的C++模板編程,或者正在計(jì)劃推出的c#withGenerics,所采用的泛型編程方法,都不是真正意義上的“基于需求”的泛型程序設(shè)計(jì)。它們所采用的泛型程序設(shè)計(jì)方法,主要是通過(guò)人工的約定來(lái)遵循和運(yùn)用,并要求編程者具備很高的素質(zhì)和長(zhǎng)期的經(jīng)驗(yàn)。與當(dāng)前面向?qū)ο蟪绦蛟O(shè)計(jì)方法已被眾多語(yǔ)言支持相比,這是泛型程序設(shè)計(jì)一個(gè)很不理想的薄弱環(huán)節(jié)。泛型程序設(shè)計(jì)的優(yōu)越性也必須在實(shí)現(xiàn)了泛型程序設(shè)計(jì)的基本方法的直接程序語(yǔ)言支持之下,才能充分展示出來(lái)。泛型程序設(shè)計(jì)不能被程序設(shè)計(jì)語(yǔ)言直接支持有多種原因,其中最主要的原因是:泛型程序設(shè)計(jì)方法中的概念包含太多,過(guò)于龐雜,或內(nèi)容含混,使得現(xiàn)有的程序設(shè)計(jì)語(yǔ)言編譯技術(shù)無(wú)法有效地處理,不能保證或驗(yàn)證出類型需求是否確實(shí)被類型參數(shù)滿足。導(dǎo)致了泛型程序設(shè)計(jì)目前還屬于程序設(shè)計(jì)中的高階技術(shù),有礙于其廣泛運(yùn)用和普及。.如下例子://DeclarethegenericclasspublicclassGenericList<T>{voidAdd(Tinput){}}classTestGenericList{privateclassExampleClass{}staticvoidMain(){GenericList<int>list1=newGenericList<int>();GenericList<string>list2=newGenericList<string>();GenericList<ExampleClass>list3=newGenericList<ExampleClass>();}}面向?qū)ο笈c面向過(guò)程程序設(shè)計(jì)有如下不同:面向過(guò)程程序設(shè)計(jì)方法采用函數(shù)(或過(guò)程)來(lái)描述對(duì)數(shù)據(jù)的操作,但又將函數(shù)與其操作的數(shù)據(jù)分離開(kāi)來(lái);面向?qū)ο蟪绦蛟O(shè)計(jì)方法將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作封裝在一起,作為一個(gè)整體來(lái)處理。函數(shù)與數(shù)據(jù)是否分離。面向過(guò)程程序設(shè)計(jì)方法以功能為中心來(lái)設(shè)計(jì)功能模塊,難于維護(hù);而面向?qū)ο蟪绦蛟O(shè)計(jì)方法以數(shù)據(jù)為中心來(lái)描述系統(tǒng),數(shù)據(jù)相對(duì)于功能而言具有較強(qiáng)的穩(wěn)定性,因此更易于維護(hù)。以功能為中心;以數(shù)據(jù)為中心。面向過(guò)程程序的控制流程由程序中預(yù)定順序來(lái)決定;面向?qū)ο蟪绦虻目刂屏鞒逃蛇\(yùn)行時(shí)各種事件的實(shí)際發(fā)生來(lái)觸發(fā),而不再由預(yù)定順序來(lái)決定,更符合實(shí)際需要。預(yù)定順序;由運(yùn)行時(shí)各種事件的實(shí)際發(fā)生來(lái)觸發(fā)(4)面向?qū)ο蟪绦蛟O(shè)計(jì)方法可以利用框架產(chǎn)品(如MFC,MicrosoftFoundationClasses)進(jìn)行編程。面向?qū)ο罂衫每蚣苊嫦驅(qū)ο蠛兔嫦蜻^(guò)程的根本差別,在于封裝之后,面向?qū)ο筇峁┝嗣嫦蜻^(guò)程不具備的各種特性,最主要的,就是繼承和多態(tài)。面向?qū)ο蟪绦蛟O(shè)計(jì)與泛型程序設(shè)計(jì)的比較:泛型程序設(shè)計(jì)比面向?qū)ο蟪绦蛟O(shè)計(jì)具有更高的抽象能力。面向?qū)ο蟪绦蛟O(shè)計(jì)與泛型程序設(shè)計(jì)的抽象機(jī)制的區(qū)別是十分明顯的。由于面向?qū)ο蟪绦蛟O(shè)計(jì)以共同的基類為共性抽象

溫馨提示

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