上海交通大學計算機集成技術(shù)開放實驗室_第1頁
上海交通大學計算機集成技術(shù)開放實驗室_第2頁
上海交通大學計算機集成技術(shù)開放實驗室_第3頁
上海交通大學計算機集成技術(shù)開放實驗室_第4頁
上海交通大學計算機集成技術(shù)開放實驗室_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于C++的面向?qū)ο缶幊探坛逃谇鄯?003年春12/8/2022Dr.HaiinZhu關(guān)于課程(1)目標

進一步學會面向過程編程理解面向?qū)ο笏枷胍詫ο蟮姆绞剿伎际煜++(P)利用C++編程12/8/2022Dr.HaiinZhu在本課程中:C++是一個學習面向?qū)ο蟾拍畹墓ぞ哌\用面向?qū)ο竽J竭M行程序設(shè)計12/8/2022Dr.HaiinZhu采用面向?qū)ο蠓椒ǖ男Ч?OOA/OOD)可維護性可擴展性可靠性12/8/2022Dr.HaiinZhu如何實現(xiàn)課程目標閱讀和記憶閱讀書籍,記住語言特點思考以對象和類的方式思考實踐多編程12/8/2022Dr.HaiinZhu參考課本C++程序設(shè)計教程(錢能),清華大學出版社C++程序設(shè)計教程,H.M.Deitel,P.J.Deitel著,機械工業(yè)出版社C++大學教程(第二版),HarveayM.Deitel著,電子工業(yè)出版社

C++Primer(第三版),StanleyB.lippmanJoseeLajoie著,中國電力出版社C++編程思想(ThinkinginC++),BruceEckel著,機械工業(yè)出版社12/8/2022Dr.HaiinZhu1從C語言到C++語言C語言以其如下獨有的特點風靡了全世界:(1)語言簡潔、緊湊,使用方便、靈活。C語言只有32個關(guān)鍵字,程序書寫形式自由。(2)豐富的運算符和數(shù)據(jù)類型。(3)可以直接訪問內(nèi)存地址,能進行位操作,使其能夠勝任開發(fā)操作系統(tǒng)的工作。12/8/2022Dr.HaiinZhu(4)生成的目標代碼質(zhì)量高,程序運行效率高。(5)可移植性好。12/8/2022Dr.HaiinZhu局限性:(1)數(shù)據(jù)類型檢查機制相對較弱,這使得程序中的一些錯誤不能在編譯階段被發(fā)現(xiàn)。(2)C本身幾乎沒有支持代碼重用的語言結(jié)構(gòu),因此一個程序員精心設(shè)計的程序,很難為其它程序所用。(3)當程序的規(guī)模達到一定程度時,程序員很難控制程序的復雜性。12/8/2022Dr.HaiinZhu發(fā)展1980年,貝爾實驗室的BjarneStroustrup開始對C進行改進和擴充。1983年正式命名為C++。在經(jīng)歷了3次C++修訂后,1994年制定了ANSIC++標準的草案。以后又經(jīng)過不斷完善,成為目前的C++。C++仍在不斷發(fā)展中。美國微軟公司現(xiàn)已推出C#(CSharp)語言,來代替C++語言。12/8/2022Dr.HaiinZhu編譯器器VC++6.0或其它它(TurborC3.0,BorlandC++)12/8/2022Dr.HaiinZhu有關(guān)面向向?qū)ο缶幘幊痰木W(wǎng)網(wǎng)站12/8/2022Dr.HaiinZhuC++的的網(wǎng)站12/8/2022Dr.HaiinZhuObject-Oriented編編程簡簡介12/8/2022Dr.HaiinZhu內(nèi)容方法學編程技術(shù)面向?qū)ο笳Z言言12/8/2022Dr.HaiinZhu1.方法學學12/8/2022Dr.HaiinZhu思考考問問題題的的方方法法歸納納從特特殊殊到到一一般般從不不同同的的dogs到到詞詞匯匯““dog””Dog12/8/2022Dr.HaiinZhu思考考問問題題的的方方法法演繹繹從一一般般到到特特殊殊從詞詞匯匯““dog””,,你你可可以以區(qū)區(qū)別別出出一一個個動動物物是是還還是是不不是是一一條條狗狗DOG12/8/2022Dr.HaiinZhu面向?qū)ο笏且环N思考考方法世界上的任何何東西都是一一個對象;任何系統(tǒng)都是是由對象構(gòu)成成的(當然然系統(tǒng)也是一一個對象);系統(tǒng)的演化和和開發(fā)就是通通過系統(tǒng)內(nèi)外外的對象進行行交互完成的的。12/8/2022Dr.HaiinZhu世界上的任何何東西都是一一個對象花,樹,動動物學生,教授授桌子,椅子子,教室,建筑大學,城市市,國家世界,宇宙宙學科,如計算算機,信息系系統(tǒng),數(shù)學,,歷史…12/8/2022Dr.HaiinZhu任何系統(tǒng)都是是由對象構(gòu)成成的法律系統(tǒng)文化化系系統(tǒng)統(tǒng)教育育系系統(tǒng)統(tǒng)經(jīng)濟濟系系統(tǒng)統(tǒng)信息息系系統(tǒng)統(tǒng)計算算機機系系統(tǒng)統(tǒng)12/8/2022Dr.HaiinZhu系統(tǒng)統(tǒng)開開發(fā)發(fā)就就是是定定義義對對象象間間的的交交互互浙江江林林學學院院是是由由下下列列對對象象的的交交互互構(gòu)構(gòu)成成的的:學生生教授授職員員浙江江省省政政府府中國國政政府府…...林院院內(nèi)內(nèi)部部林院院外外部部12/8/2022Dr.HaiinZhu設(shè)計計方方法法學學面向向?qū)ο笙笫资紫认仁鞘且灰环N種設(shè)設(shè)計計方方法法學學(OOA/OOD)對象象是是程程序序的的構(gòu)構(gòu)成成模模塊塊(接接口口對對象象(editor,menu,file,etc),數(shù)數(shù)據(jù)據(jù)管管理理對對象象(db),etc.).對象代表表了在應(yīng)應(yīng)用中對對現(xiàn)實世世界的抽抽象.12/8/2022Dr.HaiinZhu設(shè)計方法法學面向?qū)ο笙笾С謿w納:對對象->類類需要OOA/OOD工工具.演繹:類類->對象編程者需需要學習習有關(guān)類類庫的知知識12/8/2022Dr.HaiinZhu設(shè)計方法法學面向?qū)ο笙笾С諸op-down:從從超類類到子類類Bottom-up:從子子類到超超類12/8/2022Dr.HaiinZhu面向?qū)ο缶幘幊痰幕A(chǔ)礎(chǔ)*對象*封裝*繼承一般說來,,對象是根根據(jù)類來定定義的。我我們也可以以用一個類類來定義另另一個類。。例如,山山地車、賽賽車和雙座座自行車都都是自行車車的一種。。用面向?qū)ο蟮男g(shù)語語來說,它它都是自行行車類的子子類或派生生類,而自自行車類是是它們的超超類或父類類或基類。。它們的關(guān)關(guān)系如下圖圖所示:自行車每一個子類類繼承了超超類的數(shù)據(jù)據(jù)和操作,,但是,子子類并不是是局限于超超類的數(shù)據(jù)據(jù)和操作。。例如,雙雙座自行車車有兩個坐坐墊,山地地車有一個個額外的低低速齒輪。。繼承的主主要益處是是可以復用用超類的程程序代碼*多態(tài)賽車三地車雙座自行車車12/8/2022Dr.HaiinZhu面向向?qū)ο笙蟆笆朗澜缃缡鞘敲婷嫦蛳驅(qū)ο笙蟮牡摹薄?---AlanKaysaid.如果果你你對對世世界界了了解解,,那那么么你你就就了了解解了了面面向向?qū)ο笙?所以以,,面面向向?qū)ο笙笫鞘侨萑菀滓椎牡?12/8/2022Dr.HaiinZhu2.編程12/8/2022Dr.HaiinZhu編程就像寫作作.如果你能夠描描繪一樣東西西,你就可以以寫一個程序序.所以,編程也也是容易的.所以,面向?qū)ο蟮木幊痰鹊扔谌菀滓?容易易,得到““too(2)easy”.編程12/8/2022Dr.HaiinZhu編程但是,實際上上,編程并不不那么容易。。因為編一個個真正的好的的程序是不容容易的。它需需要編程者的的智慧,知識識和經(jīng)驗.就象寫作一樣樣,要成為一一個好的作家家,就需要很很多的經(jīng)驗和和對這個世界界的大量知識識。學習和練習就就必不可少。。12/8/2022Dr.HaiinZhu編程程技技術(shù)術(shù)非結(jié)結(jié)構(gòu)構(gòu)化化編編程程過程程編編程程模塊塊化化&結(jié)結(jié)構(gòu)構(gòu)化化編編程程抽象象數(shù)數(shù)據(jù)據(jù)類類型型面向向?qū)ο笙缶幘幊坛?2/8/2022Dr.HaiinZhu非結(jié)結(jié)構(gòu)構(gòu)化化編編程程我們們經(jīng)經(jīng)常常將將一一個個簡簡單單的的程程序序?qū)憣懗沙梢灰粋€個主主程程序序.此此處處,,主主程程序序代代表表了了命命令令和和聲聲明明的的一一個個序序列列,,這這個個系系列列在在整整個個程程序序中中對對全全局局數(shù)數(shù)據(jù)據(jù)進進行行修修改改.MainProgramData12/8/2022Dr.HaiinZhu缺點點這種技術(shù)只能能用于很小的的程序中.例如,如果相相同的聲明序序列在不同的的地方要多次次出現(xiàn)時,我我們就不得不不拷貝這些序序列。如果其其中發(fā)生了一一個錯誤,我我們就需要對對每一個拷貝貝進行修改.這就導致了我我們將這些序序列抽取出來來,單獨命名名,并通過調(diào)調(diào)用和返回值值的方法來實實現(xiàn)多處復用用的方法。12/8/2022Dr.HaiinZhu過程編程在過程編程中中,你可以將將序列歸在一一個地方過程調(diào)用可以以被用于調(diào)用用過程。在調(diào)調(diào)用完成后,,控制流繼續(xù)續(xù)往下。MainProgramProcedure12/8/2022Dr.HaiinZhu過程通過參數(shù)和子子過程(過過程的過程),程序序就可以寫得得更有結(jié)構(gòu)并并且可以減少少錯誤.例如,如果過過程是正確的的,那么每一一次使用它必必然可以獲得得正確的結(jié)果果因而,為了查查找錯誤,你你就可以縮小小查找的范圍圍.12/8/2022Dr.HaiinZhu模塊塊化化編編程程在模模塊塊化化編編程程中中,,具具有有公公共共功功能能的的過過程程被被集集中中在在不不同同的的模模塊塊中中一個個程程序序就就不不再再是是一一個個單單一一整整體體構(gòu)構(gòu)成成的的了了,,它它被被分分解解成成多多個個小小的的部部分分,,這這些些小小的的部部分分之之間間通通過過調(diào)調(diào)用用相相互互交交互互,,構(gòu)構(gòu)成成了了整整個個程程序序.12/8/2022Dr.HaiinZhuMainProgram(Alsoamodule)DataDataData1Module2+DataData2Module1+DataData1Procedure1Procedure2主程程序序協(xié)協(xié)調(diào)調(diào)多多個個模模塊塊之之間間的的調(diào)調(diào)用用,,并并進進行行數(shù)數(shù)據(jù)據(jù)的的傳傳送送Procedure312/8/2022Dr.HaiinZhu模塊化化編程程每一個個模塊塊都可可以有有自己己的數(shù)數(shù)據(jù)。。這將將允許許每一一個模模塊來來管理理內(nèi)部部狀態(tài)態(tài),這這些狀狀態(tài)可可以在在調(diào)用用這些些模塊塊中的的過程程時得得到修修改.因此,,每一一個模模塊都都有一一個狀狀態(tài),,每一一個模模塊在在整個個程序序中通通常也也最多多存在在一次次12/8/2022Dr.HaiinZhu結(jié)構(gòu)化化編程程結(jié)構(gòu)化化程序序中的的三種種結(jié)構(gòu)構(gòu)順序(s1,s2,……,sn)分支(if-then-else)循環(huán)Loop(for,do,andwhileloops)程序中中有多多少結(jié)結(jié)構(gòu)?12/8/2022Dr.HaiinZhu抽象數(shù)據(jù)類類型(ADTs)抽象模型抽象數(shù)據(jù)類類型屬性12/8/2022Dr.HaiinZhu抽象

--問題處理理手段為了理解問問題,需要要將不必要要的細節(jié)分分離出去:你將構(gòu)造你你自己針對對問題的抽抽象視圖,,抽象模型型這個建模過過程稱為抽抽象abstraction.12/8/2022Dr.HaiinZhu問題模型抽象12/8/2022Dr.HaiinZhu模型模型定義了一一個抽象的視視圖,該視圖圖只關(guān)注于與與問題和求解解者相關(guān)的部部分。你需要要定義下列屬屬性:影響的數(shù)據(jù);識別出來的操操作;ADT就是是一種模型.12/8/2022Dr.HaiinZhuInterfaceOperationsAbstractDataStructureAbstractDataTypeADT12/8/2022Dr.HaiinZhu定義義(ADT)ADT有有下下列列一一些些特特性性:1.它它提提供供了了一一種種類類型型.2.它它提提供供了了操操作作的的集集合合.該該集集合合被被稱稱為為接接口口.3.接接口口的的操操作作是是類類型型數(shù)數(shù)據(jù)據(jù)結(jié)結(jié)構(gòu)構(gòu)的的唯唯一一訪訪問問途途徑徑.4.原原理理和和前前提提定定義義了了類類型型的的應(yīng)應(yīng)用用領(lǐng)領(lǐng)域域.12/8/2022Dr.HaiinZhu例子子:ADTList類型型List.類型型list實實例例的的接接口口由由接接口口定定義義文文件件定定義義操作:insert,get,append,delete,search,……12/8/2022Dr.HaiinZhu面向?qū)ο笙蟮木幊坛虒ο笫怯捎沙橄髷?shù)數(shù)據(jù)類型型來的面向?qū)ο笙缶幊淌鞘菍ο蠼唤换サ囊灰粋€網(wǎng)絡(luò)絡(luò),每一一個對象象保存自自己的狀狀態(tài)程序中的的對象通通過發(fā)送送消息進進行交互互12/8/2022Dr.HaiinZhuObject1Data1+Procedures1DataData1Object3Data3+Procedures3Object2Data2+Procedures2Object4Data4+Procedures412/8/2022Dr.HaiinZhu面向?qū)ο笙缶幊淘诿嫦驅(qū)ο缶幊坛讨校椅覀冎苯咏影l(fā)送一一個消息息,而不不是去調(diào)調(diào)用一個個程序來來實現(xiàn)一一個功能能.粗略地說說,每一一個對象象實現(xiàn)了了自己的的模塊12/8/2022Dr.HaiinZhu面向?qū)ο缶幊坛堂恳粋€對象負負責正確地初初始化和銷毀毀自身.相應(yīng)地,對對對象而言,我我們就不需要要顯式地創(chuàng)建建和生成過程程12/8/2022Dr.HaiinZhu模塊信息隱藏數(shù)據(jù)封裝抽象數(shù)據(jù)類型型對象面向?qū)ο蟮难菅莼?2/8/2022Dr.HaiinZhu記住封裝(Data&Operations)---信信息隱藏藏的技術(shù)———對象的的用戶不能能看到對象象的數(shù)據(jù)和和操作的細細節(jié).數(shù)據(jù)抽象----從對象中發(fā)發(fā)現(xiàn)類的過過程抽象數(shù)據(jù)類類型----類12/8/2022Dr.HaiinZhu3.編碼語語言12/8/2022Dr.HaiinZhu面向?qū)ο笳Z語言面向?qū)ο缶幘幊陶Z言就就是能夠很很方便地支支持面向?qū)ο蟾拍畹牡恼Z言Smalltalk:1972-1980.C++:1986.Java:1992(Smalltalk+C++).其它:Effile,Objective-C,Ada,...12/8/2022Dr.HaiinZhuSmalltalkSmalltalk是一個個純的面向向?qū)ο笳Z言言.多數(shù)人認為為Smalltalk程序序比C++程序序開發(fā)起來來更快.12/8/2022Dr.HaiinZhuSmalltalk豐富的類類庫,通通過繼承承實現(xiàn)重重用Smalltalk擁擁有動動態(tài)開發(fā)發(fā)環(huán)境。。它不是是編譯的的,但是是C++是是編譯的的.這使得開開發(fā)過程程更可變變,你可可以方便便地對類類和各種種情形進進行修改改12/8/2022Dr.HaiinZhuSmalltalk編程者并并不能象象在C++中那那樣立即即掌握o-o概概念.正正因為為如此,,掌握Smalltalk需需要更多多地時間間.但但是多數(shù)數(shù)時間是是花在學學習面向向?qū)ο蠓椒椒▽W和和技術(shù)上上,而不不是編程程語言上上的。實實際上,,Smalltalk比C和C++更為為簡單.12/8/2022Dr.HaiinZhuC++C++是是C的面向向?qū)ο蟀姘姹?它它與C是一一致的(它實實際上是是C的超超集),所以以現(xiàn)存的的C代代碼能能夠包含含在C++程程序中中.C++程程序速速度快,,效率高高.這些特性性已經(jīng)使使C成為為很流行行的語言言.12/8/2022Dr.HaiinZhuC++它犧牲了了一些靈靈活性以以提高效效率.C++采采用編編譯時綁綁定的方方法。這這使得程程序運行行時的效效率很高高,代碼碼也較小小,但是是它影響響了重用用類的某某些能力力.12/8/2022Dr.HaiinZhuC++C++已已經(jīng)非非常流流行,,絕大大多數(shù)數(shù)新的的C編編譯器器實際際上是是C/C++編編譯器器.但但是是,如如果想想進行行面向向?qū)ο笙缶幊坛蹋隳惚仨氻氂肅++編程程(思思考)),而而不是是C.這些都都將對對有經(jīng)經(jīng)驗的的C編編程者者帶來來挑戰(zhàn)戰(zhàn)。他他們認認為他他們是是在運運用C++編程程,但但實際際上只只用了了很少少的面面向?qū)ο筇靥攸c。。12/8/2022Dr.HaiinZhuC++C++是是一個優(yōu)秀秀的語言.利用它,你可以以編出世界界上最好的的程序!C++是是一個差的的語言.使用它,你你也可能編編出世界上上最

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論