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

下載本文檔

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

文檔簡介

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

2、程(第二版),Harveay M. Deitel著,電子工業(yè)出版社 C+ Primer(第三版),Stanley B.lippmanJosee Lajoie著,中國電力出版社C+編程思想(Thinking in C+),Bruce Eckel著,機械工業(yè)出版社7/26/202261 從C語言到C+語言C語言以其如下獨有的特點風靡了全世界:(1)語言簡潔、緊湊,使用方便、靈活。C語言只有32個關鍵字,程序書寫形式自由。(2)豐富的運算符和數(shù)據(jù)類型。(3)可以直接訪問內(nèi)存地址,能進行位操作,使其能夠勝任開發(fā)操作系統(tǒng)的工作。7/26/20227(4)生成的目標代碼質(zhì)量高,程序運行效率高。(5)可移植

3、性好。7/26/20228局限性:(1)數(shù)據(jù)類型檢查機制相對較弱,這使得程序中的一些錯誤不能在編譯階段被發(fā)現(xiàn)。(2)C本身幾乎沒有支持代碼重用的語言結構,因此一個程序員精心設計的程序,很難為其它程序所用。(3)當程序的規(guī)模達到一定程度時,程序員很難控制程序的復雜性。7/26/20229發(fā)展1980年,貝爾實驗室的Bjarne Stroustrup開始對C進行改進和擴充。1983年正式命名為C+。在經(jīng)歷了3次C+修訂后,1994年制定了ANSI C+ 標準的草案。以后又經(jīng)過不斷完善,成為目前的C+。C+仍在不斷發(fā)展中。美國微軟公司現(xiàn)已推出C#(C Sharp)語言,來代替C+語言。7/26/20

4、2210編譯器VC+6.0或其它(Turbor C 3.0,Borland C+)7/26/202211有關面向?qū)ο缶幊痰木W(wǎng)站 objects.html7/26/202212C+的網(wǎng)站/visualc borlandcpp/cpprod.html7/26/202213Object-Oriented 編程簡介7/26/202214內(nèi)容方法學編程技術面向?qū)ο笳Z言7/26/2022151. 方法學7/26/202216思考問題的方法歸納從特殊到一般從不同的 dogs 到詞匯 “dog”Dog7/26/202217思考問題的方法演繹從一般到特殊從詞匯“dog”,你可以區(qū)別出一個動物是還是不是一條狗DO

5、G7/26/202218面向?qū)ο笏且环N思考方法世界上的任何東西都是一個對象;任何系統(tǒng)都是由對象構成的 (當然系統(tǒng)也是一個對象);系統(tǒng)的演化和開發(fā)就是通過系統(tǒng)內(nèi)外的對象進行交互完成的。7/26/202219世界上的任何東西都是一個對象花, 樹, 動物學生, 教授桌子, 椅子, 教室, 建筑大學, 城市, 國家世界, 宇宙學科,如計算機,信息系統(tǒng),數(shù)學,歷史 7/26/202220任何系統(tǒng)都是由對象構成的法律系統(tǒng)文化系統(tǒng)教育系統(tǒng)經(jīng)濟系統(tǒng)信息系統(tǒng)計算機系統(tǒng)7/26/202221系統(tǒng)開發(fā)就是定義對象間的交互浙江林學院是由下列對象的交互構成的:學生教授職員浙江省政府中國政府 .林院內(nèi)部林院外部7/26

6、/202222設計方法學面向?qū)ο笫紫仁且环N設計方法學(OOA/OOD)對象是程序的構成模塊 (接口對象 (editor, menu, file, etc), 數(shù)據(jù)管理對象 (db), etc.).對象代表了在應用中對現(xiàn)實世界的抽象.7/26/202223設計方法學面向?qū)ο笾С謿w納: 對象 - 類需要OOA/OOD工具.演繹: 類-對象編程者需要學習有關類庫的知識7/26/202224設計方法學面向?qū)ο笾С諸op-down: 從超類到子類Bottom-up: 從子類到超類7/26/202225面向?qū)ο缶幊痰幕A*對象*封裝*繼承一般說來,對象是根據(jù)類來定義的。我們也可以用一個類來定義另一個類。例

7、如,山地車、賽車和雙座自行車都是自行車的一種。用面向?qū)ο蟮男g語來說,它都是自行車類的子類或派生類,而自行車類是它們的超類或父類或基類。它們的關系如下圖所示: 自行車每一個子類繼承了超類的數(shù)據(jù)和操作,但是,子類并不是局限于超類的數(shù)據(jù)和操作。例如,雙座自行車有兩個坐墊,山地車有一個額外的低速齒輪。繼承的主要益處是可以復用超類的程序代碼 *多態(tài)賽車三地車雙座自行車7/26/202226面向?qū)ο蟆笆澜缡敲嫦驅(qū)ο蟮摹?Alan Kay said.如果你對世界了解,那么你就了解了面向?qū)ο?所以,面向?qū)ο笫侨菀椎?7/26/2022272.編程7/26/202228編程就像寫作.如果你能夠描繪一樣東西,你就

8、可以寫一個程序.所以,編程也是容易的.所以,面向?qū)ο蟮木幊痰扔?容易 + 容易, 得到“ too(2) easy”.編程7/26/202229編程但是,實際上,編程并不那么容易。因為編一個真正的好的程序是不容易的。它需要編程者的智慧,知識和經(jīng)驗.就象寫作一樣,要成為一個好的作家,就需要很多的經(jīng)驗和對這個世界的大量知識。學習和練習就必不可少。7/26/202230編程技術非結構化編程過程編程模塊化 & 結構化編程抽象數(shù)據(jù)類型面向?qū)ο缶幊?/26/202231非結構化編程我們經(jīng)常將一個簡單的程序?qū)懗梢粋€主程序. 此處,主程序代表了命令和聲明的一個序列,這個系列在整個程序中對全局數(shù)據(jù)進行修改. Ma

9、in ProgramData7/26/202232缺點這種技術只能用于很小的程序中.例如,如果相同的聲明序列在不同的地方要多次出現(xiàn)時,我們就不得不拷貝這些序列。如果其中發(fā)生了一個錯誤,我們就需要對每一個拷貝進行修改.這就導致了我們將這些序列抽取出來,單獨命名,并通過調(diào)用和返回值的方法來實現(xiàn)多處復用的方法。7/26/202233過程編程 在過程編程中,你可以將序列歸在一個地方過程調(diào)用可以被用于調(diào)用過程。在調(diào)用完成后,控制流繼續(xù)往下。Main ProgramProcedure7/26/202234過程通過參數(shù)和子過程 (過程的過程) , 程序就可以寫得更有結構并且可以減少錯誤. 例如,如果過程是正

10、確的,那么每一次使用它必然可以獲得正確的結果因而,為了查找錯誤,你就可以縮小查找的范圍. 7/26/202235模塊化編程在模塊化編程中,具有公共功能的過程被集中在不同的模塊中一個程序就不再是一個單一整體構成的了,它被分解成多個小的部分,這些小的部分之間通過調(diào)用相互交互,構成了整個程序. 7/26/202236Main Program(Also a module)DataDataData1Module2 +DataData2Module1 +DataData1Procedure1Procedure2主程序協(xié)調(diào)多個模塊之間的調(diào)用,并進行數(shù)據(jù)的傳送Procedure37/26/202237模塊化編

11、程每一個模塊都可以有自己的數(shù)據(jù)。這將允許每一個模塊來管理內(nèi)部狀態(tài),這些狀態(tài)可以在調(diào)用這些模塊中的過程時得到修改. 因此,每一個模塊都有一個狀態(tài),每一個模塊在整個程序中通常也最多存在一次7/26/202238結構化編程結構化程序中的三種結構順序(s1,s2,sn)分支(if-then-else)循環(huán)Loop(for,do, and while loops)程序中有多少結構?7/26/202239抽象數(shù)據(jù)類型(ADTs)抽象模型抽象數(shù)據(jù)類型屬性7/26/202240抽象-問題處理手段為了理解問題,需要將不必要的細節(jié)分離出去: 你將構造你自己針對問題的抽象視圖,抽象模型這個建模過程稱為抽象 abst

12、raction.7/26/202241問題模型抽象7/26/202242模型模型定義了一個抽象的視圖,該視圖只關注于與問題和求解者相關的部分。你需要定義下列屬性:影響的數(shù)據(jù);識別出來的操作; ADT 就是一種模型.7/26/202243Interface Operations Abstract Data StructureAbstract Data TypeADT7/26/202244定義 (ADT)ADT 有下列一些特性: 1. 它提供了一種類型. 2. 它提供了操作的集合. 該集合被稱為接口. 3. 接口的操作是類型數(shù)據(jù)結構的唯一訪問途徑. 4. 原理和前提定義了類型的應用領域. 7/26

13、/202245例子: ADT List類型 List. 類型list實例的接口由接口定義文件定義操作: insert, get, append, delete,search,7/26/202246面向?qū)ο蟮木幊虒ο笫怯沙橄髷?shù)據(jù)類型來的面向?qū)ο缶幊淌菍ο蠼换サ囊粋€網(wǎng)絡,每一個對象保存自己的狀態(tài)程序中的對象通過發(fā)送消息進行交互7/26/202247Object1Data1+Procedures1DataData1Object3 Data3 + Procedures3Object2Data2 + Procedures2 Object4 Data4 + Procedures47/26/202248面向

14、對象編程在面向?qū)ο缶幊讨?,我們直接發(fā)送一個消息,而不是去調(diào)用一個程序來實現(xiàn)一個功能. 粗略地說,每一個對象實現(xiàn)了自己的模塊7/26/202249面向?qū)ο缶幊堂恳粋€對象負責正確地初始化和銷毀自身. 相應地,對對象而言,我們就不需要顯式地創(chuàng)建和生成過程7/26/202250模塊信息隱藏數(shù)據(jù)封裝抽象數(shù)據(jù)類型對象面向?qū)ο蟮难莼?/26/202251記住封裝(Data & Operations)- 信息隱藏的技術對象的用戶不能看到對象的數(shù)據(jù)和操作的細節(jié).數(shù)據(jù)抽象 - 從對象中發(fā)現(xiàn)類的過程抽象數(shù)據(jù)類型- 類7/26/2022523.編碼語言7/26/202253面向?qū)ο笳Z言面向?qū)ο缶幊陶Z言就是能夠很方便地

15、支持面向?qū)ο蟾拍畹恼Z言Smalltalk:1972-1980.C+:1986.Java:1992 (Smalltalk + C+).其它:Effile, Objective-C, Ada, .7/26/202254SmalltalkSmalltalk 是一個純的面向?qū)ο笳Z言. 多數(shù)人認為Smalltalk 程序比 C+ 程序開發(fā)起來更快.7/26/202255Smalltalk豐富的類庫,通過繼承實現(xiàn)重用Smalltalk 擁有動態(tài)開發(fā)環(huán)境。它不是編譯的,但是 C+ 是編譯的. 這使得開發(fā)過程更可變,你可以方便地對類和各種情形進行修改7/26/202256Smalltalk 編程者并不能象在C

16、+中那樣立即掌握o-o概念. 正因為如此,掌握Smalltalk需要更多地時間. 但是多數(shù)時間是花在學習面向?qū)ο蠓椒▽W和技術上,而不是編程語言上的。實際上,Smalltalk 比C和C+更為簡單. 7/26/202257C+C+ 是 C的面向?qū)ο蟀姹? 它與 C是一致的 (它實際上是C的超集), 所以現(xiàn)存的 C 代碼能夠包含在 C+ 程序中. C+ 程序速度快,效率高. 這些特性已經(jīng)使C成為很流行的語言. 7/26/202258C+它犧牲了一些靈活性以提高效率. C+ 采用編譯時綁定的方法。這使得程序運行時的效率很高,代碼也較小,但是它影響了重用類的某些能力. 7/26/202259C+C+ 已經(jīng)非常流行,絕大多數(shù)新的 C 編譯器實際上是 C/C+ 編譯器. 但是,如果想進行面向?qū)ο缶幊?,你必須用C+編程(思考),而不是C. 這些都將對有經(jīng)驗的C編程者帶來挑戰(zhàn)。他們認為他們是在運用C+編程,但實際上只用了很少的面向?qū)ο筇攸c。7/26/202260C+C+ 是一個優(yōu)秀的語言.利用它, 你可以編出世界上最好的程序!C+ 是一個差的語言.使用它,你也可能編出世界上最差的程序所以,在學習和使用它時,注意它的OO特性和非OO特性。7/26/202261Java它是一個可移植語言,它可以運行在瀏覽器上。因此,它在Internet和Intranet

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論