面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)教學(xué)大綱.doc_第1頁
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)教學(xué)大綱.doc_第2頁
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)教學(xué)大綱.doc_第3頁
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)教學(xué)大綱.doc_第4頁
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)教學(xué)大綱.doc_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)教學(xué)大綱課程總學(xué)時(shí):64 學(xué)分:4 實(shí)驗(yàn)學(xué)時(shí):16 實(shí)驗(yàn)個(gè)數(shù): 6個(gè) 實(shí)驗(yàn)學(xué)分:1分課程性質(zhì):專業(yè)必修課 適用專業(yè):計(jì)算機(jī)類專業(yè)教材及參考書:C+語言程序設(shè)計(jì)(第四版),鄭莉、董淵編著,北京:清華大學(xué)出版社,2011大綱執(zhí)筆人: 大綱審定人:一、實(shí)驗(yàn)課的性質(zhì)與任務(wù)本課程實(shí)驗(yàn)大綱是面向計(jì)算機(jī)專業(yè)學(xué)生開設(shè)的C+程序設(shè)計(jì)實(shí)驗(yàn)課計(jì)劃指導(dǎo)大綱,是依據(jù)面向?qū)ο蟪绦蛟O(shè)計(jì)課程教學(xué)計(jì)劃指導(dǎo)大綱編制。本課程主要講述了利用C+進(jìn)行程序設(shè)計(jì)的思想和方法,既有面向過程和面向?qū)ο蟮某绦蛟O(shè)計(jì)的理論知識,又包括極強(qiáng)的實(shí)踐應(yīng)用能力的培養(yǎng)。本實(shí)驗(yàn)大綱力求結(jié)合該課程教學(xué)計(jì)劃大綱的相應(yīng)內(nèi)容,由淺入深的指導(dǎo)學(xué)生了解和掌握如何利用C+程序設(shè)計(jì)語言進(jìn)行程序設(shè)計(jì),提高學(xué)生的動手能力,做到理論和實(shí)踐相結(jié)合,培養(yǎng)學(xué)生理解,分析程序,編寫,調(diào)試程序的能力,使之能把程序設(shè)計(jì)應(yīng)用到今后的專業(yè)學(xué)習(xí)中。二、實(shí)驗(yàn)?zāi)康呐c要求1實(shí)驗(yàn)?zāi)康耐ㄟ^本課程的學(xué)習(xí),使學(xué)生掌握面向過程的程序設(shè)計(jì)思想和編程思路,初步掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,學(xué)會調(diào)試程序,能獨(dú)立編寫實(shí)用的小型程序。2實(shí)驗(yàn)要求(1) 學(xué)生應(yīng)該自始至終貫徹課程中所介紹的程序設(shè)計(jì)風(fēng)格,養(yǎng)成良好的編程習(xí)慣;(2) 應(yīng)獨(dú)立完成所布置習(xí)題。為保證盡量在統(tǒng)一安排的上機(jī)時(shí)間內(nèi)編譯運(yùn)行通過程序,學(xué)生應(yīng)事先設(shè)計(jì)好程序。三、實(shí)驗(yàn)項(xiàng)目及內(nèi)容提要面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)課程 (071016)序號實(shí)驗(yàn)編號實(shí)驗(yàn)名稱學(xué)時(shí)必做選做學(xué)分?jǐn)?shù)實(shí)驗(yàn)類型內(nèi)容提要 基本操作驗(yàn)證綜合設(shè)計(jì)11類與對象4函數(shù)重載,類的設(shè)計(jì)與使用22C+程序的結(jié)構(gòu)2作用域與生存期,靜態(tài)成員33數(shù)組、指針與字符串4三種常見編程元素的使用44繼承與派生2派生類的設(shè)計(jì)與使用55多態(tài)性2運(yùn)算符重載、動態(tài)多態(tài)66模板和文件2模板,異常處理機(jī)制的設(shè)計(jì)四、實(shí)驗(yàn)內(nèi)容安排:實(shí)驗(yàn)一 類與對象( 設(shè)計(jì)性實(shí)驗(yàn) 4學(xué)時(shí))1. 目的要求:1) 掌握類的定義和使用;掌握類對象的聲明;練習(xí)具有不同訪問屬性的成員的訪問方式;觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行過程;2) 學(xué)習(xí)類組合使用方法;3) 使用VC+的debug調(diào)試功能觀察程序流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。2. 實(shí)驗(yàn)內(nèi)容:1) 編寫重載函數(shù)Max1可分別求取兩個(gè)整數(shù),三個(gè)整數(shù),兩個(gè)雙精度數(shù),三個(gè)雙精度數(shù)的最大值。#include using namespace std;int Max1(int a,int b)/兩個(gè)整形求最大值 int c; c=(ab)?a:b; coutcb)?a:b; coutcb)?(ac)?a:c):(bc)?b:c); coutdendl; coutnb)?(ac)?a:c):(bc)?b:c); coutdendl; coutnendl; return d;void main() int a=1,b=8,c=12; double a1=4.2,b1=1.8,c1=6.7; cout原數(shù)為:nendl; couta=a b=b c=cendl; coutnendl; couta1=a1 b1=b1 c1=c1endl; coutnendl; cout(a,b)兩個(gè)整形求最大值endl; Max1(a,b); coutnendl; cout(a,b,c)三個(gè)整形求最大值endl; Max1(a,b,c); cout(a1,b1)兩個(gè)雙精度數(shù)求最大值endl; Max1(a1,b1); coutnendl; cout(a1,b1,c1)三個(gè)雙精度數(shù)求最大值endl; Max1(a1,b1,c1);2) 寫一個(gè)函數(shù),具有一個(gè)引用作為形參參數(shù),在函數(shù)中改變引用變量的值,觀察實(shí)參變量的變化。#includeusing namespace std;swap(int &x);void main()int a; coutplease input a number: a=; scanf(%d,&a); swap(a); coutnow: ; couta=aendl;swap(int &x) coutplease input a number: x=; scanf(%d,&x); return x;3) 定義一個(gè)CPU類,包含等級(Rank)、頻率(frequency)、電壓(voltage)等屬性,有兩個(gè)公有成員函數(shù)run、stop。其中,rank為枚舉類型CPU_Rank,定義為enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7,frequency為單位是MHz的整型數(shù),voltage為浮點(diǎn)型的電壓值。觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。第一種:#includeusing namespace std;class CPU public:int run();int stop();CPU(int frequency1,float voltage1)coutbuild!endl; frequency=frequency1; voltage=voltage1; coutfrequency= frequency MHzendl; coutvoltage= voltageendl;CPU()coutdestory!endl; private: int frequency; float voltage;enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7;void main() CPU a(3500,30);第二種:#includeusing namespace std;class CPU public:int run();int stop();CPU( int frequency1,float voltage1):frequency(frequency1),voltage(voltage1)coutbuild!endl;coutfrequency= frequency MHzendl; coutvoltage= voltageendl;CPU()coutdestory!endl; private: int frequency; float voltage;enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7;void main()int frequency; float voltage; coutfrequency; coutvoltage; CPU a(frequency,voltage);4) 定義一個(gè)簡單的Computer類,有數(shù)據(jù)成員芯片(cpu)、內(nèi)存(ram)、光驅(qū)(cdrom)等等,有兩個(gè)公有成員函數(shù)run、stop。cpu為CPU類的一個(gè)對象,ram為RAM類的一個(gè)對象,cdrom為CDROM類的一個(gè)對象,定義并實(shí)現(xiàn)這個(gè)類,為以上的類編寫構(gòu)造和析構(gòu)函數(shù),觀察組合類和內(nèi)嵌類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。#includeusing namespace std;class CPUpublic:CPU() coutcpu build!endl;CPU() coutcpu destory!endl;class RAMpublic:RAM() coutram build!endl;RAM() coutram destory!endl;class CDROMpublic:CDROM() coutcdrom build!endl;CDROM() coutcdrom destory!endl;class Computerprivate:CPU cpu;RAM ram;CDROM cdrom;public:Computer() coutComputer build!endl; Computer() coutComputer destory!endl; ;int main() Computer A;5) 為題目2)的類編寫復(fù)制構(gòu)造函數(shù),在主函數(shù)中利用復(fù)制構(gòu)造的方式創(chuàng)建新的對象,觀察對象的狀態(tài)。#includeusing namespace std;class A int a;public:A(int a1=0) a=a1;A(A &p);int getA() return a; A:A(A &p) a=p.a; void main() A a(2); cout原本結(jié)果:a.getA()endl; A b(a); cout復(fù)制結(jié)果:b.getA()endl;6) 思考并回答以下概念:函數(shù)重載,引用,類,對象,數(shù)據(jù)成員,函數(shù)成員,訪問屬性,構(gòu)造函數(shù),析構(gòu)函數(shù),類的組合,內(nèi)嵌對象,初始化列表,復(fù)制構(gòu)造函數(shù)。3. 主要儀器設(shè)備及軟件:PC+Windows 2000+VC 6.0實(shí)驗(yàn)二 C+程序的結(jié)構(gòu)( 設(shè)計(jì)性實(shí)驗(yàn) 2學(xué)時(shí))1. 目的要求: 1) 觀察程序運(yùn)行中變量的作用域、生存期和可見性;2) 學(xué)習(xí)類的靜態(tài)成員的使用;3) 學(xué)習(xí)多文件結(jié)構(gòu)在C+程序中的使用。2. 實(shí)驗(yàn)內(nèi)容:1) 實(shí)現(xiàn)客戶機(jī)(CLIENT)類。定義字符型靜態(tài)數(shù)據(jù)成員ServerName,保存其服務(wù)器名稱;整型靜態(tài)數(shù)據(jù)成員ClientNum,記錄已定義的客戶數(shù)量;定義靜態(tài)函數(shù)ChangeServerName()改變服務(wù)器名稱。#includeusing namespace std;class CLIENT public: static void ChangeServerName()/靜態(tài)函數(shù)ChangeServerName()改變服務(wù)器名稱 cout the ClientNum:ClientNum=ClientNumendl; cout the ServerName:ServerName=ServerNameendl; coutServerName; coutnendl; coutnow the ServerName:ServerName=ServerNameendl; private: static char ServerName;/字符型靜態(tài)數(shù)據(jù)成員ServerName,保存其服務(wù)器名稱 static int ClientNum;/整型靜態(tài)數(shù)據(jù)成員ClientNum,記錄已定義的客戶數(shù)量;char CLIENT:ServerName=t;int CLIENT:ClientNum=0;void main() CLIENT A; CLIENT:ChangeServerName();2) 利用多文件結(jié)構(gòu)實(shí)現(xiàn)題目1),在頭文件client.h中定義類,在文件client.cpp中實(shí)現(xiàn)該類,在文件test.cpp 中測試這個(gè)類,觀察相應(yīng)的成員變量取值的變化情況,要求ClientNum能夠?qū)崟r(shí)記錄客戶機(jī)對象的數(shù)量。 在文件client.cpp中實(shí)現(xiàn)該類#includeclient.h#includeusing namespace std;char CLIENT:ServerName=t;int CLIENT:ClientNum=0;void CLIENT:inputServerName() /靜態(tài)函數(shù)ChangeServerName()改變服務(wù)器名稱 coutServerName; / coutnow the ServerName:ServerName=ServerNameendl; ClientNum+; coutnow the ClientNum:ClientNum=ClientNumendl; CLIENT:CLIENT() ClientNum-; coutnow the ClientNum:ClientNum=ClientNumendl; 在文件test.cpp 中測試這個(gè)類#includeclient.h#includeusing namespace std;void main() coutbegain!endl; CLIENT A; CLIENT:inputServerName(); CLIENT B; CLIENT:inputServerName(); coutend!endl; 在頭文件client.h中定義類class CLIENT public: static void inputServerName(); CLIENT(); private: static char ServerName;/字符型靜態(tài)數(shù)據(jù)成員ServerName,保存其服務(wù)器名稱 static int ClientNum;/整型靜態(tài)數(shù)據(jù)成員ClientNum,記錄已定義的客戶數(shù)量;3) 思考并回答以下概念: 類的靜態(tài)數(shù)據(jù)成員,類的靜態(tài)函數(shù)成員,多文件結(jié)構(gòu),文件包含。3. 主要儀器設(shè)備及軟件:Windows 2000+VC 6.0實(shí)驗(yàn)三 數(shù)組、指針與字符串實(shí)驗(yàn)(設(shè)計(jì)性實(shí)驗(yàn) 4學(xué)時(shí))1. 目的要求:1) 學(xué)習(xí)使用數(shù)組;學(xué)習(xí)字符串?dāng)?shù)據(jù)的組織和處理;學(xué)習(xí)標(biāo)準(zhǔn)C+庫的使用;2) 掌握指針的使用方法;練習(xí)通過debug觀察指針的內(nèi)容及其所指的對象的內(nèi)容;練習(xí)通過動態(tài)內(nèi)存分配實(shí)現(xiàn)動態(tài)數(shù)組,并體會指針在其中的作用;3) 分別使用字符數(shù)組和標(biāo)準(zhǔn)C+庫練習(xí)處理字符串的方法。2. 實(shí)驗(yàn)內(nèi)容:1) 編寫一個(gè)類用于處理33矩陣轉(zhuǎn)置,測試轉(zhuǎn)置的效果,輸出轉(zhuǎn)置前后的矩陣。#includeusing namespace std;class Point public:Point()/構(gòu)造函數(shù)里賦值 for(i=0;i3;i+)for(j=0;jaij;move()/轉(zhuǎn)置 for(i=0;i3;i+)for(j=0;j3;j+)bij=aji;void show()/顯示轉(zhuǎn)置結(jié)果 for(i=0;i3;i+)for(j=0;j3;j+)coutbij;couttendl;private:int i;/行int j;/列 int a33;/原數(shù)組int b33;/轉(zhuǎn)置數(shù)組;int main()int i,j;int x;coutassignment begin!endl; coutPlease enter the valuesendl;Point a1; a1.move(); coutresult:endl; a1.show(); return 0;2) 定義一個(gè)具有構(gòu)造函數(shù)和析構(gòu)函數(shù)的類,如實(shí)驗(yàn)一的CPU類,定義一個(gè)CPU的對象數(shù)組,觀察構(gòu)造函數(shù)的析構(gòu)函數(shù)的調(diào)用過程。#includeusing namespace std;class CPUpublic:CPU(int xx,int yy,int tt)x=xx;y=yy;t=tt;coutt build !endl;CPU()coutt No !endl;private:int x,y,t;int main()CPU cpu3=CPU(1,2,1),CPU(3,4,2),CPU(5,6,3);return 0;3) 利用動態(tài)內(nèi)存分配的方式重新完成題目2)。#includeusing namespace std;class CPUpublic:CPU():x(0),y(0),t(0)coutbegain !endl; CPU(int xx,int yy,int tt):x(xx),y(yy),t(tt)void move(int xx,int yy,int tt)x=xx;y=yy;t=tt;coutt build !endl;CPU()coutt No !endl;private:int x,y,t;int main()CPU *p=new CPU3;p0.move(1,2,1); p1.move(3,4,2); p2.move(5,6,3); coutend !endl;delete p;return 0;4) 使用系統(tǒng)提供的string類定義字符串對象并初始化,實(shí)現(xiàn)從原始字符串中提取一個(gè)子串。#include#includeusing namespace std;int main()int i,j; string A=abcdefghijklnm;string B=123456789; coutA=Aendl;couti;coutj; string a=A.substr(i-1,j);/從位置三開始的九個(gè)字符coutaendl;coutnendl;coutB=Bendl; couti;coutj;string b=B.substr(i-1,j);/從位置七開始的兩個(gè)字符coutbendl;return 0;5) 選做:定義一個(gè)Point(二維點(diǎn)類)的對象數(shù)組,利用該數(shù)組實(shí)現(xiàn)直線的線性擬合。Point.h#ifndef _POINT_H#define _POINT_Hclass Pointpublic:Point(float x=0,float y=0):x(x),y(y)float getX() const return x;float getY() const return y;private:float x,y;#endif 3_5.cpp/*定義一個(gè)Point(二維點(diǎn)類)的對象數(shù)組,利用該數(shù)組實(shí)現(xiàn)直線的線性擬合。*/#includePoint.h#include#includeusing namespace std;float lineFit(const Point points,int nPoint)int i;float avgX=0,avgY=0;float lxx=0,lyy=0,lxy=0;for(i=0;inPoint;i+)avgX+=pointsi.getX()/nPoint;avgY+=pointsi.getY()/nPoint;for(i=0;inPoint;i+)lxx+=(pointsi.getX()-avgX)*(pointsi.getX()-avgX);lyy+=(pointsi.getY()-avgY)*(pointsi.getY()-avgY);lxy+=(pointsi.getX()-avgX)*(pointsi.getY()-avgY);coutThis line can be fitted by y=ax+b.endl;couta=lxy/lxx ;coutb=avgY-lxy*avgX/lxxendl;return static_cast(lxy/sqrt(lxx*lyy);int main()Point p10=Point(6,10),Point(14,20),Point(26,30),Point(33,40),Point(46,50), Point(54,60),Point(67,70),Point(75,80),Point(84,90),Point(100,100);float r=lineFit(p,10);coutLine coefficient r=rendl;return 0;6) 選做:定義一個(gè)動態(tài)數(shù)組類。#include#includeusing namespace std;class Pointpublic:Point():x(0),y(0)coutBuild !1!endl;Point(int x,int y):x(x),y(y)coutBuild !2!endl;Point()coutDestructor !3!endl;void move(int newx,int newy)x=newx;y=newy;private:int x,y;class ArrayOfPointspublic:ArrayOfPoints(int size):size(size)points=new Pointsize;ArrayOfPoints() coutDelete !4!=0 & indexsize);return pointsindex;private:Point *points;int size;int main()int count; coutcount; ArrayOfPoints points(count);points.element(0).move(5,0); points.element(1).move(15,20);return 0;7) 思考并回答:數(shù)組,指針,對象數(shù)組,動態(tài)內(nèi)存分配,默認(rèn)構(gòu)造函數(shù),標(biāo)準(zhǔn)類庫,字符串類 string,線性擬合。3. 主要儀器設(shè)備及軟件:Windows 2000+VC 6.0實(shí)驗(yàn)四 繼承與派生(設(shè)計(jì)性實(shí)驗(yàn) 2學(xué)時(shí))1. 目的要求:1) 學(xué)習(xí)定義和使用類的繼承關(guān)系,定義派生類;熟悉不同繼承方式下對基類成員的訪問控制;2) 學(xué)習(xí)利用虛基類解決二義性問題。2. 實(shí)驗(yàn)內(nèi)容:1) 定義一個(gè)基類Animal,有私有整型成員變量age,構(gòu)造其派生類dog,在其成員函數(shù)SetAge(int n)中直接給age賦值,看看會有什么問題,把 age改為公有成員變量,還會有問題嗎?編程試試看。#includeusing namespace std;class Animal/private:public:int age;class dog:public Animalpublic:SetAge(int n) age=n; coutage=ageendl;int main()dog a;int n;coutn;a.SetAge(n);return 0;2) 定義一個(gè)基類BaseClass,有整型成員變量Number,構(gòu)造其派生類DerivedClass,定義該派生類的對象,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。#includeusing namespace std;class BaseClassprivate:int Number;public: BaseClass(int number)Number=number;/coutBaseClass.Number=Numberendl;coutbuild BaseClassendl;BaseClass()coutdestroied BaseClassendl;class DerivedClass:public BaseClassprivate:int a;public: DerivedClass(int aa):BaseClass(aa)a=aa;/coutDerivedClass.a=aendl; coutbuild DerivedClassendl;DerivedClass() coutdestroied DerivedClassendl; ;int main() DerivedClass derived(5);return 0;3) 定義一個(gè)車(vehicle)基類,具有MaxSpeed、Weight等成員變量,Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類,汽車(motorcar)類。自行車(bicycle)類有高度(Height)等屬性,汽車(motorcycle)類有座位數(shù)(SeatNum)等屬性。從bicycle和motorcycle派生出摩托車(Motorcar)類,在繼承過程中,注意把vehicle設(shè)置為虛基類。如果不把vehicle 設(shè)置為虛基類,會有什么問?編程實(shí)驗(yàn)及分析原因。#includeusing namespace std;class vehicle private: int MaxSpeed; int Weight;public:void Run()cout1 vehicle Run !endl;void Stop()cout1 vehicle Stop !endl; vehicle(int MaxSpeed1=0,int Weight1=0):MaxSpeed(MaxSpeed1),Weight(Weight1)cout1 vehicle start !endl;vehicle()cout1 vehicle end !endl;class bicycle:virtual public vehicle private:int Height;public: bicycle(int Height1=0):Height(Height1)cout2 bicycle start !endl;bicycle()cout2 bicycle end !endl;class motorcycle:virtual public vehicleprivate:int SeatNum; public: motorcycle(int SeatNum1=0):SeatNum(SeatNum1)cout3 bicycle start !endl;motorcycle()cout3 motorcycle end !endl;class Motorcar:public bicycle,public motorcycle public: Motorcar()cout4 Motorcar start !endl;Motorcar()cout4 Motorcar end !endl;int main()Motorcar Motorcar1;return 0;若沒有設(shè)為虛基類,截圖為:4) 思考并回答:繼承,派生,子類對基類成員的訪問權(quán)限,繼承方式,繼承時(shí)的構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序,虛基類3. 主要儀器設(shè)備及軟件:PC+Windows 2000+VC 6.0實(shí)驗(yàn)五 多態(tài)和運(yùn)算符重載( 設(shè)計(jì)性實(shí)驗(yàn) 2學(xué)時(shí))1. 目的要求:掌握運(yùn)算符重載的方法;學(xué)習(xí)使用虛函數(shù)實(shí)現(xiàn)動態(tài)多態(tài)性。2. 實(shí)驗(yàn)內(nèi)容:1) 定義Point類,有坐標(biāo)x,y兩個(gè)私有成員變量;對Point類重載“+”(相加)、“-”(相減)和“=”(相等)運(yùn)算符,實(shí)現(xiàn)對坐標(biāo)的改變,要求用友元函數(shù)和成員函數(shù)兩種方法實(shí)現(xiàn)。對Point類重載運(yùn)算符,以使得代碼 Point p; coutpendl;可以輸出該點(diǎn)對象的坐標(biāo)。#includeusing namespace std;class Point;Point operator+(Point &c1,Point &c2);Point operator-(Point &c1,Point &c2);bool operator=(Point &c1,Point &c2);ostream & operator(ostream &out,Point &c);class Pointint x,y;public:Point(int xx=0,int yy=0):x(xx),y(yy)friend Point operator+(Point &c1,Point &c2);friend Point operator-(Point &c1,Point &c2);friend bool operator=(Point &c1,Point &c2);friend ostream & operator(ostream &out,Point &c); Point operator+(Point &c1,Point &c2) return Point(c1.x+c2.x,c1.y+c2.y); Point operator-(Point &c1,Point &c2) return Point(c1.x-c2.x,c1.y-c2.y);bool operator=(Point &c1,Point &c2) if(c1.x=c2.x & c1.y=c2.y) return true; else return false;ostream &operator(ostream &out,Point &c) out(c.x,c.y); return out;void main() Point c1(4,5),c2(1,3),c3; c3=c1+c2; coutc3endl; c3=c1-c2; coutc3endl; if(c1=c2) coutc1=c2endl; else coutc1!=c2endl;/*/成員函數(shù)#includeusing namespace std;class Point;ostream & operator(ostream &out,Point &c);class Pointint x,y;public:Point(int xx=0,int yy=0):x(xx),y(yy)Point operator+(Point &c2);Point operator-(Point &c2);bool operator=(Point &c2);friend ostream & operator(ostream &out,Point &c);Point Point:operator+(Point &c2) return Point(x+c2.x,y+c2.y);Point Point:operator-(Point &c2) return Point(x-c2.x,y-c2.y);bool Point:operator=(Point &c2) if(x=c2.x & y=c2.y) return true; else return false;ostream &operator(ostream &out,Point &c) out(c.x,c.y); return out;void main() Point c1(4,5),c2(1,3),c3; c3=c1+c2; coutc3endl; c3=c1-c2; coutc3endl; if(c1=c2) coutc1=c2endl; else coutc1!=c2endl;*/2) 定義一個(gè)車(vehicle)基類,有虛函數(shù)Run、Stop等成員函數(shù),由此派生出自行車(bicycle)類、汽車(motorcar)類,它們都有Run、Stop等成員函數(shù)。在主函數(shù)中用不同的方法調(diào)用Run、Stop成員函數(shù),觀察這些函數(shù)的執(zhí)行結(jié)果,思考如何實(shí)現(xiàn)動態(tài)多態(tài)性,如果Run、Stop沒有被定義為虛函數(shù),執(zhí)行結(jié)果會怎樣,把結(jié)果和分析寫入實(shí)驗(yàn)報(bào)告。#includeusing namespace std;class vehiclepublic:virtual void Run()cout1 Run endl;virtual void Stop()cout1 Stop endl;class bicycle:public vehiclepublic: void Run()cout2 Run endl; void Stop()cout2 Stop endl;class motorcar:public vehiclepublic: void Run()cout3 Run endl; void Stop()cout3 Stop Run();p-Stop();void main() vehicle vehicle1;bicycle bicycle1;motorcar motorcar1;fun(&vehicle1);fun(&bicycle1);fun(&motorcar1);3) 選做,利用類完成求函數(shù)的積分(參考教材)。4) 思考并回答:多態(tài),實(shí)現(xiàn)多態(tài)性的方法,虛函數(shù),運(yùn)算符重載,前+,后+,實(shí)現(xiàn)運(yùn)算符重載的方式。3. 主要儀器設(shè)備及軟件:PC+Windows 2000+VC 6.0實(shí)驗(yàn)六 模板和文件(設(shè)計(jì)性實(shí)驗(yàn) 2學(xué)時(shí))1. 目的要求:1) 理解模板的作用和語法。2) 學(xué)習(xí)掌握C+文件處理類的基本用法。2. 實(shí)驗(yàn)內(nèi)容:1) 使用函數(shù)模板實(shí)現(xiàn)一個(gè)求3個(gè)數(shù)最大值的函數(shù),并完成測試。2) 編寫程序,用二進(jìn)制方式打開指定的一個(gè)文件,在每一行前加行號。3) 選做,練習(xí)使用STL中的vector模板類。4) 選做,定義一個(gè)異常類CException,有成員函數(shù)Reason(),用來顯示異常的類型。在子函數(shù)中觸發(fā)異常,在主程序中

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論