面向過(guò)程和面向?qū)ο蟪绦蛟O(shè)計(jì)_第1頁(yè)
面向過(guò)程和面向?qū)ο蟪绦蛟O(shè)計(jì)_第2頁(yè)
面向過(guò)程和面向?qū)ο蟪绦蛟O(shè)計(jì)_第3頁(yè)
面向過(guò)程和面向?qū)ο蟪绦蛟O(shè)計(jì)_第4頁(yè)
面向過(guò)程和面向?qū)ο蟪绦蛟O(shè)計(jì)_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

面對(duì)過(guò)程與面對(duì)對(duì)象程序設(shè)計(jì)一、面對(duì)過(guò)程的程序設(shè)計(jì)面對(duì)過(guò)程(ProcessOriented)這個(gè)詞是在面對(duì)對(duì)象(ObjectOriented)消失之后為與之相對(duì)而提出的,其實(shí)它在以前基本被叫做"結(jié)構(gòu)化編程〃。早期的程序設(shè)計(jì),大量使用共享變量(全局變量)和GOTO語(yǔ)句一類(lèi)的東西,后來(lái)有人證明全部的程序流程都可以使用三種基本流程(挨次、選擇、重復(fù))來(lái)實(shí)現(xiàn),并提出"GOTO有害說(shuō)",從今人們進(jìn)行編程的方式發(fā)生重大變化,每種語(yǔ)言都供應(yīng)這些基本掌握結(jié)構(gòu)的實(shí)現(xiàn)方式,并供應(yīng)把數(shù)據(jù)訪(fǎng)問(wèn)局部化的力量,以及某種形式的模塊化/分別編譯機(jī)制。在這些基礎(chǔ)上,人們所進(jìn)行的編程活動(dòng)基本是通過(guò)編寫(xiě)用于不同目的的功能函數(shù)/過(guò)程來(lái)實(shí)現(xiàn),故稱(chēng)為“面對(duì)過(guò)程"。面對(duì)過(guò)程設(shè)計(jì)概述面對(duì)過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì)方法就是采納面對(duì)過(guò)程的方法來(lái)設(shè)計(jì)結(jié)構(gòu)化程序。結(jié)構(gòu)化程序通常包含一個(gè)主程序和若干個(gè)子過(guò)程,其中每個(gè)子過(guò)程都描述了某一個(gè)小問(wèn)題的解決方法再由主過(guò)程自頂向下調(diào)用各子過(guò)程,來(lái)逐步解決整個(gè)問(wèn)題。結(jié)構(gòu)化程序設(shè)計(jì)方法是一種數(shù)學(xué)思維或計(jì)算機(jī)思維方法,和人們熟悉世界時(shí)所習(xí)慣使用的方法不同。面對(duì)過(guò)程開(kāi)發(fā)方式是對(duì)計(jì)算機(jī)底層結(jié)構(gòu)的一層抽象,它把程序的內(nèi)容分為數(shù)據(jù)和操縱數(shù)據(jù)的操作兩部分。這種編程方式的核心問(wèn)題是數(shù)據(jù)結(jié)構(gòu)和算法的開(kāi)發(fā)和優(yōu)化。C語(yǔ)言所供應(yīng)的機(jī)制就是典型的結(jié)構(gòu)化編程設(shè)施。面對(duì)對(duì)象設(shè)計(jì)的特點(diǎn)面對(duì)過(guò)程的程序設(shè)計(jì)方法通過(guò)在程序中模擬問(wèn)題求解中的過(guò)程來(lái)進(jìn)行問(wèn)題求解,這種方法認(rèn)為過(guò)程或函數(shù)可以作為建立大型簡(jiǎn)單軟件系統(tǒng)的抽象機(jī)制。但由于在問(wèn)題求解過(guò)程中,一些過(guò)程匕匕較簡(jiǎn)單,為掌握簡(jiǎn)單性,引入了功能分解的方法,即將一個(gè)簡(jiǎn)單的過(guò)程分解為簡(jiǎn)單性較低的低級(jí)過(guò)程,這種分解始終進(jìn)行到參加設(shè)計(jì)和編程的人員可以理解的步驟或過(guò)程為止。這樣使得系統(tǒng)是過(guò)程的組件,在整個(gè)分解過(guò)程中,數(shù)據(jù)結(jié)構(gòu)的支配是出于對(duì)過(guò)程組織的需要而進(jìn)行的。因此,數(shù)據(jù)處于次要地位,而過(guò)程是關(guān)懷的焦點(diǎn)。面對(duì)過(guò)程的程序方法把重點(diǎn)放在解決問(wèn)題的過(guò)程上,將數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)結(jié)構(gòu)的函數(shù)分開(kāi),在方法上存在明顯的不足。二、面對(duì)對(duì)象的程序設(shè)計(jì)人們?cè)谑煜た陀^世界中的各種系統(tǒng)時(shí)所習(xí)慣使用的方法是面對(duì)對(duì)象的方法。面對(duì)對(duì)象的程序設(shè)計(jì)(OOP)方法就是用人類(lèi)在現(xiàn)實(shí)生活中常用的思維方法來(lái)認(rèn)識(shí)、理解和描述客觀事物,強(qiáng)調(diào)最終建立的程序系統(tǒng)能夠映射問(wèn)題域,即程序系統(tǒng)中的對(duì)象以及對(duì)象之間的關(guān)系能夠照實(shí)地反映問(wèn)題域中固有的事物及其關(guān)系。因此,它為我們提出了一個(gè)全新的概念,其主要思想是將數(shù)據(jù)(成員數(shù)據(jù))及處理這些數(shù)據(jù)的相應(yīng)函數(shù)(成員函數(shù))封裝到一個(gè)類(lèi)(class)中,而使用類(lèi)的數(shù)據(jù)變量則稱(chēng)為對(duì)象(object工面對(duì)對(duì)象設(shè)計(jì)概述面對(duì)對(duì)象的程序在程序結(jié)構(gòu)上表現(xiàn)為類(lèi)之間的聯(lián)系,這些聯(lián)系反映了程序運(yùn)行時(shí)對(duì)象之間的消息傳遞關(guān)系,程序正文中類(lèi)之間的靜態(tài)聯(lián)系供應(yīng)了在程序運(yùn)行時(shí)對(duì)象之間的消息傳遞的通道。面對(duì)對(duì)象的程序的功能是通過(guò)特定的消息傳遞序列來(lái)實(shí)現(xiàn)的。使用面對(duì)對(duì)象的程序設(shè)計(jì)方法設(shè)計(jì)軟件系統(tǒng)必需首先清晰軟件系統(tǒng)的構(gòu)造塊:對(duì)象。在面對(duì)對(duì)象的程序設(shè)計(jì)中,對(duì)象就是將數(shù)據(jù)和對(duì)數(shù)據(jù)進(jìn)行的合法操作結(jié)合于一體的抽象實(shí)體,以這種實(shí)體所構(gòu)成的程序就是面對(duì)對(duì)象的程序。面對(duì)對(duì)象方法中,對(duì)象可以接受其他對(duì)象傳來(lái)的消息,也可以向其他對(duì)象發(fā)送消息。有的語(yǔ)言靜態(tài)類(lèi)型,打算了對(duì)象可接受的消息的范圍,這稱(chēng)為對(duì)象的類(lèi)型的接口。有的語(yǔ)言中對(duì)象可以接受任1可消息,但只對(duì)其有意義的消息進(jìn)行反應(yīng)。對(duì)象中可以包含其他對(duì)象,這成為“聚合”,對(duì)象可以被當(dāng)作其他類(lèi)型的對(duì)象,這要求對(duì)象的類(lèi)型“繼承〃此外的類(lèi)型。對(duì)象只能通過(guò)其所供應(yīng)的接口來(lái)進(jìn)行訪(fǎng)問(wèn),其內(nèi)部詳細(xì)實(shí)現(xiàn)是不行訪(fǎng)問(wèn)的,這成為〃封裝二面對(duì)對(duì)象方法的三個(gè)核心'要素是:封裝、繼承、多態(tài)。面對(duì)對(duì)象設(shè)計(jì)的基本概念.對(duì)象對(duì)象的本意是指某一事物,即對(duì)象是可以看到、摸到、感覺(jué)到的一種實(shí)體。在面對(duì)對(duì)象的技術(shù)中,對(duì)象是指計(jì)算機(jī)系統(tǒng)的一個(gè)基本成分,它有一個(gè)唯一的名,有一組狀態(tài)(用公共數(shù)據(jù)和私有數(shù)據(jù)表示)及表示對(duì)象行為的一組公共或私有操作,即”對(duì)象=數(shù)據(jù)+動(dòng)作",對(duì)象具有一個(gè)操作集合和一個(gè)紀(jì)錄操作結(jié)果的局部共享狀態(tài)。.類(lèi)(class)類(lèi)是具有相同操作(功能)與相同數(shù)據(jù)格式(特征)的對(duì)象集合。它是面對(duì)對(duì)象程序設(shè)計(jì)語(yǔ)言供應(yīng)的可再用軟件成分,類(lèi)可以看作為抽象數(shù)據(jù)類(lèi)型的詳細(xì)實(shí)現(xiàn)。抽象數(shù)據(jù)類(lèi)型是指數(shù)據(jù)的集合和作用其上的操作的集合,而抽象數(shù)據(jù)類(lèi)型則不關(guān)懷實(shí)現(xiàn)的詳細(xì)細(xì)節(jié),從外部看,類(lèi)的行為可以用新定義的操作加以規(guī)定。類(lèi)為對(duì)象集合的抽象,它規(guī)定了對(duì)象的公共狀態(tài)與行為特征,即對(duì)象為類(lèi)的一個(gè)實(shí)例(instance),對(duì)象與類(lèi)的關(guān)系相當(dāng)于程序設(shè)計(jì)語(yǔ)言中變量與變量所具有的類(lèi)型的關(guān)系。3消息消息是要求某個(gè)操作的規(guī)格說(shuō)明,由三部分組成:接受消息的對(duì)象、消息選擇子(消息名)和零個(gè)或多個(gè)變?cè)?.方法對(duì)象所能執(zhí)行的操作稱(chēng)為方法,在C++語(yǔ)言中稱(chēng)為成員函數(shù)。方法是類(lèi)中定義的函數(shù),描述對(duì)象執(zhí)行操作的算法。2.3面對(duì)對(duì)象設(shè)計(jì)的優(yōu)點(diǎn)面對(duì)對(duì)象的程序設(shè)計(jì)方法與面對(duì)過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì)方法相比較,面對(duì)對(duì)象的方法至少有三個(gè)優(yōu)點(diǎn):第一,面對(duì)對(duì)象的程序設(shè)計(jì)方法通過(guò)將數(shù)據(jù)封裝在類(lèi)中,對(duì)信息進(jìn)行了很好的隱蔽,面對(duì)對(duì)象的程序簡(jiǎn)單閱讀和理解,程序員只需了解必要的細(xì)節(jié),降低了程序的簡(jiǎn)單性,使其具有較好的可維護(hù)性;其次,程序員通過(guò)修改、添加或刪除對(duì)象,可以很簡(jiǎn)單的修改、添加或刪除程序的屬性,使程序具有易修改的特性;第三,程序員可以將某些公用的類(lèi)和對(duì)象保存起來(lái),隨時(shí)插入到應(yīng)用程序中,不需做什么修改就能使用,具有很好的可重用性。因此,面對(duì)對(duì)象的設(shè)計(jì)方法是提高軟件開(kāi)發(fā)效率,解決軟件重用的有效方法。綜上,面對(duì)過(guò)程就是分析出解決問(wèn)題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。面對(duì)對(duì)象是把構(gòu)成問(wèn)題事務(wù)分解成各個(gè)對(duì)象,建立對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描敘某個(gè)事物在整個(gè)解決問(wèn)題的步驟中的行為。面對(duì)對(duì)象的程序設(shè)計(jì)方法所得到的程序是類(lèi)的集合,而面對(duì)過(guò)程的程序設(shè)計(jì)方法所得到的程序是函數(shù)的集合。三、程序的設(shè)計(jì)模式對(duì)于設(shè)計(jì)模式,ChristopherAlexander和他的同事們可能最先將模式語(yǔ)言(patternlanguage)應(yīng)用于城市建筑領(lǐng)域,他的思想和其他人的貢獻(xiàn)已經(jīng)根植于面對(duì)對(duì)象軟件界。簡(jiǎn)而言之,軟件領(lǐng)域中的設(shè)計(jì)模式為開(kāi)發(fā)人員供應(yīng)了一種使用專(zhuān)家設(shè)計(jì)閱歷的有效途徑。設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類(lèi)編目的、代碼設(shè)計(jì)閱歷的總結(jié)。毫無(wú)疑問(wèn),設(shè)計(jì)模式于己于他人于系統(tǒng)都是多贏的;設(shè)計(jì)模式使代碼編制真正工程化;設(shè)計(jì)模式是軟件工程的基石脈絡(luò),猶如大廈的結(jié)構(gòu)一樣。T殳而言,一個(gè)模式包含四個(gè)要素:模式名稱(chēng)、問(wèn)題、解決方案和效果。一個(gè)設(shè)計(jì)模式命名、抽象和確定了一個(gè)通用設(shè)計(jì)結(jié)構(gòu)的主要方面,這些設(shè)計(jì)結(jié)構(gòu)能被用來(lái)構(gòu)造可復(fù)用的面對(duì)對(duì)象設(shè)計(jì)。設(shè)計(jì)模式確定了所包含的類(lèi)和實(shí)例,它們的角色、協(xié)作方式以及職責(zé)安排。每一個(gè)設(shè)計(jì)模式都集中于一個(gè)特定的面對(duì)對(duì)象設(shè)計(jì)問(wèn)題或設(shè)計(jì)要點(diǎn),描述了什么時(shí)候使用它,在另一些設(shè)計(jì)約束條件下是否還能使用,以及使用的效果和如何取舍。雖然設(shè)計(jì)模式描述的是面對(duì)對(duì)象設(shè)計(jì),但它們都基于實(shí)際的解決方案,這些方案的實(shí)現(xiàn)語(yǔ)言是Smalltalk和C++等主流面對(duì)對(duì)象編程語(yǔ)言,而不是過(guò)程式語(yǔ)言(Pascal.C、Ada)或更具動(dòng)態(tài)特性的面對(duì)對(duì)象語(yǔ)言(CLOS、Dylan.Self).設(shè)計(jì)模式分為三種類(lèi)型,共23種,創(chuàng)建型模式包括單例模式、抽象工廠模式、建筑者模式、工廠模式、原型模式;結(jié)構(gòu)型模式包括適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式;行為型模式包括模版方法模式、命令模式、迭代器模式、觀

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論