vc程序設(shè)計課件-溫秀梅第一章.ppt_第1頁
vc程序設(shè)計課件-溫秀梅第一章.ppt_第2頁
vc程序設(shè)計課件-溫秀梅第一章.ppt_第3頁
vc程序設(shè)計課件-溫秀梅第一章.ppt_第4頁
vc程序設(shè)計課件-溫秀梅第一章.ppt_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Visual C+面向?qū)ο蟪绦蛟O(shè)計,主講:溫秀梅,( 1 ),教材、參考書與課時安排,教材 Visual C+面向?qū)ο蟪绦蛟O(shè)計教程與實驗 溫秀梅 丁學(xué)鈞 編著 清華大學(xué)出版社 參考書 面向?qū)ο蟮睦碚撆cC+實踐 王燕 清華大學(xué)出版社 C+面向?qū)ο蟪绦蛟O(shè)計 譚浩強主編 中國鐵道出版社,課時安排 授課 :34學(xué)時 上機(jī)實習(xí):30學(xué)時,第1章 緒 論,1.1 面向?qū)ο蠓椒ǖ钠鹪?1.2 面向?qū)ο笫擒浖椒▽W(xué)的返樸歸真 1.3 結(jié)構(gòu)化程序設(shè)計與面向?qū)ο蟪绦蛟O(shè)計 1.4 面向?qū)ο蟮幕靖拍詈兔嫦驅(qū)ο笙到y(tǒng)的特性 1.5 面向?qū)ο蟪绦蛟O(shè)計語言的四大家族 1.6 面向?qū)ο蟮南到y(tǒng)開發(fā)方法 1.7 面向?qū)ο蟪绦蛟O(shè)計舉例 附錄A 程序的調(diào)試與運行,CPU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成 如:10000000 加 10010000 減,用助記符號描述的指令系統(tǒng) 如 ADD A, B,面向機(jī)器的語言,程序設(shè)計是數(shù)據(jù)被加工的過程,客觀世界可以分類,對象是類的實例 對象是數(shù)據(jù)和方法的封裝 對象間通過發(fā)送和接受消息發(fā)生聯(lián)系,程序設(shè)計關(guān)鍵是定義類,并由類派生對象,1.1 面向?qū)ο蠓椒ǖ钠鹪?軟件設(shè)計人員的負(fù)擔(dān)越來越重,軟件的實現(xiàn)越來越龐大,為計算機(jī)領(lǐng)域自身的發(fā)展提出了新的要求。利用傳統(tǒng)的程序設(shè)計思想無法滿足這一要求,人們就開始尋求一種更能反映人類解決問題的自然方法,這就是“面向?qū)ο蟆奔夹g(shù)。 50年代的程序都是用指令代碼或匯編語言編寫的 60年代高級語言的出現(xiàn)大大簡化了程序設(shè)計,縮短了軟件開發(fā)周期自60年代末到70年代初,出現(xiàn)了大型軟件系統(tǒng),如操作系統(tǒng)、數(shù)據(jù)庫,這給程序設(shè)計帶來了新的問題??煽啃圆?,錯誤多,且不易維護(hù)和修改-“軟件危機(jī)”。,1.1 面向?qū)ο蠓椒ǖ钠鹪?為了克服60年代出現(xiàn)的軟件危機(jī),1968年北約組織提出“軟件工程”的概念。對程序設(shè)計語言的認(rèn)識從強調(diào)表達(dá)能力為重點轉(zhuǎn)向以結(jié)構(gòu)化和簡明性為重點,將程序從語句序列轉(zhuǎn)向相互作用的模塊集合。1969年,E.W.Dijkstra首先提出了結(jié)構(gòu)化程序設(shè)計的概念,他強調(diào)從程序結(jié)構(gòu)和風(fēng)格上來研究程序設(shè)計。在軟件工程的迫切要求下,70年代結(jié)構(gòu)化語言獲得蓬勃發(fā)展并得到廣泛應(yīng)用。使用結(jié)構(gòu)化程序設(shè)計方法可顯著地減少軟件的復(fù)雜性,提高軟件的可靠性、可測試性和可維護(hù)性。經(jīng)過幾年的探索和實踐,結(jié)構(gòu)化程序設(shè)計的應(yīng)用確實取得了成效,用結(jié)構(gòu)化程序設(shè)計的方法編寫出來的程序不僅結(jié)構(gòu)良好,易寫易讀,而且易于證明其正確性。,進(jìn)入80年代,由于一系列高技術(shù)的研究,如第五代計算機(jī)、計算機(jī)輔助制造CAM和知識工程等領(lǐng)域的研究都迫切要求大型的軟件系統(tǒng)作為支撐。他們所用的數(shù)據(jù)類型也超出了常規(guī)的結(jié)構(gòu)化數(shù)據(jù)類型的范疇,提出對圖像、聲音、規(guī)則等非結(jié)構(gòu)化信息的管理。為了適應(yīng)這些應(yīng)用領(lǐng)域的需要,迫切要求軟件模塊具有更強的獨立自治性,以便于大型軟件的管理、維護(hù)和重用。由于結(jié)構(gòu)化語言的數(shù)據(jù)類型較為簡單,所以不能勝任對非結(jié)構(gòu)化數(shù)據(jù)的定義與管理,采用過程調(diào)用機(jī)制也不夠靈活,獨立性較差。,為了適應(yīng)高技術(shù)發(fā)展的需要,消除結(jié)構(gòu)化編程語言的局限,自80年代以來,出現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計流派,研制出了多種面向?qū)ο蟪绦蛟O(shè)計語言(簡稱為OOPL:Object Oriented Programming Language),如Ada,Smalltalk,C+和當(dāng)前使用在Internet上的平臺無關(guān)語言Java等。,由于OOPL的對象、類具有高度的抽象性,所以它能很好地表達(dá)任何復(fù)雜的數(shù)據(jù)類型,也允許程序員靈活地定義自己所需要的數(shù)據(jù)類型。類本身具有很完整的封裝性,可以使用它作為編程中的模塊單元,滿足模塊獨立自治的需求。再加上繼承性和多態(tài)性,更有助于簡化大型軟件和大量重復(fù)定義的模塊,增強了模塊的可重用性,提高了軟件的可靠性,縮短了軟件的開發(fā)周期。,1.2 面向?qū)ο笫擒浖椒▽W(xué)的返樸歸真,客觀世界是由許多具體的事物、抽象的概念、規(guī)則等組成的,我們將任何感興趣或要加以研究的事、物、概念統(tǒng)稱為對象(Object)。每個對象都有各自的內(nèi)部狀態(tài)和運動規(guī)律,不同對象之間通過消息傳遞進(jìn)行相互作用和聯(lián)系就構(gòu)成了各種不同的系統(tǒng)。面向?qū)ο蟮姆椒ㄕ且詫ο笞鳛樽罨驹氐囊环N分析問題和解決問題的方法。,傳統(tǒng)的結(jié)構(gòu)化方法強調(diào)的是功能抽象和模塊化,每個模塊都是一個過程。結(jié)構(gòu)化方法處理問題是以過程為中心的。面向?qū)ο髲娬{(diào)的是功能抽象和數(shù)據(jù)抽象,用對象來描述事物和過程。而對象包含數(shù)據(jù)和對數(shù)據(jù)的操作,是對數(shù)據(jù)和功能的抽象和統(tǒng)一。面向?qū)ο蠓椒ㄌ幚韱栴}的過程是對一系列相關(guān)對象的操縱,即發(fā)送消息到目標(biāo)對象中,由對象執(zhí)行相應(yīng)的操作。因此面向?qū)ο蠓椒ㄊ且詫ο鬄橹行牡模@種以對象為中心的方法更自然、更直接地反映現(xiàn)實世界的問題空間,具有獨特的抽象性、封裝性、繼承性和多態(tài)性,能更好地適應(yīng)復(fù)雜大系統(tǒng)不斷發(fā)展與變化的要求。,采用對象的觀點看待所要解決的問題,并將其抽象為應(yīng)用系統(tǒng)是極其自然與簡單的,因為它符合人類的思維習(xí)慣,使得應(yīng)用系統(tǒng)更容易理解。同時,由于應(yīng)用系統(tǒng)是由相互獨立的對象構(gòu)成的,使得系統(tǒng)的修改可以局部化,因此系統(tǒng)更易于維護(hù)。 軟件開發(fā)從本質(zhì)上講就是對軟件所要處理的問題域進(jìn)行正確的認(rèn)識,并把這種認(rèn)識正確地描述出來。既然如此,那就應(yīng)該直接面對問題域中客觀存在的事物來進(jìn)行軟件開發(fā),這就是面向?qū)ο?。另一方面,人類在認(rèn)識世界的歷史長河中形成的普遍有效的思維方法,在軟件開發(fā)中也應(yīng)該是適用的。在軟件開發(fā)中盡量采用人們在日常生活中習(xí)慣的思維方式和表達(dá)方式,這就是面向?qū)ο蠓椒ㄋ鶑娬{(diào)的基本原則。軟件開發(fā)從過分專業(yè)化的方法、規(guī)則和技巧中回到了客觀世界,回到了人們的日常思維,所以說面向?qū)ο蠓椒ㄊ擒浖椒▽W(xué)的返樸歸真。,1.3結(jié)構(gòu)化程序設(shè)計與面向?qū)ο蟪绦蛟O(shè)計,1.結(jié)構(gòu)化程序設(shè)計,程序=數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計語言+語言環(huán)境,1.自頂向下、逐步細(xì)化:結(jié)構(gòu)化程序設(shè)計的主要思想是功能分解并逐步求精。當(dāng)一些任務(wù)復(fù)雜以至無法描述時,可以將它拆分為一系列較小的功能部件,直到這些完備的子任務(wù)小到易于理解的程度。這種方法叫“自頂向下,逐步細(xì)化”。 2.模塊化設(shè)計:在程序設(shè)計中常采用模塊化設(shè)計的方法,尤其是當(dāng)程序比較復(fù)雜時,更有必要。在拿到一個程序模塊(實際上是程序模塊的任務(wù)書)以后,根據(jù)程序模塊的功能將它劃分為若干個子模塊,如果嫌這些子模塊的規(guī)模大,還可以劃分為更小的模塊。這個過程采用自頂向下方法來實現(xiàn)。結(jié)構(gòu)化程序設(shè)計方法可以解決人腦思維能力的局限性和所處理問題的復(fù)雜性之間的矛盾。 3.結(jié)構(gòu)化編碼:在設(shè)計好一個結(jié)構(gòu)化的算法之后,還要善于進(jìn)行結(jié)構(gòu)化編碼。即用高級語言語句正確地實現(xiàn)順序、選擇、循環(huán)三種基本結(jié)構(gòu)。,1. 結(jié)構(gòu)化程序設(shè)計方法,面向?qū)ο蟪绦蛟O(shè)計將數(shù)據(jù)及對數(shù)據(jù)的操作放在一起,作為一個相互依存、不可分割的整體來處理,它采用了數(shù)據(jù)抽象和信息隱藏技術(shù)。它將對象及對對象的操作抽象成一種新的數(shù)據(jù)類型類,并且考慮不同對象之間的聯(lián)系和對象所在類的重要性。 面向?qū)ο蟪绦蛟O(shè)計優(yōu)于傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計,其優(yōu)越性表現(xiàn)在,它有希望解決軟件工程的兩個主要的問題軟件復(fù)雜性控制和軟件生產(chǎn)率的提高,此外它還符合人類的思維習(xí)慣,能夠自然地表現(xiàn)現(xiàn)實世界的實體和問題,它對軟件開發(fā)過程具有重要的意義。 面向?qū)ο蟪绦蛟O(shè)計能支持的軟件開發(fā)策略有: (1) 編寫可重用代碼; (2) 編寫可維護(hù)的代碼; (3) 共享代碼; (4) 精減已有的代碼。,2. 面向?qū)ο蟪绦蛟O(shè)計程序設(shè)計的新思維,1.對象:是計算機(jī)內(nèi)存中的一塊區(qū)域,通過將內(nèi)存分塊,每個模塊(即對象)在功能上相互之間保持相對獨立。當(dāng)對象的一個成員函數(shù)被調(diào)用時,對象執(zhí)行其內(nèi)部的代碼來響應(yīng)這個調(diào)用,這使對象呈現(xiàn)出一定的行為。行為及其結(jié)果就是該對象的功能。 2.面向?qū)ο螅菏且环N認(rèn)識世界的方法也是一種程序設(shè)計方法。面向?qū)ο蟮挠^點認(rèn)為,客觀世界是由各種各樣的實體,也就是對象組成的。每種對象都有自己的內(nèi)部狀態(tài)和運動規(guī)律,不同對象間的相互聯(lián)系和相互作用就構(gòu)成了各種不同的系統(tǒng),并進(jìn)而構(gòu)成整個客觀世界。按照這樣的思想設(shè)計程序,就是面向?qū)ο蟮某绦蛟O(shè)計?!懊嫦?qū)ο蟆辈粌H僅作為一種技術(shù)、更作為一種方法貫穿于軟件設(shè)計的各個階段。 3.面向?qū)ο蟪绦蛟O(shè)計:是在面向過程的程序設(shè)計基礎(chǔ)上的質(zhì)的飛躍。面向?qū)ο蠓椒ǖ漠a(chǎn)生,是計算機(jī)科學(xué)發(fā)展的要求。面向?qū)ο蟮募夹g(shù)在系統(tǒng)程序設(shè)計、數(shù)據(jù)庫及多媒體應(yīng)用等領(lǐng)域都得到廣泛應(yīng)用。,程序=對象+對象+對象 對象=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計語言+語言環(huán)境,2. 面向?qū)ο蟪绦蛟O(shè)計OOP,1.4 面向?qū)ο蟮幕靖拍詈兔嫦驅(qū)ο笙到y(tǒng)的特性,1.4.1 面向?qū)ο蟮幕靖拍?1.4.1 面向?qū)ο蟮幕靖拍?1.4.1 面向?qū)ο蟮幕靖拍?1.4.1 面向?qū)ο蟮幕靖拍?對象(object),(1) 具有唯一標(biāo)識名,可以區(qū)別于其他對象。,(2) 具有一個狀態(tài),由與其相關(guān)聯(lián)的屬性值集合所表征。,(3) 有一組操作方法即服務(wù),每個操作決定對象的一種行為。,(4) 一個對象的成員仍可以是一個對象。,(5) 模塊獨立性。,(6) 動態(tài)連接性,(7) 易維護(hù)性,客觀世界中的對象之間是有聯(lián)系的,在面向?qū)ο蟪绦蛟O(shè)計中,通過消息機(jī)制,把對象之間動態(tài)連接在一起,使整個機(jī)體運轉(zhuǎn)起來,便稱為對象的連接性。有一組操作(服務(wù)),每一個操作決定對象的一種功能或行為。,從邏輯上看,一個對象是獨立存在的模塊。模塊內(nèi)部狀態(tài)不因外界的干擾而改變,也不會涉及到其他模塊;模塊間的依賴性極小或幾乎沒有;各模塊可獨立地被系統(tǒng)所組合選用,也可被程序員重用,不必?fù)?dān)心破壞其他模塊。,在面向?qū)ο笙到y(tǒng)中,并不是將各個具體的對象都進(jìn)行描述,而是忽略其非本質(zhì)的特性,找出其共性,將對象劃分成不同的類,這一過程為抽象過程。類是對象的抽象及描述,是具有共同屬性和操作的多個對象的相似特性的統(tǒng)一描述體。在類的描述中,每個類要有一個名字標(biāo)識,用以表示一組對象的共同特征。類中的每個對象都是該類的實例。類提供了完整的解決特定問題的能力,因為類描述了數(shù)據(jù)結(jié)構(gòu)(對象屬性)、算法(服務(wù)、方法)和外部接口(消息協(xié)議),是一種用戶自定義的數(shù)據(jù)類型。,2. 類(class),消息是面向?qū)ο笙到y(tǒng)中實現(xiàn)對象間的通信和請求任務(wù)的操作,是要求某個對象執(zhí)行其中某個功能操作的規(guī)格說明。發(fā)送消息的對象稱為發(fā)送者,接受消息的對象稱為接收者。對象間的聯(lián)系,只能通過消息來進(jìn)行。對象在接收到消息時才被激活。 消息具有三個性質(zhì):,3. 消息(message),(1) 同一對象可接收不同形式的多個消息,產(chǎn)生不同的響應(yīng); (2) 相同形式的消息可以送給不同對象,所做出的響應(yīng)可以是截然不同的; (3) 消息的發(fā)送可以不考慮具體的接收者,對象可以響應(yīng)消息,也可以對消息不予理會,對消息的響應(yīng)并不是必須的。,對象之間傳送的消息一般由三部分組成:接受對象名、調(diào)用操作名和必要的參數(shù)。 在面向?qū)ο蟪绦蛟O(shè)計中,消息分為兩類:公有消息和私有消息。假設(shè)有一批消息發(fā)向同一個對象,其中一部分消息是由其他對象直接向它發(fā)送的,稱為公有(public)消息;另一部分消息是它向自己發(fā)送的,稱為私有(private)消息。,在面向?qū)ο蟪绦蛟O(shè)計中,要求某一對象做某一操作時,就向?qū)ο蟀l(fā)送一個相應(yīng)的消息,當(dāng)對象接收到發(fā)向它的消息時,就調(diào)用有關(guān)的方法,執(zhí)行相應(yīng)的操作。方法就是對象所能執(zhí)行的操作。方法包括界面和方法體兩部分。方法的界面就是消息的模式,它給出了方法的調(diào)用協(xié)議;方法體則是實現(xiàn)某種操作的一系列計算步驟,也就是一段程序。消息和方法的關(guān)系是:對象根據(jù)接收到的消息,調(diào)用相應(yīng)的方法;反過來,有了方法,對象才能響應(yīng)相應(yīng)的消息。所以消息模式與方法界面應(yīng)該是一致的。同時,只要方法界面保持不變,方法體的改動不會影響方法的調(diào)用。在C+語言中方法是通過函數(shù)來實現(xiàn)的,稱為成員函數(shù)。,4. 方法(method),(1) 抽象性,1.4.2 面向?qū)ο笙到y(tǒng)的特性,面向?qū)ο蠊膭畛绦騿T以抽象的觀點看待程序,即程序是由一組對象組成的。我們可以將一組對象的共同特征進(jìn)一步抽象出來,從而形成“類”的概念。抽象是一種從一般的觀點看待事物的方法,它要求程序員集中于事物的本質(zhì)特征,而不是具體細(xì)節(jié)或具體實現(xiàn)。類的概念來自人們認(rèn)識自然、認(rèn)識社會的過程。在這一過程中,人們主要使用兩種方法:從特殊到一般的歸納法和從一般到特殊的演繹法。在歸納的過程中,我們從一個個具體的事物中把共同的特征抽取出來,形成一個一般的概念,這就是“歸類”;在演繹的過程中,我們又把同類的事物,根據(jù)不同的特征分成不同的小類,這就是“分類”。對于一個具體的類,它有許多具體的個體,我們稱這些個體叫做“對象”。,所謂數(shù)據(jù)封裝就是指一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)的操作集合組裝在一起,形成一個能動的實體,也就是對象。數(shù)據(jù)封裝就是給數(shù)據(jù)提供了與外界聯(lián)系的標(biāo)準(zhǔn)接口,無論是誰,只有通過這些接口,使用規(guī)范的方式,才能訪問這些數(shù)據(jù)。數(shù)據(jù)封裝是軟件工程發(fā)展的必然產(chǎn)物,使得程序員在設(shè)計程序時可以專注于自己的對象,同時也切斷了不同模塊之間數(shù)據(jù)的非法使用,減少了出錯的可能性。,(2) 封裝性,從已有的對象類型出發(fā)建立一種新的對象類型,使它繼承原對象的特點和功能,這種思想是面向?qū)ο笤O(shè)計方法的主要貢獻(xiàn)。繼承是對許多問題中分層特性的一種自然描述,因而也是類的具體化和被重新利用的一種手段,它所表達(dá)的就是一種對象類之間的相交關(guān)系。它使得某類對象可以繼承另外一類對象的特征和能力。繼承所具有的作用有兩個方面:一方面可以減少代碼冗余;另一方面可以通過協(xié)調(diào)性來減少相互之間的接口和界面。 從繼承源上劃分繼承可分為單繼承(單一繼承)和多繼承(多重繼承)。 從繼承內(nèi)容上繼承可分為取代繼承、包含繼承、受限繼承、特化繼承。,(3) 繼承性,(1) 取代繼承:例如一個徒弟從其師傅那里學(xué)到師傅的所有技術(shù),則在任何需要師傅的地方都可以由徒弟來代替。 (2) 包含繼承:例如交通工具是一類對象,汽車是一種特殊的交通工具。汽車具有了交通工具的所有特征,任何一輛汽車都是一種交通工具,這便是包含繼承,即交通工具包含了汽車的所有特征。 (3) 受限繼承:例如鴕鳥是一種特殊的鳥,它不能繼承鳥會飛的特征。 (4) 特化繼承:例如教師是一類特殊的人,他們比一般人具有更多的特有信息,這就是特化繼承。,4多態(tài)性(polymorphism) 不同的對象接收到相同的消息時產(chǎn)生多種完全不同的行為的現(xiàn)象稱為多態(tài)性。C+語言支持兩種多態(tài)性即編譯時的多態(tài)性和運行時的多態(tài)性。編譯時的多態(tài)性通過重載函數(shù)實現(xiàn),而運行時的多態(tài)性通過虛函數(shù)實現(xiàn)。使用多態(tài)性可以大大提高了我們解決復(fù)雜問題的能力。,1.5 面向?qū)ο蟪绦蛟O(shè)計語言的四大家族,(1) LISP家族 LISP是50年代開發(fā)出來的一種語言,它以表處理為特色,是一種人工智能語言,70年代以來,在LISP基礎(chǔ)上開發(fā)了很多LISP家族的面向?qū)ο笳Z言。 (2) Simula Simula語言是60年代開發(fā)出來的,在Simula中引入了幾個面向?qū)ο蟪绦蛟O(shè)計語言中最重要的概念和特性,即數(shù)據(jù)抽象、類和繼承性機(jī)制。 (3) Smalltalk Smalltalk是第一個真正的面向?qū)ο蟪绦蛟O(shè)計語言,它體現(xiàn)了純粹的OOP設(shè)計思想,是最純的OOP語言。它起源于Simula語言。盡管Smalltalk不斷完善,但在那個時期,面向?qū)ο蟪绦蛟O(shè)計語言并沒有得到廣泛的重視,程序設(shè)計的主流是結(jié)構(gòu)化程序設(shè)計。,(4) C家族 在19世紀(jì)80年代,C語言成為一種極其流行、應(yīng)用非常廣泛的語言。C+是在C語言的基礎(chǔ)上進(jìn)行擴(kuò)充,并增加了類似Smalltalk語言中相應(yīng)的對象機(jī)制。它將“類”看作是用戶定義類型,使其擴(kuò)充比較自然。C+以其高效的執(zhí)行效率贏得了廣大程序設(shè)計員的青睞是一種混合型的面向?qū)ο蟪绦蛟O(shè)計語言,由于它的出現(xiàn),才使面向?qū)ο蟮某绦蛟O(shè)計語言越來越得到重視和廣泛的應(yīng)用。 面向?qū)ο笳Z言可以分為兩大類,純粹的面向?qū)ο笳Z言和混合型的面向?qū)ο笳Z言。在純粹的面向?qū)ο笳Z言中,幾乎所有的語言成分都是“對象”,這類語言強調(diào)開發(fā)快速原型的能力;而混合型的面向?qū)ο笳Z言,是在傳統(tǒng)的過程化語言中加入了各種面向?qū)ο蟮恼Z言機(jī)制,它所強調(diào)的是運行效率。真正的面向?qū)ο蟪绦蛟O(shè)計語言提供了特定的語法成分來保證和支持面向?qū)ο蟪绦蛟O(shè)計,并且提供了繼承性、多態(tài)性和動態(tài)鏈接機(jī)制,使得類和類庫成為可重用的模塊。,1.6 面向?qū)ο蟮南到y(tǒng)開發(fā)方法,面向?qū)ο蟮拈_發(fā)方法可分為四個階段: (1) 系統(tǒng)調(diào)查和需求分析。即對應(yīng)用系統(tǒng)將要實現(xiàn)的功能以及用戶對系統(tǒng)開發(fā)的需求進(jìn)行調(diào)查研究。這是所有開發(fā)方法都必須進(jìn)行的。 (2) 分析問題的性質(zhì)和求解問題。在繁雜的問題域中抽象地識別出對象及其行為、結(jié)構(gòu)、屬性、方法等。這一階段稱為面向?qū)ο蠓治觯喎Q為OOA。 (3) 整理問題。即對分析的結(jié)果作進(jìn)一步的抽象、歸類、整理,最終以規(guī)范的形式描述對象和類。這一步稱為面向?qū)ο笤O(shè)計,簡稱為OOD。 (4) 程序?qū)崿F(xiàn)。即用面向?qū)ο蟮某绦蛟O(shè)計語言將上一步整理的對象和類的描述映射為應(yīng)用程序軟件。這一步一般稱為面向?qū)ο蟪绦蛟O(shè)計,簡稱為OOP。,1.7 面向?qū)ο蟪绦蛟O(shè)計舉例,分析:通過上述程序可以得知,在面向?qū)ο蟪绦蛟O(shè)計中,程序是由不同的對象構(gòu)成的;類是一種用戶自定義的數(shù)據(jù)類型,通過類定義的變量稱為對象;類和對象構(gòu)成面向?qū)ο蟪绦蛟O(shè)計的不同模塊;通過不同的對象發(fā)送消息即可完成相應(yīng)的操作。, 【例1.1】使用面向?qū)ο蟪绦蛟O(shè)計方法,編寫一對堆棧進(jìn)行處理的程序,包括壓棧和彈棧操作。,C+程序的書寫格式,C+程序的書寫格式比較自由,一般一行寫一條語句。對于短語句也可一行寫多個,中間用“;”分隔。對于長語句也可將一條語句分寫在多行上,分行原則是不能將一個單詞分開,也不要將雙撇號引用的一個字符串分開。 為了程序書寫得清晰,提高程序的可讀性,一般采用縮進(jìn)格式。即同一層次語句要對齊,不同層次語句要縮進(jìn)若干個字符。如循環(huán)體中的語句和選擇體中的語句要縮進(jìn)對齊。 花括號的書寫方法較多, 常用的是每個花括號占一行,并與使用花括號的語句對齊,花括號內(nèi)的語句采用縮格書寫的方式;另有一種形式是花括號與所括內(nèi)容占一行。,習(xí)慣用小寫字母,大小寫敏感 不

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論