版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
參考書(shū)
新標(biāo)準(zhǔn)C++程序設(shè)計(jì)郭煒高等教育出版社
THEC++PROGRAMMINGLANGUAGE(SpecialEdition)BjarneStroustrup
高等教育出版社
課時(shí)安排授課:32學(xué)時(shí)上機(jī):16學(xué)時(shí)
教材、參考書(shū)與課時(shí)安排本門(mén)課程的學(xué)習(xí)內(nèi)容第1章緒論(2學(xué)時(shí))第2章C++語(yǔ)言對(duì)C語(yǔ)言的擴(kuò)充(4學(xué)時(shí))第3章類(lèi)和對(duì)象(6學(xué)時(shí))第4章友元(2學(xué)時(shí))第5章繼承與派生(6學(xué)時(shí))第6章多態(tài)性和虛函數(shù)(6學(xué)時(shí))第7章C++語(yǔ)言的輸入輸出流庫(kù)(2學(xué)時(shí))第8章異常處理(2學(xué)時(shí))
第1章緒論
1.1
面向?qū)ο蠓椒ǖ钠鹪?/p>
1.2
從面向過(guò)程轉(zhuǎn)向面向?qū)ο?/p>
1.3
面向?qū)ο蟮幕靖拍?.4
面向?qū)ο笙到y(tǒng)的特性1.5
面向?qū)ο蟪绦蛟O(shè)計(jì)舉例機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言面向過(guò)程面向?qū)ο驝PU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成如:10000000加
10010000減用助記符號(hào)描述的指令系統(tǒng)如ADDA,B面向機(jī)器的語(yǔ)言1.1面向?qū)ο蠓椒ǖ钠鹪礄C(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言面向過(guò)程面向?qū)ο蟪绦蛟O(shè)計(jì)是數(shù)據(jù)被加工的過(guò)程客觀世界可以分類(lèi),對(duì)象是類(lèi)的實(shí)例對(duì)象是數(shù)據(jù)和方法的封裝對(duì)象間通過(guò)發(fā)送和接受消息發(fā)生聯(lián)系程序設(shè)計(jì)關(guān)鍵是定義類(lèi),并由類(lèi)派生對(duì)象1.1面向?qū)ο蠓椒ǖ钠鹪?、50年代的程序都是用指令代碼或匯編語(yǔ)言編寫(xiě)的,60年代高級(jí)語(yǔ)言的出現(xiàn)大大簡(jiǎn)化了程序設(shè)計(jì),縮短了軟件開(kāi)發(fā)周期。2、自60年代末到70年代初,出現(xiàn)了大型軟件系統(tǒng),如操作系統(tǒng)、數(shù)據(jù)庫(kù),這給程序設(shè)計(jì)帶來(lái)了新的問(wèn)題??煽啃圆?,錯(cuò)誤多,且不易維護(hù)和修改--軟件危機(jī)。3、為了克服60年代出現(xiàn)的軟件危機(jī),1968年北約組織提出“軟件工程”的概念。對(duì)程序設(shè)計(jì)語(yǔ)言的認(rèn)識(shí)從強(qiáng)調(diào)表達(dá)能力為重點(diǎn)轉(zhuǎn)向以結(jié)構(gòu)化和簡(jiǎn)明性為重點(diǎn),將程序從語(yǔ)句序列轉(zhuǎn)向相互作用的模塊集合。1969年,E.W.Dijkstra首先提出了結(jié)構(gòu)化程序設(shè)計(jì)的概念。4、經(jīng)過(guò)幾年的探索和實(shí)踐,結(jié)構(gòu)化程序設(shè)計(jì)的應(yīng)用確實(shí)取得了成效,用該方法編寫(xiě)出來(lái)的程序不僅結(jié)構(gòu)良好,且顯著地減少軟件的復(fù)雜性,提高軟件的可靠性、可測(cè)試性和可維護(hù)性。5、進(jìn)入80年代,由于一系列高技術(shù)的研究,如計(jì)算機(jī)輔助制造CAM和知識(shí)工程等領(lǐng)域的研究都迫切要求大型的軟件系統(tǒng)作為支撐。他們所用的數(shù)據(jù)類(lèi)型也超出了常規(guī)的結(jié)構(gòu)化數(shù)據(jù)類(lèi)型的范疇,提出對(duì)圖像、聲音、規(guī)則等非結(jié)構(gòu)化數(shù)據(jù)的管理。迫切要求軟件模塊具有更強(qiáng)的獨(dú)立自治性,以便于大型軟件的管理、維護(hù)和重用。由于結(jié)構(gòu)化語(yǔ)言的數(shù)據(jù)類(lèi)型較為簡(jiǎn)單,所以不能勝任對(duì)非結(jié)構(gòu)化數(shù)據(jù)的定義與管理,采用過(guò)程調(diào)用機(jī)制使模塊的獨(dú)立性較差。6、自80年代以來(lái),出現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)流派,研制出了多種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言(簡(jiǎn)稱(chēng)為OOPL:ObjectOrientedProgrammingLanguage),如Ada、Smalltalk、C++和當(dāng)前使用在Internet上的平臺(tái)無(wú)關(guān)語(yǔ)言Java等。7、由于OOPL的對(duì)象、類(lèi)具有高度的抽象性,所以它能很好地表達(dá)任何復(fù)雜的數(shù)據(jù)類(lèi)型,也允許程序員靈活地定義自己所需要的數(shù)據(jù)類(lèi)型。類(lèi)本身具有很完整的封裝性,滿(mǎn)足模塊獨(dú)立自治的需求。再加上繼承性和多態(tài)性,增強(qiáng)了模塊的可重用性,提高了軟件的可靠性,縮短了軟件的開(kāi)發(fā)周期。1.2從面向過(guò)程轉(zhuǎn)向面向?qū)ο?/p>
——
建立一個(gè)軟件開(kāi)發(fā)的全新的思維方式數(shù)據(jù)輸入數(shù)據(jù)輸出函數(shù)或過(guò)程特點(diǎn):
數(shù)據(jù)和過(guò)程相分離函數(shù)或過(guò)程1.因?yàn)閿?shù)據(jù)與過(guò)程分開(kāi),因此數(shù)據(jù)很容易在其作用域之外被修改。這表明對(duì)數(shù)據(jù)的訪(fǎng)問(wèn)是不受控制且不可預(yù)知。voidA(Strings);//passbyvalue
voidB(String&s);//passbyreferance
voidC(String*s);//passbypointer2.因?yàn)閿?shù)據(jù)與過(guò)程分開(kāi),因此編寫(xiě)過(guò)程時(shí)必須要考慮所要處理的數(shù)據(jù)格式。這表明代碼的可重用性不好。abs(i)
//anintexpressioni
fabs(x)//afloating-pointexpressionx3.因?yàn)椴荒茉O(shè)置數(shù)據(jù)的可訪(fǎng)問(wèn)權(quán)限,增加了大型程序的復(fù)雜性。因此測(cè)試和調(diào)試更加困難。特點(diǎn):
數(shù)據(jù)和過(guò)程相分離?例例1.2從面向過(guò)程轉(zhuǎn)向面向?qū)ο?/p>
面向?qū)ο蟪绦蛟O(shè)計(jì)將數(shù)據(jù)及其操作放在一起,作為一個(gè)相互依存、不可分割的整體—
對(duì)象。采用數(shù)據(jù)抽象和數(shù)據(jù)隱藏技術(shù),將對(duì)象及其操作抽象成一種新的數(shù)據(jù)類(lèi)型—
類(lèi)。
數(shù)據(jù)1
數(shù)據(jù)2
數(shù)據(jù)3
…
操作1
操作2
操作3
…屬性方法1.3面向?qū)ο蟮幕靖拍?/p>
數(shù)據(jù)1
數(shù)據(jù)2
數(shù)據(jù)3
…
操作1
操作2
操作3
…
屬性方法1.類(lèi)(class)①類(lèi)實(shí)質(zhì)就是一種用戶(hù)自定義的數(shù)據(jù)類(lèi)型。②可以把類(lèi)想像成一種高級(jí)的數(shù)據(jù)類(lèi)型。structclass1.3面向?qū)ο蟮幕靖拍?.類(lèi)(class)數(shù)據(jù)成員成員函數(shù)classStack{
private:
structNode { intdata; Node*next; }*top;
public: Stack(){top=NULL;}
boolpush(inti);
boolpop(int&i);};例1.3面向?qū)ο蟮幕靖拍?.對(duì)象(object)Inoop,thetermobjecthasaveryspecificmeaning:Itisaself-containedentityencapsulatingdataandoperationsonthedata.1.3面向?qū)ο蟮幕靖拍?.對(duì)象(object)①對(duì)象是類(lèi)的一個(gè)實(shí)例。②對(duì)象與類(lèi)的關(guān)系如同變量與數(shù)據(jù)類(lèi)型之間的關(guān)系。③對(duì)象具有唯一標(biāo)識(shí)名,可以區(qū)別于其他對(duì)象。④對(duì)象具有一個(gè)狀態(tài),由其屬性值集合所表征。⑤對(duì)象有一組操作方法即服務(wù),每個(gè)操作決定對(duì)象的一種行為。⑥對(duì)象具有模塊獨(dú)立性。⑦對(duì)象具有動(dòng)態(tài)連接性。
Stackst1;//定義對(duì)象st1Stackst2;//定義對(duì)象st2例①對(duì)象是類(lèi)的一個(gè)實(shí)例。②對(duì)象與類(lèi)的關(guān)系如同數(shù)據(jù)類(lèi)型與變量之間的關(guān)系。③對(duì)象具有唯一標(biāo)識(shí)名,可以區(qū)別于其他對(duì)象。④對(duì)象具有一個(gè)狀態(tài),由其屬性值集合所表征。⑤對(duì)象有一組操作方法即服務(wù),每個(gè)操作決定對(duì)象的一種行為。⑥對(duì)象具有模塊獨(dú)立性。⑦對(duì)象具有動(dòng)態(tài)連接性。1.3面向?qū)ο蟮幕靖拍?.對(duì)象(object)
從邏輯上看,一個(gè)對(duì)象是獨(dú)立存在的模塊。模塊內(nèi)部狀態(tài)不因外界的干擾而改變,也不會(huì)涉及到其他模塊;模塊間的依賴(lài)性極小或幾乎沒(méi)有;各模塊可獨(dú)立地被系統(tǒng)所組合選用,也可被程序員重用,不必?fù)?dān)心破壞其他模塊。
客觀世界中的對(duì)象之間是有聯(lián)系的,在面向?qū)ο蟪绦蛟O(shè)計(jì)中,通過(guò)消息機(jī)制,把對(duì)象之間動(dòng)態(tài)連接在一起。1.3面向?qū)ο蟮幕靖拍?/p>
3.消息(message)①消息是面向?qū)ο笙到y(tǒng)中實(shí)現(xiàn)對(duì)象之間的通信機(jī)制,是要求某個(gè)對(duì)象執(zhí)行其中某個(gè)功能操作的規(guī)格說(shuō)明。②對(duì)象所提供的任何行為(功能)都必須通過(guò)消息來(lái)調(diào)用,對(duì)象只有在接收到消息時(shí)才被激活。③消息一般由三部分組成:接受消息的對(duì)象名、調(diào)用操作名和必要的參數(shù)。st1.push(i);
//向st1發(fā)送消息,調(diào)用其成員函數(shù)push//push操作的功能是將數(shù)據(jù)i壓入棧中
例1.3面向?qū)ο蟮幕靖拍?/p>
3.消息(message)消息具有三個(gè)性質(zhì):①同一對(duì)象可接收不同形式的多個(gè)消息,產(chǎn)生不同的響應(yīng);②相同形式的消息可以送給不同對(duì)象,所做出的響應(yīng)可以是截然不同的;③消息的發(fā)送可以不考慮具體的接收者,對(duì)象可以響應(yīng)消息,也可以對(duì)消息不予理會(huì),對(duì)消息的響應(yīng)并不是必須的。st1.push(i);st1.pop(x);circle.draw();square.draw();例1.3面向?qū)ο蟮幕靖拍?/p>
4.方法(method)①方法就是對(duì)象所能執(zhí)行的操作,也就是對(duì)象中的成員函數(shù)。②方法包括界面和方法體兩部分。方法的界面也稱(chēng)為接口,它給出了方法的調(diào)用模式;方法體則是實(shí)現(xiàn)某種操作的一系列計(jì)算步驟,也就是一段程序。
對(duì)象提供的任何功能都必須通過(guò)消息進(jìn)行調(diào)用,而該消息就是發(fā)送給對(duì)象所提供的接口的。1.3面向?qū)ο蟮幕靖拍?/p>
4.方法(method)消息和方法的關(guān)系是:對(duì)象根據(jù)接收到的消息,調(diào)用相應(yīng)的方法;反過(guò)來(lái),有了接口,對(duì)象才能響應(yīng)相應(yīng)的消息。所以消息模式與方法界面(即接口)應(yīng)該是一致的。同時(shí),只要接口保持不變,方法體的改動(dòng)不會(huì)影響方法的調(diào)用。方法的實(shí)現(xiàn)細(xì)節(jié)對(duì)于用戶(hù)來(lái)說(shuō)是不可見(jiàn)的,用戶(hù)只需向?qū)ο蟀l(fā)送正確格式的消息即可。1.3面向?qū)ο蟮幕靖拍?/p>
4.方法(method)消息和方法的關(guān)系是:對(duì)象根據(jù)接收到的消息,調(diào)用相應(yīng)的方法;反過(guò)來(lái),有了接口,對(duì)象才能響應(yīng)相應(yīng)的消息。所以消息模式與方法界面(即接口)應(yīng)該是一致的。同時(shí),只要接口保持不變,方法體的改動(dòng)不會(huì)影響方法的調(diào)用。方法的實(shí)現(xiàn)細(xì)節(jié)對(duì)于用戶(hù)來(lái)說(shuō)是不可見(jiàn)的,用戶(hù)只需向?qū)ο蟀l(fā)送正確格式的消息即可。①抽象是一種從一般的觀點(diǎn)看待事物的方法,它要求程序員集中于事物的本質(zhì)特征,而不是具體細(xì)節(jié)或具體實(shí)現(xiàn)。②將一組對(duì)象的共同特征抽象出來(lái),從而形成“類(lèi)”的概念。類(lèi)的概念來(lái)自人們認(rèn)識(shí)自然社會(huì)的過(guò)程。在這一過(guò)程中,人們主要使用兩種方法:歸納法和演繹法。在歸納的過(guò)程中,我們從一個(gè)個(gè)具體的事物中把共同的特征抽取出來(lái),形成一個(gè)一般的概念,這就是“歸類(lèi)”;在演繹的過(guò)程中,我們把同類(lèi)的事物,根據(jù)不同的特征分成不同的小類(lèi),這就是“分類(lèi)”。對(duì)于一個(gè)具體的類(lèi),它有許多具體的個(gè)體,我們稱(chēng)這些個(gè)體叫做“對(duì)象”。
1.抽象性(abstract)1.4面向?qū)ο笙到y(tǒng)的特性抽象數(shù)據(jù)類(lèi)型:ADT(AbstractDataType)
1.抽象性(abstract)
當(dāng)一個(gè)數(shù)據(jù)類(lèi)型僅暴露其公有接口,而將其私有實(shí)現(xiàn)隱藏起來(lái),我們就稱(chēng)這個(gè)數(shù)據(jù)類(lèi)型是抽象的。
C++通過(guò)對(duì)類(lèi)的支持提供了信息隱藏,而信息隱藏,特別是對(duì)低層實(shí)現(xiàn)細(xì)節(jié)的隱藏,是構(gòu)造抽象數(shù)據(jù)類(lèi)型的關(guān)鍵。在抽象數(shù)據(jù)類(lèi)型中提供某個(gè)功能的辦法就是將該功能以類(lèi)的成員函數(shù)的形式封裝起來(lái)。1.4面向?qū)ο笙到y(tǒng)的特性
1.抽象性(abstract)classStack{
private:
structNode { intdata; Node*next; }*top;
public: Stack(){top=NULL;}
boolpush(inti);
boolpop(int&i);};例Stack類(lèi)的壓入和彈出操作是高層的,因?yàn)橛脩?hù)不需要了解棧的底層實(shí)現(xiàn),因此Stack類(lèi)是一種抽象數(shù)據(jù)類(lèi)型。使用ADT將提高程序的可靠性和健壯性。C++能夠?qū)崿F(xiàn)ADT,是其支持OOP的有力工具。1.4面向?qū)ο笙到y(tǒng)的特性1.4面向?qū)ο笙到y(tǒng)的特性
2.封裝性(encapsulation)
所謂封裝就是指一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)的操作集合組裝在一起,形成一個(gè)能動(dòng)的實(shí)體,也就是對(duì)象。數(shù)據(jù)封裝就是給數(shù)據(jù)提供了與外界聯(lián)系的標(biāo)準(zhǔn)接口,無(wú)論是誰(shuí),只有通過(guò)這些接口,使用規(guī)范的方式,才能訪(fǎng)問(wèn)這些數(shù)據(jù)。數(shù)據(jù)封裝是軟件工程發(fā)展的必然產(chǎn)物,使得程序員在設(shè)計(jì)程序時(shí)可以專(zhuān)注于自己的對(duì)象,同時(shí)也切斷了不同模塊之間數(shù)據(jù)的非法使用,減少了出錯(cuò)的可能性。1.4面向?qū)ο笙到y(tǒng)的特性
3.繼承性(inhertance)
從已有的對(duì)象類(lèi)型出發(fā)建立一種新的對(duì)象類(lèi)型,使它繼承原對(duì)象的特點(diǎn)和功能。繼承是對(duì)許多問(wèn)題中分層特性的一種自然描述,因而也是類(lèi)的具體化和被重用的一種手段,它所表達(dá)的就是一種不同類(lèi)之間的繼承關(guān)系。它使得某類(lèi)對(duì)象可以繼承另外一類(lèi)對(duì)象的特征和能力。繼承所具有的作用有兩個(gè)方面:一方面可以減少代碼冗余;另一方面可以通過(guò)協(xié)調(diào)性來(lái)減少相互之間的接口和界面。1.4面向?qū)ο笙到y(tǒng)的特性
3.繼承性(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 61892:2025 SER EN Mobile and fixed offshore units - Electrical installations - ALL PARTS
- 天津市部分區(qū)2024-2025學(xué)年高一(上)期末物理試卷(含答案)
- 河北省衡水市2024-2025學(xué)年高二上學(xué)期期末考試生物試題(無(wú)答案)
- 2024簡(jiǎn)易離婚合同書(shū)標(biāo)準(zhǔn)范文
- 2025年度體育賽事組織與相關(guān)法規(guī)執(zhí)行合同3篇
- 2024甲乙雙方民間借款購(gòu)車(chē)合同
- 2024物聯(lián)網(wǎng)傳感器設(shè)備采購(gòu)與應(yīng)用開(kāi)發(fā)合同
- 2024版跨境貿(mào)易協(xié)議履行操作手冊(cè)版B版
- 2024軟件服務(wù)合同模板:在線(xiàn)教育平臺(tái)定制開(kāi)發(fā)3篇
- 2024行政訴訟刑事上訴狀案件跟蹤與反饋合同3篇
- GB/T 7324-2010通用鋰基潤(rùn)滑脂
- GB/T 21709.5-2008針灸技術(shù)操作規(guī)范第5部分:拔罐
- 大三上-診斷學(xué)復(fù)習(xí)重點(diǎn)
- 帶式輸送機(jī)設(shè)計(jì)
- 北京市生態(tài)環(huán)境評(píng)估與投訴中心公開(kāi)招聘1人【共500題附答案解析】模擬試卷
- 音樂(lè)常識(shí)知識(shí)考試題庫(kù)(300題版)
- 酵素行業(yè)分析研究報(bào)告
- 股東變更情況報(bào)告表
- 房產(chǎn)中介門(mén)店6S管理規(guī)范
- 蘇教版五年級(jí)數(shù)學(xué)下冊(cè)解方程五種類(lèi)型50題
- 部編人教版九年級(jí)語(yǔ)文上冊(cè)全冊(cè)課后教學(xué)反思匯總
評(píng)論
0/150
提交評(píng)論