面向?qū)ο缶幊膛c非_第1頁
面向?qū)ο缶幊膛c非_第2頁
面向?qū)ο缶幊膛c非_第3頁
面向?qū)ο缶幊膛c非_第4頁
面向?qū)ο缶幊膛c非_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

面向?qū)ο缶幊膛c非面向?qū)ο缶幊?軟件開發(fā)方法軟件工程所采用的方法不是唯一的。自軟件工程出現(xiàn)以來,人們已經(jīng)提出了多種軟件開發(fā)方法,例如:功能分解法、數(shù)據(jù)流法(結(jié)構(gòu)化方法)、快速原型法、信息模型法、面向?qū)ο蠓椒ā?結(jié)構(gòu)化軟件開發(fā)方法簡介1978年,E.Yourdon和L.L.Constantine提出了結(jié)構(gòu)化開發(fā)方法SASD(StructureAnalysisStructureDesign)也稱面向數(shù)據(jù)流的軟件開發(fā)方法把軟件系統(tǒng)的功能看做是根據(jù)給定的輸入數(shù)據(jù),進(jìn)行相應(yīng)的運(yùn)算,然后輸出結(jié)果。功能輸入數(shù)據(jù)輸出數(shù)據(jù)結(jié)構(gòu)化設(shè)計(jì)是屬于自頂向下的設(shè)計(jì),在設(shè)計(jì)階段就不得不考慮如何實(shí)現(xiàn)系統(tǒng)的功能,因?yàn)榉纸獾倪^程其實(shí)就是實(shí)現(xiàn)功能的過程。局限性不能靈活地適應(yīng)用戶不斷變化的需求比如要求修改現(xiàn)有軟件的實(shí)現(xiàn)方式或追加新功能時(shí)需要自頂向下地修改模塊的結(jié)構(gòu),有時(shí)甚至整個(gè)軟件系統(tǒng)的設(shè)計(jì)被推翻。結(jié)構(gòu)化編程SP(StructureProgramming)程序的主體是方法方法是最小的功能模塊一組相關(guān)的方法組合成一個(gè)大的功能模塊結(jié)構(gòu)化開發(fā)過程舉例一個(gè)畫板系統(tǒng)Panel包括4個(gè)功能選擇形狀畫長方形畫圓畫直線自頂向下結(jié)構(gòu)化分析設(shè)計(jì)工具:數(shù)據(jù)流圖DFD選擇形狀模塊數(shù)據(jù)流圖結(jié)構(gòu)化編程定義形狀標(biāo)示常量drawCircle()drawLine()drawRectangle()selectShape()接收用戶輸入的形狀switchvoidselectShape(){intshape;scanf("%d",&shape);switch(shape){caseCircle;drawCircle();break;caseLine;drawLine();break;caseRectangle;drawRectangle();break;default;printf("輸入的形狀不存在");

break;

}}假定需求發(fā)生變化要求增加一個(gè)畫三角形的功能需要對系統(tǒng)做多處改動增加一個(gè)形狀常量定義增加一個(gè)畫三角形的功能方法在selectShape中增加一個(gè)分支邏輯結(jié)構(gòu)化開發(fā)方法制約了軟件的可維護(hù)性和可擴(kuò)展性模塊之間的松耦合性不高修改或增加一個(gè)模塊會影響到其他模塊這些缺陷的根本原因在于:自頂向下地按照功能來劃分。但是軟件的功能不是一成不變的軟件系統(tǒng)中最小的子系統(tǒng)是方法。方法和一部分與之相關(guān)的數(shù)據(jù)分離,全局變量和常量數(shù)據(jù)分散在系統(tǒng)的各個(gè)角落,削弱了各個(gè)系統(tǒng)之間的相對獨(dú)立性。13非面向?qū)ο缶幊虒τ诜敲嫦驅(qū)ο缶幊?,程序往往是面向過程或者面向數(shù)據(jù)的。這些程序中通常有可全訪問的數(shù)據(jù)及過程,由主程序或其子程序來控制及操作這些數(shù)據(jù)。程序的每個(gè)部分都可以訪問全局?jǐn)?shù)據(jù),得到數(shù)據(jù)的一部分,操作這些數(shù)據(jù),然后在在需要時(shí),保存對數(shù)據(jù)的更改。14對于面向?qū)ο缶幊坛绦虮粍澐譃橐唤M通信的對象。每個(gè)對象均封裝了關(guān)于某個(gè)概念所有行為和信息實(shí)現(xiàn)功能的能力、實(shí)現(xiàn)功能所需的“知識”或數(shù)據(jù)被分布在對象之中。當(dāng)一個(gè)對象對其他對象有需求時(shí),就向該對象發(fā)出消息,這個(gè)對象接受到此消息后做出相應(yīng)的動作并很有可能返回值給調(diào)用者。第一個(gè)對象甚至可以在第二個(gè)對象不存在的情況下創(chuàng)建該對象山東大學(xué)計(jì)算機(jī)學(xué)院15因此,要開始進(jìn)行面向?qū)ο缶幊虝r(shí),通常就是先創(chuàng)建幾個(gè)對象,然后讓這些對象開始通信。這種面向?qū)ο缶幊痰挠^點(diǎn),即對象分?jǐn)偣ぷ骱拓?zé)任,對我們而言是十分熟悉的,因?yàn)楝F(xiàn)實(shí)中人類也采用這樣的交互方式。例如一位企業(yè)主,并不需要對所有的事親歷親為,事實(shí)上,該企業(yè)主只需要將任務(wù)分配給雇員。每位雇員不僅要完成給定的任務(wù),并且還得負(fù)責(zé)維護(hù)和該任務(wù)相關(guān)的數(shù)據(jù)。比如,秘書不僅需要負(fù)責(zé)打印文件,也要負(fù)責(zé)將文件存放在適合的檔案柜中;并且,如果文件中存放的是機(jī)密數(shù)據(jù),秘書也要負(fù)責(zé)保護(hù)這些文件,并且負(fù)責(zé)允許或拒絕他人對文件的查看。在秘書的工作過程中,他可能還需要辦公室內(nèi)外其他人員的幫助。162.1.2面向?qū)ο笳Z言類(class)的概念可以從建模角度及編程語言的角度來理解。在設(shè)計(jì)軟件應(yīng)用的時(shí)候,類模型將對系統(tǒng)中重要的概念進(jìn)行抽象處理,建立良好定義的責(zé)任及與其他類的良好關(guān)系。在面向?qū)ο缶幊陶Z言中,類可以被視為對象的模板,而這些對象描述了某種行為、某些責(zé)任以及某些相關(guān)數(shù)據(jù)對象(object)是類的實(shí)例。一個(gè)對象就類似于一位秘書或一位警察。對象所屬的類定義了該對象擁有的數(shù)據(jù)類型、該對象的行為及該對象對這些數(shù)據(jù)的責(zé)任。但對于一位秘書而言,個(gè)人擁有用各自需要維護(hù)的數(shù)據(jù)(各自的狀態(tài))。17對象之間通過消息傳遞的方式通信并命令彼此進(jìn)行動作。通過向其他對象傳遞消息,第一個(gè)對象讓第二個(gè)對象執(zhí)行某些代碼。這些代碼實(shí)際上就是一個(gè)過程濃面向?qū)ο笳Z言中稱為方法(method),該過程與第二個(gè)對象關(guān)聯(lián)。因此,消息傳遞實(shí)際上就是一個(gè)對象向另一個(gè)對象發(fā)出的要求執(zhí)行其某個(gè)方法的要求(或命令)。通過這個(gè)機(jī)制,對象可以被視為能對發(fā)出請求的任何客戶端提供服務(wù)的服務(wù)器(通過消息的接受)。182.1.3面向?qū)ο缶幊痰膬?yōu)點(diǎn)面向?qū)ο蟮姆绞脚c非面向?qū)ο蟮姆绞较啾扔捎谒^的“智能”被分布在了各個(gè)對象之中,每個(gè)對象都維護(hù)了各自實(shí)現(xiàn)任務(wù)所需的數(shù)據(jù),將數(shù)據(jù)保存于較小的可管理單元就相對比較容易,這種方式也便于理解這些單元是如何互相影響的。面向?qū)ο缶幊痰姆植夹钥梢栽黾哟a的可讀性。對于非面向?qū)ο蟪绦蚨?,在全局?jǐn)?shù)據(jù)結(jié)構(gòu)上的一次小改動將有可能迫使所有訪問該數(shù)據(jù)的過程進(jìn)行相應(yīng)的改變。設(shè)計(jì)良好的面向?qū)ο蟪绦蛑挥猩倭康娜謹(jǐn)?shù)據(jù),而將大部分?jǐn)?shù)據(jù)存儲于對象中進(jìn)行內(nèi)部使用。19對象所屬的類中的數(shù)據(jù)存儲方式的改變通常意味著,程序中需要改變的部分只

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論