下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
面向過程與面向?qū)ο蟪绦蛟O(shè)計一、 面向過程的程序設(shè)計面向過程(ProcessOriented)這個詞是在面向?qū)ο螅∣bjectOriented)出現(xiàn)之后為與之相對而提出的,其實(shí)它在以前基本被叫做“結(jié)構(gòu)化編程”。早期的程序設(shè)計,大量使用共享變量(全局變量)和GOTO語句一類的東西,后來有人證明所有的程序流程都可以使用三種基本流程(順序、選擇、重復(fù))來實(shí)現(xiàn),并提出“GOTO有害說”,從此人們進(jìn)行編程的方式發(fā)生重大變化,每種語言都提供這些基本控制結(jié)構(gòu)的實(shí)現(xiàn)方式,并提供把數(shù)據(jù)訪問局部化的能力,以及某種形式的模塊化/分別編譯機(jī)制。在這些基礎(chǔ)上,人們所進(jìn)行的編程活動基本是通過編寫用于不同目的的功能函數(shù)/過程來實(shí)現(xiàn),故稱為“面向過程”。1.1面向過程設(shè)計概述面向過程的結(jié)構(gòu)化程序設(shè)計方法就是采用面向過程的方法來設(shè)計結(jié)構(gòu)化程序。結(jié)構(gòu)化程序通常包含一個主程序和若干個子過程,其中每個子過程都描述了某一個小問題的解決方法再由主過程自頂向下調(diào)用各子過程,來逐步解決整個問題。結(jié)構(gòu)化程序設(shè)計方法是一種數(shù)學(xué)思維或計算機(jī)思維方法,和人們認(rèn)識世界時所習(xí)慣使用的方法不同。面向過程開發(fā)方式是對計算機(jī)底層結(jié)構(gòu)的一層抽象,它把程序的內(nèi)容分為數(shù)據(jù)和操縱數(shù)據(jù)的操作兩部分。這種編程方式的核心問題是數(shù)據(jù)結(jié)構(gòu)和算法的開發(fā)和優(yōu)化。C語言所提供的機(jī)制就是典型的結(jié)構(gòu)化編程設(shè)施。1.2面向?qū)ο笤O(shè)計的特點(diǎn)面向過程的程序設(shè)計方法通過在程序中模擬問題求解中的過程來進(jìn)行問題求解,這種方法認(rèn)為過程或函數(shù)可以作為建立大型復(fù)雜軟件系統(tǒng)的抽象機(jī)制。但由于在問題求解過程中,一些過程比較復(fù)雜,為控制復(fù)雜性,引入了功能分解的方法,即將一個復(fù)雜的過程分解為復(fù)雜性較低的低級過程,這種分解一直進(jìn)行到參與設(shè)計和編程的人員可以理解的步驟或過程為止。這樣使得系統(tǒng)是過程的組件,在整個分解過程中,數(shù)據(jù)結(jié)構(gòu)的安排是出于對過程組織的需要而進(jìn)行的。因此,數(shù)據(jù)處于次要地位,而過程是關(guān)心的焦點(diǎn)。面向過程的程序方法把重點(diǎn)放在解決問題的過程上,將數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)結(jié)構(gòu)的函數(shù)分開,在方法上存在明顯的不足。二、 面向?qū)ο蟮某绦蛟O(shè)計人們在認(rèn)識客觀世界中的各種系統(tǒng)時所習(xí)慣使用的方法是面向?qū)ο蟮姆椒?。面向?qū)ο蟮某绦蛟O(shè)計(OOP)方法就是用人類在現(xiàn)實(shí)生活中常用的思維方法來認(rèn)識、理解和描述客觀事物,強(qiáng)調(diào)最終建立的程序系統(tǒng)能夠映射問題域,即程序系統(tǒng)中的對象以及對象之間的關(guān)系能夠如實(shí)地反映問題域中固有的事物及其關(guān)系。因此,它為我們提出了一個全新的概念,其主要思想是將數(shù)據(jù)(成員數(shù)據(jù))及處理這些數(shù)據(jù)的相應(yīng)函數(shù)(成員函數(shù))封裝到一個類(class)中,而使用類的數(shù)據(jù)變量則稱為對象(object)。2.1面向?qū)ο笤O(shè)計概述面向?qū)ο蟮某绦蛟诔绦蚪Y(jié)構(gòu)上表現(xiàn)為類之間的聯(lián)系,這些聯(lián)系反映了程序運(yùn)行時對象之間的消息傳遞關(guān)系,程序正文中類之間的靜態(tài)聯(lián)系提供了在程序運(yùn)行時對象之間的消息傳遞的通道。面向?qū)ο蟮某绦虻墓δ苁峭ㄟ^特定的消息傳遞序列來實(shí)現(xiàn)的。使用面向?qū)ο蟮某绦蛟O(shè)計方法設(shè)計軟件系統(tǒng)必須首先清楚軟件系統(tǒng)的構(gòu)造塊:對象。在面向?qū)ο蟮某绦蛟O(shè)計中,對象就是將數(shù)據(jù)和對數(shù)據(jù)進(jìn)行的合法操作結(jié)合于一體的抽象實(shí)體,以這種實(shí)體所構(gòu)成的程序就是面向?qū)ο蟮某绦颉C嫦驅(qū)ο蠓椒ㄖ?,對象可以接受其他對象傳來的消息,也可以向其他對象發(fā)送消息。有的語言靜態(tài)類型,決定了對象可接受的消息的范圍,這稱為對象的類型的接口。有的語言中對象可以接受任何消息,但只對其有意義的消息進(jìn)行反應(yīng)。對象中可以包含其他對象,這成為“聚合”,對象可以被當(dāng)作其他類型的對象,這要求對象的類型“繼承”另外的類型。對象只能通過其所提供的接口來進(jìn)行訪問,其內(nèi)部具體實(shí)現(xiàn)是不可訪問的,這成為“封裝”。面向?qū)ο蠓椒ǖ娜齻€核心要素是:封裝、繼承、多態(tài)。2.2面向?qū)ο笤O(shè)計的基本概念對象對象的本意是指某一事物,即對象是可以看到、摸到、感覺到的一種實(shí)體。在面向?qū)ο蟮募夹g(shù)中,對象是指計算機(jī)系統(tǒng)的一個基本成分,它有一個唯一的名,有一組狀態(tài)(用公共數(shù)據(jù)和私有數(shù)據(jù)表示)及表示對象行為的一組公共或私有操作,即“對象二數(shù)據(jù)+動作”,對象具有一個操作集合和一個記錄操作結(jié)果的局部共享狀態(tài)。類(class)類是具有相同操作(功能)與相同數(shù)據(jù)格式(特征)的對象集合。它是面向?qū)ο蟪绦蛟O(shè)計語言提供的可再用軟件成分,類可以看作為抽象數(shù)據(jù)類型的具體實(shí)現(xiàn)。抽象數(shù)據(jù)類型是指數(shù)據(jù)的集合和作用其上的操作的集合,而抽象數(shù)據(jù)類型則不關(guān)心實(shí)現(xiàn)的具體細(xì)節(jié),從外部看,類的行為可以用新定義的操作加以規(guī)定。類為對象集合的抽象,它規(guī)定了對象的公共狀態(tài)與行為特征,即對象為類的一個實(shí)例(instance),對象與類的關(guān)系相當(dāng)于程序設(shè)計語言中變量與變量所具有的類型的關(guān)系。消息消息是要求某個操作的規(guī)格說明,由三部分組成:接受消息的對象、消息選擇子(消息名)和零個或多個變元。方法對象所能執(zhí)行的操作稱為方法,在C++語言中稱為成員函數(shù)。方法是類中定義的函數(shù),描述對象執(zhí)行操作的算法。2.3面向?qū)ο笤O(shè)計的優(yōu)點(diǎn)面向?qū)ο蟮某绦蛟O(shè)計方法與面向過程的結(jié)構(gòu)化程序設(shè)計方法相比較,面向?qū)ο蟮姆椒ㄖ辽儆腥齻€優(yōu)點(diǎn):第一,面向?qū)ο蟮某绦蛟O(shè)計方法通過將數(shù)據(jù)封裝在類中,對信息進(jìn)行了很好的隱藏,面向?qū)ο蟮某绦蛉菀组喿x和理解,程序員只需了解必要的細(xì)節(jié),降低了程序的復(fù)雜性,使其具有較好的可維護(hù)性;第二,程序員通過修改、添加或刪除對象,可以很容易的修改、添加或刪除程序的屬性,使程序具有易修改的特性;第三,程序員可以將某些公用的類和對象保存起來,隨時插入到應(yīng)用程序中,不需做什么修改就能使用,具有很好的可重用性。因此,面向?qū)ο蟮脑O(shè)計方法是提高軟件開發(fā)效率,解決軟件重用的有效方法。綜上,面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時候一個一個依次調(diào)用就可以了。面向?qū)ο笫前褬?gòu)成問題事務(wù)分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。面向?qū)ο蟮某绦蛟O(shè)計方法所得到的程序是類的集合,而面向過程的程序設(shè)計方法所得到的程序是函數(shù)的集合。三、程序的設(shè)計模式對于設(shè)計模式,ChristopherAlexander和他的同事們可能最先將模式語言(patternlanguage)應(yīng)用于城市建筑領(lǐng)域,他的思想和其他人的貢獻(xiàn)已經(jīng)根植于面向?qū)ο筌浖纭:喍灾?,軟件領(lǐng)域中的設(shè)計模式為開發(fā)人員提供了一種使用專家設(shè)計經(jīng)驗(yàn)的有效途徑。設(shè)計模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗(yàn)的總結(jié)。毫無疑問,設(shè)計模式于己于他人于系統(tǒng)都是多贏的;設(shè)計模式使代碼編制真正工程化;設(shè)計模式是軟件工程的基石脈絡(luò),如同大廈的結(jié)構(gòu)一樣。一般而言,一個模式包含四個要素:模式名稱、問題、解決方案和效果。一個設(shè)計模式命名、抽象和確定了一個通用設(shè)計結(jié)構(gòu)的主要方面,這些設(shè)計結(jié)構(gòu)能被用來構(gòu)造可復(fù)用的面向?qū)ο笤O(shè)計。設(shè)計模式確定了所包含的類和實(shí)例,它們的角色、協(xié)作方式以及職責(zé)分配。每一個設(shè)計模式都集中于一個特定的面向?qū)ο笤O(shè)計問題或設(shè)計要點(diǎn),描述了什么時候使用它,在另一些設(shè)計約束條件下是否還能使用,以及使用的效果和如何取舍。雖然設(shè)計模式描述的是面向?qū)ο笤O(shè)計,但它們都基于實(shí)際的解決方案,這些方案的實(shí)現(xiàn)語言是Smalltalk和C++等主流面向?qū)ο缶幊陶Z言,而不是過程式語言(Pascal、C、Ada)或更具動態(tài)特性的面向?qū)ο笳Z言(CLOS、Dylan、Self)。設(shè)計模式分為三種類型,共23種,創(chuàng)建型模式包括單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式;結(jié)構(gòu)型模式包括適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式;行為型模式包括模版方法模式、命令模式、迭代器模式、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025云南省建筑安全員考試題庫附答案
- 貴州大學(xué)《計算機(jī)藝術(shù)設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州財經(jīng)大學(xué)《土木工程施工與組織管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽幼兒師范高等專科學(xué)?!冻鞘薪煌ㄏ到y(tǒng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025遼寧省建筑安全員考試題庫及答案
- 2025年湖南省建筑安全員知識題庫及答案
- 2025山西建筑安全員《B證》考試題庫及答案
- 硅湖職業(yè)技術(shù)學(xué)院《計算機(jī)輔助設(shè)計一》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年陜西省建筑安全員C證考試(專職安全員)題庫附答案
- 廣州幼兒師范高等??茖W(xué)校《科技文獻(xiàn)檢索(理工)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二甲雙胍恩格列凈片(Ⅲ)-臨床用藥解讀
- 煤層應(yīng)力狀態(tài)及煤與瓦斯突出防治研究
- 小學(xué)五年級上冊數(shù)學(xué)基礎(chǔ)知識練習(xí)題帶答案
- 診所聘用醫(yī)生合作協(xié)議書
- 抖音認(rèn)證承諾函
- 藥物分離純化-藥物分離純化技術(shù)的作用
- 《精益生產(chǎn)培訓(xùn)》課件
- GB/T 3518-2023鱗片石墨
- 22G101三維立體彩色圖集
- MQL4命令中文詳解手冊
- 水平井施工方案及措施
評論
0/150
提交評論