《C++程序設(shè)計語言》由會員分享,可在線閱讀,更多相關(guān)《C++程序設(shè)計語言(25頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,電子科技大學(xué)計算機(jī)學(xué)院,C+程序設(shè)計語言,黃迪明,1,第一章,C+,入門,一、面向?qū)ο蟮姆椒ㄊ窃谟嬎銠C(jī)語言發(fā)展過程中產(chǎn)生的。,早期,:機(jī)器語言、匯編語言,50年代中期,:,FORTRAN,語言引進(jìn)了許多現(xiàn)代仍然使用的程序設(shè)計概念。,50年代后期,:,ALGOL60,提出塊結(jié)構(gòu)的思想。,60年代,:,SIMULA67,首先提出對象和類的概念,并支持類的繼承,是面向?qū)ο笳Z言的鼻祖,70年代,:,ADA,不能全面地支持繼承,稱為基于對象的語言。,1.1 面向?qū)ο蟮挠蓙砗桶l(fā)展,后來出現(xiàn)的,Smalltalk,是最有
2、影響的面向?qū)ο蟮恼Z言之一。,80年代中后期以后,隨著面向?qū)ο蟮某绦蛟O(shè)計語言的廣泛應(yīng)用,出現(xiàn)了更多的面向?qū)ο蟮恼Z言。,面向?qū)ο蟮恼Z言可分為以下兩類:,1、開發(fā)全新的面向?qū)ο蟮恼Z言,ObjectC Eiffel Smalltalk80,2、,對傳統(tǒng)語言進(jìn)行面向?qū)ο蟮臄U(kuò)展,,稱為混合型語言,其代表有,C+,語言。,增加面向?qū)ο蟪绦蛟O(shè)計的支持,支持傳統(tǒng)的面向過程的程序設(shè)計,C+,C,C+,語言具有,C,語言的豐富的應(yīng)用基礎(chǔ)和開發(fā)環(huán)境的支持,對于已經(jīng)掌握,C,語言的人講,更易學(xué)易普及。,二、從,C,到,C+,C,語言是貝爾實驗室為,DEC,公司開發(fā),PDP,系列計算機(jī)操作系統(tǒng)時研制的。,C,作為,UNI
3、X,操作系統(tǒng)的開發(fā)語言而廣為應(yīng)用,和流行。1989年制定為,ANSI C,標(biāo)準(zhǔn)。,1、語言簡潔、緊湊,使用方便、靈活。,2、運算符和數(shù)據(jù)類型豐富。,3、訪問內(nèi)存地址、寄存器、進(jìn)行位操作,,具有匯編語言的功能。,4、生成的目標(biāo)代碼質(zhì)量高、程序運行效率高。,C,語言的獨有特點是:,局限:,1、對類型的檢查機(jī)制相對較弱、程序中的一些錯誤不能在編譯時發(fā)現(xiàn);,2、無支持代碼重用的語言結(jié)構(gòu);,3、當(dāng)程序規(guī)模達(dá)到一定的程度時,難以控制程序的復(fù)雜性;,為滿足管理程序復(fù)雜性需要,1980年,貝爾實驗室對,C,進(jìn)行了改進(jìn)和擴(kuò)充:,“帶類的,C”,C,1983年取名為,C+,,后經(jīng)過三次修訂。,1994年制定了,A
4、NSI C+,標(biāo)準(zhǔn)的草案。,1、,C+,是,C,的擴(kuò)展,,C,是,C+,的,子集,,C+,包括,C,的全部特征、屬性和優(yōu)點。同時,增加了對面向?qū)ο缶幊痰耐耆С帧?2、與,C,一致,,C+,程序結(jié)構(gòu)采用函數(shù)驅(qū)動機(jī)制實現(xiàn)。,3、,C+,實現(xiàn)了類的封裝,數(shù)據(jù)隱藏、繼承及多態(tài),使其代碼可重用并容易維護(hù)。,4、,C+,是一門,高效使用的程序設(shè)計語言,既可進(jìn)行過程化程序設(shè)計,又可進(jìn)行面向?qū)ο蟪绦蛟O(shè)計。,C+,的特點,在,面向過程的程序設(shè)計中,,程序是處理數(shù)據(jù)的一系列過程。過程(或函數(shù))定義為實現(xiàn)特定功能的一組指令。,其主要設(shè)計思想是功能分解并逐步求精。數(shù)據(jù)與程序過程分開存儲,編程的主要技巧在于關(guān)注模塊之
5、間的調(diào)用關(guān)系及數(shù)據(jù)的變化。,1.2 面向過程的程序設(shè)計,1、當(dāng)數(shù)據(jù)量增大時,數(shù)據(jù)與處理這些數(shù)據(jù)的方法之間的分離使程序變得越來越難以理解。,2、相對于老問題的新方法都要帶來額外的開銷,程序的可重用性小。,面向過程程序設(shè)計的,主要缺點,面,向?qū)ο蟪绦蛟O(shè)計,OOP,(Object-Oriented Programming),的,三要素,:,對象、類和繼承,面向?qū)ο蟪绦蛟O(shè)計的實現(xiàn)需要,:,封裝和數(shù)據(jù)隱藏技術(shù),繼承和多態(tài)性技術(shù),1.3 面向?qū)ο蟪绦蛟O(shè)計,1、封裝和數(shù)據(jù)隱藏,什么是對象?,概念上:在問題空間中,將客觀世界的實體稱為對象。對象可以是人、物、事件、規(guī)則、概念等。,例如:開發(fā)一個商品銷售系統(tǒng)。,
6、實現(xiàn)上:把數(shù)據(jù)和處理數(shù)據(jù)的過程(操作或方法)當(dāng)成一個整體,這個封裝體就稱為對象。,數(shù)據(jù)1,.,數(shù)據(jù),n,操作1,.,操作,n,狀態(tài),(數(shù)據(jù)結(jié)構(gòu)和值),方法,對象的模型結(jié)構(gòu),例如:電腦裝配聲卡,早點銷售點,無須知道封裝體內(nèi)部是如何工作就能使用的,思想稱為數(shù)據(jù)隱藏。,對象實現(xiàn)了信息隱藏;,對象與外部通過操作接口聯(lián)系,操作接口提,供了對象的功能,操作的具體實現(xiàn)外部是不可,見的。,對象之間是通過消息傳遞信息。,對象是由特定的類創(chuàng)造的,什么是類?,類是創(chuàng)建對象的樣板,它包含著所創(chuàng)建對象,的狀態(tài)描述和方法的定義。,由一個特定的類所創(chuàng)建的的對象也稱為,這個類的實例。,一個類的所有對象都有相同的數(shù)據(jù)結(jié)構(gòu),,并
7、且共享相同的實現(xiàn)操作的代碼,而各個對,象又有具體的不同的狀態(tài)。類和對象類似于,面向過程語言中數(shù)據(jù)類型和變量。,例如:學(xué)生類和某個學(xué)生對象。,2、繼承和重用,制造一種新型號的電視機(jī)可以有兩種選擇:,1)從草圖開始重新設(shè)計,2)對現(xiàn)有型號加以改進(jìn)(繼承和重用),C+,采用繼承機(jī)制支持重用,不僅可重用具有特定功能的類,而且繼承可以由已有的類,創(chuàng)造新的類。,新類共享已有類的屬性,自己還具有額外,添加的屬性,新類是從已有類派生的,稱為派,生類或子類,已有類稱為父類或基類。,在客觀世界中,存在著整體和部分的關(guān)系、,一般和特殊的關(guān)系,繼承將后者模型化。,汽車類,各類汽車,昆蟲類,各類昆蟲,3、多態(tài)性,封裝性
8、、繼承性、多態(tài)性是構(gòu)成面向?qū)ο?程序設(shè)計的三大特征。,封裝性是基礎(chǔ),繼承性是關(guān)鍵,多態(tài)性是補充,什么是多態(tài)性?,多態(tài)是指一個名字有多種語義,或一個相同界面有多種實現(xiàn);,或是指發(fā)出同樣的消息被不同類型的對象,接受而導(dǎo)致完全不同的行為。即對象根據(jù)所接收到的消息做出相應(yīng)的操作。,例如:在學(xué)籍管理系統(tǒng)中,學(xué)生類(基類),計算成績的操作,中學(xué)生類(派生類),計算成績的操作,大學(xué)生類(派生類),計算成績的操作,又如:在繪圖系統(tǒng)中使用的多態(tài)性。,函數(shù)重載和運算符重載表現(xiàn)了最簡單的多態(tài)性。,函數(shù)重載:,Void f(,int,int,char);,Void f(char,float);,Void f(,int
9、,int,);,Void f(,int,float);,運算符重載:,為運算符+-*/等賦以新的含義,以,實現(xiàn)類對象的運算。,編譯錯,連 接,編 輯,編 譯,運 行,連接錯,運行錯,Y,Y,Y,N,N,N,完 成,#,include,文件,C+,庫文件,.,CPP,源程序,.,obj,目標(biāo)程序,.,exe,可執(zhí)行程序,#,include,文件,1.4 程序開發(fā)過程,例1,:,/*,/*,ch1.1.,cpp,*,/*,#include,void main(),cout,“I am a student.n”;,1.5 最簡單的程序,運行結(jié)果為:,I am a student.,例 2,:,/*,
10、ch1.2.,cpp,*,#include ,void main(),int,a,b,result;,cout,a b;,result=3*a-2*b+1;,cout,“Result is”resultch1.2,Please input two numbers:,100 50,Result is 201,C+,程序是由函數(shù)構(gòu)成的,由一個主函數(shù)和若干個函數(shù)構(gòu)成。,C+,程序是函數(shù)驅(qū)動的。,例3:,/*,ch1.3.,cpp,*,#include ,#include ,double max(,doubl,x,doubl,y);,void main(),double a,b,c;,cout,ab;,c=max(a,b);,cout,“The,squart,of maximum=”y),return x;,else,return y;,運行結(jié)果:,Input two numbers:,10.0,25.0,The,squart,of maximum=5.0,學(xué)習(xí)本課程目的,1、作為面向?qū)ο蟪绦蛟O(shè)計入門,領(lǐng)會面向?qū)ο蟪绦蛟O(shè)計的基本概念。,2、把握,C+,程序設(shè)計的基本要點,掌握面向?qū)ο蟪绦蛟O(shè)計的方法和要求。,