


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
面向過程與面向?qū)ο蟪绦蛟O(shè)計一、 面向過程的程序設(shè)計面向過程(ProcessOriented)這個詞是在面向?qū)ο螅∣bjectOriented)出現(xiàn)之后為與之相對而提出的,其實它在以前基本被叫做“結(jié)構(gòu)化編程”。早期的程序設(shè)計,大量使用共享變量(全局變量)和GOTO語句一類的東西,后來有人證明所有的程序流程都可以使用三種基本流程(順序、選擇、重復(fù))來實現(xiàn),并提出“GOTO有害說”,從此人們進行編程的方式發(fā)生重大變化,每種語言都提供這些基本控制結(jié)構(gòu)的實現(xiàn)方式,并提供把數(shù)據(jù)訪問局部化的能力,以及某種形式的模塊化/分別編譯機制。在這些基礎(chǔ)上,人們所進行的編程活動基本是通過編寫用于不同目的的功能函數(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é)思維或計算機思維方法,和人們認識世界時所習(xí)慣使用的方法不同。面向過程開發(fā)方式是對計算機底層結(jié)構(gòu)的一層抽象,它把程序的內(nèi)容分為數(shù)據(jù)和操縱數(shù)據(jù)的操作兩部分。這種編程方式的核心問題是數(shù)據(jù)結(jié)構(gòu)和算法的開發(fā)和優(yōu)化。C語言所提供的機制就是典型的結(jié)構(gòu)化編程設(shè)施。1.2面向?qū)ο笤O(shè)計的特點面向過程的程序設(shè)計方法通過在程序中模擬問題求解中的過程來進行問題求解,這種方法認為過程或函數(shù)可以作為建立大型復(fù)雜軟件系統(tǒng)的抽象機制。但由于在問題求解過程中,一些過程比較復(fù)雜,為控制復(fù)雜性,引入了功能分解的方法,即將一個復(fù)雜的過程分解為復(fù)雜性較低的低級過程,這種分解一直進行到參與設(shè)計和編程的人員可以理解的步驟或過程為止。這樣使得系統(tǒng)是過程的組件,在整個分解過程中,數(shù)據(jù)結(jié)構(gòu)的安排是出于對過程組織的需要而進行的。因此,數(shù)據(jù)處于次要地位,而過程是關(guān)心的焦點。面向過程的程序方法把重點放在解決問題的過程上,將數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)結(jié)構(gòu)的函數(shù)分開,在方法上存在明顯的不足。二、 面向?qū)ο蟮某绦蛟O(shè)計人們在認識客觀世界中的各種系統(tǒng)時所習(xí)慣使用的方法是面向?qū)ο蟮姆椒?。面向?qū)ο蟮某绦蛟O(shè)計(OOP)方法就是用人類在現(xiàn)實生活中常用的思維方法來認識、理解和描述客觀事物,強調(diào)最終建立的程序系統(tǒng)能夠映射問題域,即程序系統(tǒng)中的對象以及對象之間的關(guān)系能夠如實地反映問題域中固有的事物及其關(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)系反映了程序運行時對象之間的消息傳遞關(guān)系,程序正文中類之間的靜態(tài)聯(lián)系提供了在程序運行時對象之間的消息傳遞的通道。面向?qū)ο蟮某绦虻墓δ苁峭ㄟ^特定的消息傳遞序列來實現(xiàn)的。使用面向?qū)ο蟮某绦蛟O(shè)計方法設(shè)計軟件系統(tǒng)必須首先清楚軟件系統(tǒng)的構(gòu)造塊:對象。在面向?qū)ο蟮某绦蛟O(shè)計中,對象就是將數(shù)據(jù)和對數(shù)據(jù)進行的合法操作結(jié)合于一體的抽象實體,以這種實體所構(gòu)成的程序就是面向?qū)ο蟮某绦?。面向?qū)ο蠓椒ㄖ?,對象可以接受其他對象傳來的消息,也可以向其他對象發(fā)送消息。有的語言靜態(tài)類型,決定了對象可接受的消息的范圍,這稱為對象的類型的接口。有的語言中對象可以接受任何消息,但只對其有意義的消息進行反應(yīng)。對象中可以包含其他對象,這成為“聚合”,對象可以被當(dāng)作其他類型的對象,這要求對象的類型“繼承”另外的類型。對象只能通過其所提供的接口來進行訪問,其內(nèi)部具體實現(xiàn)是不可訪問的,這成為“封裝”。面向?qū)ο蠓椒ǖ娜齻€核心要素是:封裝、繼承、多態(tài)。2.2面向?qū)ο笤O(shè)計的基本概念對象對象的本意是指某一事物,即對象是可以看到、摸到、感覺到的一種實體。在面向?qū)ο蟮募夹g(shù)中,對象是指計算機系統(tǒng)的一個基本成分,它有一個唯一的名,有一組狀態(tài)(用公共數(shù)據(jù)和私有數(shù)據(jù)表示)及表示對象行為的一組公共或私有操作,即“對象二數(shù)據(jù)+動作”,對象具有一個操作集合和一個記錄操作結(jié)果的局部共享狀態(tài)。類(class)類是具有相同操作(功能)與相同數(shù)據(jù)格式(特征)的對象集合。它是面向?qū)ο蟪绦蛟O(shè)計語言提供的可再用軟件成分,類可以看作為抽象數(shù)據(jù)類型的具體實現(xiàn)。抽象數(shù)據(jù)類型是指數(shù)據(jù)的集合和作用其上的操作的集合,而抽象數(shù)據(jù)類型則不關(guān)心實現(xiàn)的具體細節(jié),從外部看,類的行為可以用新定義的操作加以規(guī)定。類為對象集合的抽象,它規(guī)定了對象的公共狀態(tài)與行為特征,即對象為類的一個實例(instance),對象與類的關(guān)系相當(dāng)于程序設(shè)計語言中變量與變量所具有的類型的關(guān)系。消息消息是要求某個操作的規(guī)格說明,由三部分組成:接受消息的對象、消息選擇子(消息名)和零個或多個變元。方法對象所能執(zhí)行的操作稱為方法,在C++語言中稱為成員函數(shù)。方法是類中定義的函數(shù),描述對象執(zhí)行操作的算法。2.3面向?qū)ο笤O(shè)計的優(yōu)點面向?qū)ο蟮某绦蛟O(shè)計方法與面向過程的結(jié)構(gòu)化程序設(shè)計方法相比較,面向?qū)ο蟮姆椒ㄖ辽儆腥齻€優(yōu)點:第一,面向?qū)ο蟮某绦蛟O(shè)計方法通過將數(shù)據(jù)封裝在類中,對信息進行了很好的隱藏,面向?qū)ο蟮某绦蛉菀组喿x和理解,程序員只需了解必要的細節(jié),降低了程序的復(fù)雜性,使其具有較好的可維護性;第二,程序員通過修改、添加或刪除對象,可以很容易的修改、添加或刪除程序的屬性,使程序具有易修改的特性;第三,程序員可以將某些公用的類和對象保存起來,隨時插入到應(yīng)用程序中,不需做什么修改就能使用,具有很好的可重用性。因此,面向?qū)ο蟮脑O(shè)計方法是提高軟件開發(fā)效率,解決軟件重用的有效方法。綜上,面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實現(xiàn),使用的時候一個一個依次調(diào)用就可以了。面向?qū)ο笫前褬?gòu)成問題事務(wù)分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。面向?qū)ο蟮某绦蛟O(shè)計方法所得到的程序是類的集合,而面向過程的程序設(shè)計方法所得到的程序是函數(shù)的集合。三、程序的設(shè)計模式對于設(shè)計模式,ChristopherAlexander和他的同事們可能最先將模式語言(patternlanguage)應(yīng)用于城市建筑領(lǐng)域,他的思想和其他人的貢獻已經(jīng)根植于面向?qū)ο筌浖纭:喍灾?,軟件領(lǐng)域中的設(shè)計模式為開發(fā)人員提供了一種使用專家設(shè)計經(jīng)驗的有效途徑。設(shè)計模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(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è)計模式確定了所包含的類和實例,它們的角色、協(xié)作方式以及職責(zé)分配。每一個設(shè)計模式都集中于一個特定的面向?qū)ο笤O(shè)計問題或設(shè)計要點,描述了什么時候使用它,在另一些設(shè)計約束條件下是否還能使用,以及使用的效果和如何取舍。雖然設(shè)計模式描述的是面向?qū)ο笤O(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國天然桑蠶絲被行業(yè)市場全景監(jiān)測及投資戰(zhàn)略咨詢報告
- 2025年三氧化鉬精制項目節(jié)能評估報告(節(jié)能專)
- 2023-2029年中國鼻貼膜行業(yè)市場深度分析及投資策略咨詢報告
- 關(guān)于編制電解鋁生產(chǎn)建設(shè)項目可行性研究報告編制說明
- 2025-2030年手工臺歷設(shè)計行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 2025-2030年手工堅果塔禮盒行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年可調(diào)色溫臺燈行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年復(fù)古銅鍋定制行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 2025-2030年戶外攝影無人機充電站企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年商用真空包裝機企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 礦山開工第一課
- 員工節(jié)能環(huán)保培訓(xùn)課件
- 華為公司的內(nèi)部審計制度
- 火針療法課件
- 腫瘤醫(yī)院病歷書寫培訓(xùn)課件
- 《蓄電池培訓(xùn)》課件
- 學(xué)校行政領(lǐng)導(dǎo)夜間值班制度
- 32軟件測試報告GJB438C模板
- 合同移交登記表
- C++面向?qū)ο蟮某绦蛟O(shè)計課件
- 幼兒園大班數(shù)學(xué)PPT課件2、3、4的分解與組成
評論
0/150
提交評論