版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《面向?qū)ο蟪绦蛟O(shè)計(jì)》實(shí)驗(yàn)指導(dǎo)書第一部分實(shí)驗(yàn)教學(xué)大綱課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)一、課程簡(jiǎn)介及基本要求面向?qū)ο蟮某绦蛟O(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,每個(gè)學(xué)生必須完成一定數(shù)量的上機(jī)作業(yè)。通過上機(jī)作業(yè)進(jìn)一步加深對(duì)課程基本內(nèi)容的理解。同時(shí),在程序設(shè)計(jì)方法及上機(jī)操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)的、嚴(yán)格的訓(xùn)練。由于學(xué)生編程和上機(jī)的熟悉程度往往差別較大,本大綱所要求的實(shí)驗(yàn)為每個(gè)學(xué)生必須完成的實(shí)驗(yàn),即最低要求。其它上機(jī)內(nèi)容由學(xué)生在教師指導(dǎo)下自選,內(nèi)容可以是習(xí)題中編寫的程序,也可以是學(xué)生解決實(shí)際問題中所編寫的程序。二、實(shí)驗(yàn)課程目的與要求實(shí)驗(yàn)課是對(duì)學(xué)生的一種全面綜合訓(xùn)練,是與課堂聽講、自學(xué)和練習(xí)相輔相成的必不可少的一個(gè)教學(xué)環(huán)節(jié)。本課程使學(xué)生熟悉C++的語法特性,了解C與C++的區(qū)別和兼容性;理解面向?qū)ο蟪绦蛟O(shè)計(jì)的基本原理,包括類、對(duì)象、抽象、封裝、繼承和多態(tài)性等關(guān)鍵要素以及其關(guān)鍵語法特性—類;掌握用C++編寫面向?qū)ο蟪绦虻囊话惴椒ǎ涣私釼C++編程環(huán)境。三、主要儀器設(shè)備PC機(jī)器一臺(tái)。裝有C++builder或VisualC++或其他的C++編譯軟件。四、實(shí)驗(yàn)方式與基本要求要求把每次實(shí)驗(yàn)的程序文本和運(yùn)行結(jié)果通過郵件方式發(fā)送給實(shí)驗(yàn)指導(dǎo)老師.五.考核與報(bào)告本課程實(shí)驗(yàn)考試方式是考查,按一般課程考試方式進(jìn)行,主要內(nèi)容包括實(shí)驗(yàn)操作和實(shí)驗(yàn)報(bào)告,實(shí)驗(yàn)成績占該課程形成性考核成績的30%。實(shí)驗(yàn)報(bào)告的規(guī)范:實(shí)驗(yàn)完成后填寫統(tǒng)一的實(shí)驗(yàn)報(bào)告,給出實(shí)驗(yàn)內(nèi)容題目、年級(jí)、姓名、學(xué)號(hào)、指導(dǎo)教師、完成日期,并詳細(xì)填寫:實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)程序、實(shí)驗(yàn)結(jié)果及分析、存在的問題。
實(shí)驗(yàn)0、C++開發(fā)環(huán)境應(yīng)用(課外實(shí)驗(yàn)2學(xué)時(shí))1、實(shí)驗(yàn)?zāi)康模?)了解C++開發(fā)工具的特點(diǎn)(2)熟悉C++開發(fā)環(huán)境(2)學(xué)習(xí)用C++編寫標(biāo)準(zhǔn)的C++程序2、實(shí)驗(yàn)任務(wù)使用C++來建立一個(gè)非圖形化的標(biāo)準(zhǔn)C++程序,編譯、運(yùn)行下例程序:#include<iostream.h>voidmain(void){cout<<”Hello!\n”;cout<<”WelcometoC++!\n”;}3、實(shí)驗(yàn)步驟(1)啟動(dòng)VisualC++開發(fā)環(huán)境(2)創(chuàng)建一個(gè)項(xiàng)目a.單擊File菜單中的New選項(xiàng),顯示示新建對(duì)話框b.選擇Win32ConsoleApplication(VC++)。c.選擇項(xiàng)目所在路徑及輸入項(xiàng)目的名稱d.依次按‘下一步’直至完成為止。(3)至此,已經(jīng)建立好工程相關(guān)的文件,在生成的main函數(shù)中寫入必要的內(nèi)容即可。(4)繼續(xù)下面的步驟:a.建立C++源程序文件選菜單命令Project|AddtoProject|New,彈出New對(duì)話框在New對(duì)話框的Files選項(xiàng)卡中選擇C++SourceFile,并填入文件名稱,單擊OK按鈕,完成新建C++源程序文件b.編輯C++源程序文件在文件編輯窗口中輸入代碼完成后,選擇菜單File|Save保存這個(gè)文件c.建立并運(yùn)行可執(zhí)行程序選擇菜單命令Build,建立可執(zhí)行程序如果你正確輸入了源程序,此時(shí)便成功地生成了可執(zhí)行程序。如果程序有語法錯(cuò)誤,則屏幕下方的狀態(tài)窗口中會(huì)顯示錯(cuò)誤信息,根據(jù)這些錯(cuò)誤信息對(duì)源程序進(jìn)行修改后,重新選擇菜單命令Build建立可執(zhí)行程序。選擇菜單命令Run,運(yùn)行程序,觀察屏幕顯示內(nèi)容。d.關(guān)閉工作空間選擇菜單命令File|ColseWorkSpace關(guān)閉工作空間。1.熟悉VisualC++實(shí)驗(yàn)環(huán)境[實(shí)驗(yàn)步驟](1)啟動(dòng)DeveloperStudio,看看初始化界面由哪些部分組成(2)查看各菜單項(xiàng),看看都有哪些子菜單和命令(3)將鼠標(biāo)放置于各工具條圖標(biāo)上,系統(tǒng)會(huì)自動(dòng)顯示該圖標(biāo)代表的命令含義,了解一下都有哪些命令。(4)在任意工具條上單擊鼠標(biāo)右鍵,彈出式菜單上將顯示所有可用的工具條,選擇其中沒有對(duì)號(hào)(√)的項(xiàng),看看有什么效果,再選擇有對(duì)號(hào)的項(xiàng),又有什么效果?(5)將鼠標(biāo)移動(dòng)到任意工具條上,將鼠標(biāo)放到圖標(biāo)間隙,按下鼠標(biāo)左鍵不放,移動(dòng)鼠標(biāo)到屏幕中間,有什么現(xiàn)象發(fā)生?再將它拖回到原來位置,有什么現(xiàn)象發(fā)生?(6)將鼠標(biāo)移動(dòng)到左邊的工作區(qū)窗口,按下鼠標(biāo)左鍵不放,移動(dòng)鼠標(biāo)到屏幕中間,有什么現(xiàn)象發(fā)生?再將它拖回到原來位置,有什么現(xiàn)象發(fā)生?7)將鼠標(biāo)移動(dòng)到下邊的輸出窗口,按鼠標(biāo)右鍵,彈出一個(gè)菜單,選擇其中的菜單項(xiàng)"Hide",結(jié)果如何?要重新顯示該窗口,選擇菜單View|Output,窗口是不是又顯示出來了?(8)學(xué)習(xí)使用幫助系統(tǒng)。如果你用的是VisualC++5.0,則在工作區(qū)窗口的InfoView中選擇你感興趣的內(nèi)容,雙擊它,在文檔區(qū)顯示具體的幫助信息。如果你用的是VisualC++6.0,選擇菜單Help|Contents,啟動(dòng)MSDN聯(lián)機(jī)幫助系統(tǒng),學(xué)習(xí)使用該幫助系統(tǒng)。聯(lián)機(jī)幫助系統(tǒng)是一個(gè)相對(duì)獨(dú)立的程序,它和DeveloperStudio是兩個(gè)程序,但是它的啟動(dòng)和停止都受DeveloperStudio影響。MSDN聯(lián)機(jī)幫助系統(tǒng)運(yùn)行的前提條件是DeveloperStudio在運(yùn)行。(9)選File|Exit退出DeveloperStudio。2.控制臺(tái)應(yīng)用用AppWizard建立一個(gè)控制臺(tái)應(yīng)用,在終端上輸出"Hello"。術(shù)語:“控制臺(tái)應(yīng)用程序”是一個(gè)在DOS窗口中運(yùn)行的基于字符的程序。由于這種模式的應(yīng)用程序比Windows程序簡(jiǎn)單,我們先選擇利用VisualC++來建立這樣一個(gè)應(yīng)用,這樣使得我們可以將精力先投入到學(xué)習(xí)使用C++編程語言,而不需要把過多的精力投入到學(xué)習(xí)復(fù)雜的Windows編程中去。[實(shí)驗(yàn)步驟]1)創(chuàng)建第一個(gè)應(yīng)用首先創(chuàng)建一個(gè)項(xiàng)目(project),項(xiàng)目將代表你的應(yīng)用,存放你應(yīng)用的所有信息,包括源文件、資源文件、編譯連接設(shè)置等。創(chuàng)建項(xiàng)目的步驟為:(1)啟動(dòng)DeveloperStudio(2)從主菜單中選擇File|New,將顯示出New對(duì)話框(3)選擇Projects標(biāo)簽,并從列表中單擊Win32ConsoleApplication(4)在“Location”編輯框中輸入你的工作目錄名稱,如c:\student\your_name(自建吧)(5)在對(duì)話框的右上角的“projectname”編輯框內(nèi)鍵入項(xiàng)目的名字,如"Hello",系統(tǒng)將自動(dòng)為你的項(xiàng)目分配一個(gè)默認(rèn)的目錄(6)單擊OK繼續(xù)(7)如果是VC6.0,系統(tǒng)將顯示一個(gè)詢問項(xiàng)目類型的程序向?qū)?,選擇“anemptyproject”(8)單擊Finish或OK結(jié)束配置,創(chuàng)建應(yīng)用程序這時(shí)系統(tǒng)為你創(chuàng)建一個(gè)新的項(xiàng)目,并且在左邊的工作區(qū)窗口中將出現(xiàn)你項(xiàng)目的名字。工作區(qū)窗口除原來的InfoView標(biāo)簽外又增加了兩個(gè)標(biāo)簽(如果是VisualC++6.0,則沒有InfoView標(biāo)簽):ClassView和FileView。ClassView從類的角度顯示項(xiàng)目中建立的各個(gè)類,雙擊某個(gè)類名將會(huì)在右邊的文檔顯示區(qū)顯示類的定義文件并把文件的當(dāng)前位置定位到所選的類;FileView顯示構(gòu)成項(xiàng)目的各個(gè)文件,選擇某一文件將會(huì)在右邊的文檔顯示區(qū)顯示文件內(nèi)容;InfoView是VC5的幫助文件目錄,在這里可以選擇所要獲取幫助的標(biāo)題,在右邊將顯示幫助內(nèi)容。2)編輯你的第一個(gè)C++源程序用下面的方法在你創(chuàng)建的項(xiàng)目中添加一個(gè)文件:(1)在主菜單上選擇File|New(2)在New對(duì)話框中選擇File標(biāo)簽,單擊“C++SourceFile”(3)選中AddtoProject復(fù)選框(4)在右邊的Filename編輯框中為文件指定一個(gè)名字,如Hello,系統(tǒng)將自動(dòng)為你加上后綴.cpp。新的空白文件將自動(dòng)打開,顯示在文檔顯示區(qū)。在文件中輸入以下內(nèi)容(不包括上下兩條橫線)://helloworldexample#include<iostream.h>intmain(){cout<<"hello!"<<endl;return0;//正常返回}仔細(xì)檢查你輸入的內(nèi)容,確保內(nèi)容正確-->[常用編輯命令]雖然許多編輯命令可以通過菜單和工具欄實(shí)現(xiàn),但大量的編輯命令都可以通過鍵盤實(shí)現(xiàn)。以下命令通常用鍵盤實(shí)現(xiàn):*撤消前一次操作。當(dāng)你進(jìn)行了一次錯(cuò)誤的操作時(shí),可以通過敲擊鍵盤上的Ctrl+Z完成;*重復(fù)前一次操作。通過敲擊Ctrl+Y實(shí)現(xiàn)*剪切一行。用Ctrl+L來刪除一行并將它放到剪切板中*剪切。將選中的文本刪除并將它放到剪切板中,用Ctrl+X實(shí)現(xiàn)*復(fù)制。將選中的文本復(fù)制到剪切板中,用Ctrl+C實(shí)現(xiàn)*粘貼。將剪切板中的內(nèi)容放到編輯器中文本的當(dāng)前位置處(由光標(biāo)指示)。,用Ctrl+V實(shí)現(xiàn)要想了解關(guān)于鍵盤操作命令的完整列表,可以選擇Help菜單下的KeyboardMap。你沒有必要記住所有的命令,有些根本不常用。3)保存你的源文件單擊工具欄中的"save"圖標(biāo),或者選擇File|Save來保存你的文件。C++源文件的擴(kuò)展名為.cpp。擴(kuò)展名非常重要,DeveloperStudio根據(jù)文件的擴(kuò)展名來區(qū)分文件類型,并且根據(jù)文件類型提供相應(yīng)的編輯幫助(如正確的語法高亮顯示)。4)編譯、連接得到可執(zhí)行程序編輯結(jié)束后,仔細(xì)檢查你輸入的內(nèi)容,看有無錯(cuò)誤。確認(rèn)沒有錯(cuò)誤之后,選擇主菜單的Build|BuildHello.exe來編譯你的項(xiàng)目(也可以按功能鍵F7)。如果你輸入的內(nèi)容沒有錯(cuò)誤,那么,在屏幕下方的輸出窗口將會(huì)顯示:hello.exe-0error(s),0warning(s)如果在編譯時(shí)得到錯(cuò)誤或警告,是你的源文件出現(xiàn)錯(cuò)誤,再次檢查你的源文件,看是否有錯(cuò)誤,改正它。5)改正源程序中的錯(cuò)誤編譯的錯(cuò)誤會(huì)在DeveloperStudio的下方的輸出窗口顯示出來,逐個(gè)查看這些錯(cuò)誤的內(nèi)容,用鼠標(biāo)雙擊,光標(biāo)可以自動(dòng)移動(dòng)到發(fā)生錯(cuò)誤的源程序的相應(yīng)地點(diǎn),仔細(xì)檢查你的源程序,改正發(fā)生錯(cuò)誤的地方,注意是否否遺留了分號(hào)、引號(hào)或括號(hào)等。改正后,再重復(fù)步驟4)的操作,直到編譯連接通過為止。6)運(yùn)行你的第一個(gè)程序你可以有三種方式運(yùn)行你的程序:*在開發(fā)環(huán)境中運(yùn)行程序選擇Build|Executehello.exe(或者Ctrl+F5),在開發(fā)環(huán)境中執(zhí)行你的程序。程序運(yùn)行以后將顯示一個(gè)類似于DOS的窗口,在窗口中輸出一行“hello",緊接著在下面顯示“Pressanykeytocontinue",這句話是系統(tǒng)提示你按任意鍵退出當(dāng)前運(yùn)行的程序,回到開發(fā)環(huán)境中。按任意鍵,窗口關(guān)閉,退回到VisualC++開發(fā)環(huán)境。我們實(shí)驗(yàn)中將用這種方式運(yùn)行程序。*在DOS環(huán)境下運(yùn)行程序打開DOS窗口,改變工作路徑到項(xiàng)目目錄,該目錄是你在創(chuàng)建目錄時(shí)指定的。如果你不記得了,可以在DeveloperStudio中的工作區(qū)窗口中選擇項(xiàng)目名稱(這里是“hellofiles"),然后選擇菜單View|Properties,將可以顯示出項(xiàng)目路徑。切換到debug子目錄下,運(yùn)行hello.exe,程序?qū)⑤敵觯?hello'。實(shí)驗(yàn)一類的定義(1學(xué)時(shí))1實(shí)驗(yàn)?zāi)康模赫莆疹惖亩x學(xué)會(huì)構(gòu)造類的方法領(lǐng)會(huì)面向?qū)ο蟪绦蛟O(shè)計(jì)的方法2實(shí)驗(yàn)內(nèi)容:(1)設(shè)計(jì)一個(gè)用來表示直角坐標(biāo)系上點(diǎn)的位置的Location類,然后在主程序中創(chuàng)建兩個(gè)對(duì)象A和B,要求A在第三象限,B在第二象限,計(jì)算給定兩點(diǎn)之間的距離并按如下格式輸出結(jié)果:A(x1,y1),B(x2,y2)Distance=d其中x1,y1,x2,y2為指定值,d為計(jì)算結(jié)果。分析:這是一個(gè)很簡(jiǎn)單的類的設(shè)計(jì)。首先要清楚這個(gè)類要有幾個(gè)成員和成員函數(shù)。一個(gè)點(diǎn)起碼要有X坐標(biāo)和Y坐標(biāo),所以要給其添加兩個(gè)私有成員;接著要有起碼的構(gòu)造函數(shù)和析構(gòu)函數(shù);最后根據(jù)題目要求,設(shè)計(jì)一個(gè)成員函數(shù),用來求兩點(diǎn)之間的距離。程序源代碼分為兩部分:一個(gè)是Location.h,另一個(gè)是Location.cpp//程序頭文件放在Location.h中//Location.h#include<iostream.h>#include<math.h>classLocation{//橫坐標(biāo)和縱坐標(biāo):private:intX,Y;public:Location(inta,intb);//構(gòu)造函數(shù)doubledistance(Location&);//求兩點(diǎn)距離的函數(shù)~Location();//析構(gòu)函數(shù)intgetX(){ returnX;}intgetY(){ returnY;}};//在構(gòu)造函數(shù)中對(duì)類的成員進(jìn)行初始化Location::Location(inta,intb){X=a;Y=b;}//求兩點(diǎn)的距離//這里我們用的公式是,兩點(diǎn)之間的//距離=sqrt((x2-x1)**2+(y2-y1)**2))//(x1,y1)和(x2,y2)為兩點(diǎn)的坐標(biāo)doubleLocation::distance(Location&loc1)//類對(duì)象的X,Y代表一個(gè)點(diǎn)(x1,y1),loc1的X,Y代表另一點(diǎn)(x2,y2){doublelength;length=sqrt(pow(loc1.X-Location::X,2)+pow(loc1.Y-Location::Y,2));//注意這里的作用域符號(hào)::表示X和Y是屬//于Location類的returnlength;}//由于我們?cè)谶@個(gè)程序里沒有用new來開辟內(nèi)存,所以析構(gòu)函數(shù)為空Location::~Location(){}再在Location.cpp文件中編寫主程序//Location.cpp#include<E:\C++測(cè)試\Location.h>//根據(jù)實(shí)際情況指定頭文件所在目錄voidmain(){//先定義Location類的兩個(gè)對(duì)象A和B//并調(diào)用構(gòu)造函數(shù)對(duì)其進(jìn)行初始化LocationA(-10,-20),B(-30,40);//輸出A(x,y),B(x,y)cout<<"A("<<A.getX()<<","<<A.getY()<<"),"<<"B("<<B.getX()<<","<<B.getY()<<")"<<endl;//輸出distance=?cout<<"Distance="<<A.distance(B)<<endl;}注意:.h文件和.cpp文件要放在同一個(gè)目錄下面,如果不是放在同一個(gè)目錄下面的話,那么在.cpp文件中要在#include<Location.h>語句中加上Location.h文件所在地的整個(gè)目錄名,例如:#include<d:\user\location\Location.h>,這樣的話,編譯時(shí)才會(huì)不出錯(cuò)。當(dāng)然也可以將.h和.cpp文件合并在一起,構(gòu)成一個(gè)如下的單獨(dú).cpp文件。//Location.cpp#include<iostream.h>#include<math.h>classLocation{//橫坐標(biāo)和縱坐標(biāo):private:intX,Y;public:Location(inta,intb);//構(gòu)造函數(shù)doubledistance(Location&);//求兩點(diǎn)距離的函數(shù)~Location();//析構(gòu)函數(shù)intgetX(){ returnX;}intgetY(){ returnY;}};//在構(gòu)造函數(shù)中對(duì)類的成員進(jìn)行初始化Location::Location(inta,intb){X=a;Y=b;}//求兩點(diǎn)的距離//這里我們用的公式是,兩點(diǎn)之間的//距離=sqrt((x2-x1)**2+(y2-y1)**2))//(x1,y1)和(x2,y2)為兩點(diǎn)的坐標(biāo)doubleLocation::distance(Location&loc1){doublelength;length=sqrt(pow(loc1.X-Location::X,2)+pow(loc1.Y-Location::Y,2));//注意這里的作用域符號(hào)::表示X和Y是屬//于Location類的returnlength;}//由于我們?cè)谶@個(gè)程序里沒有用new來開辟內(nèi)存,所以析構(gòu)函數(shù)為空Location::~Location(){}voidmain(){//先定義Location類的兩個(gè)對(duì)象A和B//并調(diào)用構(gòu)造函數(shù)對(duì)其進(jìn)行初始化LocationA(-10,-20),B(-30,40);//輸出A(x,y),B(x,y)cout<<"A("<<A.getX()<<","<<A.getY()<<"),"<<"B("<<B.getX()<<","<<B.getY()<<")"<<endl;//輸出distance=?cout<<"Distance="<<A.distance(B)<<endl;}實(shí)驗(yàn)思考:大家可以用指針和引用來改寫這個(gè)程序,然后和原來的程序比較,看有什么區(qū)別。(2)定義一個(gè)代表矩形的組合類Rectangle,即把上面的Location類的對(duì)象作為Rectangle類的對(duì)象的一個(gè)成員,坐標(biāo)平面上的一個(gè)矩形由一個(gè)位置和矩形的長和寬決定。設(shè)計(jì)矩形類Rectangle并輸出給定點(diǎn)x1和y1的值及長和寬的值。//先定義類和類的成員函數(shù)的.h文件//文件名為Rectange.h//由于Rectangle類中要有Location類的對(duì)象//所以必須包括Location類的聲明文件//文件名為Rectangle.h#include<E:\C++測(cè)試\Rectangle\Location.h>//根據(jù)實(shí)際情況指定頭文件所在目錄classRectangle{private://定義矩形長和寬intlength,width;//定義矩形左上點(diǎn)Locationupleft;//Rectangle包含Location類的對(duì)象,所有Rectangle是組合類public://聲明矩形的構(gòu)造函數(shù)和析構(gòu)函數(shù)Rectangle(inta,intb,intlength,intwidth);~Rectangle();Locationgetupleft()//該函數(shù)用來獲取類對(duì)象upleft的值{returnupleft;}intgetlength(){returnlength;}intgetwidth(){returnwidth;}};//類定義結(jié)束Rectangle::Rectangle(inta,intb,intlen,intwid):upleft(a,b)//組合類的構(gòu)造函數(shù),帶有初始化表{//這里通過調(diào)用Location類的構(gòu)造函數(shù)來初始化Rectangle類的成員對(duì)象upleftlength=len;//初始化Rectangle類的lengthwidth=wid;//初始化Rectangle類的width}Rectangle::~Rectangle(){}再在.cpp文件中編寫主程序代碼://文件名Rectangle.cpp//包括下面頭文件的原因是本程序需要這些頭文件#include<E:\C++測(cè)試\Rectangle\Rectangle.h>#include<iostream.h>voidmain(){RectangleA(-10,-20,60,40);//定義了一個(gè)長為60,寬為40,左上點(diǎn)為(-10,-20)的矩形,下面將其輸出cout<<"矩形左上點(diǎn)為:"<<"("<<A.getupleft().getX()<<","<<A.getupleft().getY()<<")"<<endl;//A.getupleft是Location的成員對(duì)象,所以A.getupleft.getX//表示輸出的是左上點(diǎn)的x坐標(biāo),A.getupleft.getY表示輸//出的是左上點(diǎn)的y坐標(biāo),即-10和-20cout<<"矩形的長為:"<<A.getlength()<<endl;//輸出為60cout<<"矩形的寬為:"<<A.getwidth()<<endl;//輸出為40}3、實(shí)驗(yàn)要求(1)獨(dú)立完成實(shí)驗(yàn)。(2)實(shí)驗(yàn)前需先完成預(yù)習(xí)報(bào)告,報(bào)告中應(yīng)預(yù)先編寫好源程序。(3)實(shí)驗(yàn)過程中盡量獨(dú)立思考,培養(yǎng)分析問題和解決問題的能力。(4)實(shí)驗(yàn)完畢后書寫實(shí)驗(yàn)報(bào)告,實(shí)驗(yàn)報(bào)告內(nèi)容包括實(shí)驗(yàn)?zāi)康摹?shí)驗(yàn)內(nèi)容、結(jié)果分析以及本次實(shí)驗(yàn)的心得體會(huì)。要求將程序源碼和運(yùn)行時(shí)的輸入/輸出數(shù)據(jù)情況書寫在實(shí)驗(yàn)內(nèi)容部分,并對(duì)程序的輸出結(jié)果進(jìn)行分析,說明為什么能得出相應(yīng)的結(jié)果(如果不能輸出預(yù)期結(jié)果,需要分析說明其原因)。實(shí)驗(yàn)二、對(duì)象的構(gòu)造與析構(gòu)(1學(xué)時(shí))1、實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)對(duì)象的聲明復(fù)習(xí)具有不同訪問屬性的成員的訪問方式。觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行過程。學(xué)習(xí)拷貝構(gòu)造函數(shù)。2、實(shí)驗(yàn)任務(wù)(1)定義一個(gè)CPU類,包含等級(jí)(rank)、頻率(frequency)、電壓(voltage)等屬性,有兩個(gè)公有成員函數(shù)run、stop。其中rank為枚舉類型CPU_Rank,定義為enumCPU_Rank={P1=1,P2,P3,P4,P5,P6,P7},frequency為單位為MHz的整型數(shù),voltage為浮點(diǎn)型的電壓值。觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。(2)定義一個(gè)簡(jiǎn)單的Computer類,有數(shù)據(jù)成員芯片(cpu)、內(nèi)存(ram)、光驅(qū)(cdrom)等等,cpu為CPU類的一個(gè)對(duì)象,ram為RAM類的一個(gè)對(duì)象,cdrom為CDROM類的一個(gè)對(duì)象,定義并實(shí)現(xiàn)這個(gè)類。(3)設(shè)計(jì)一個(gè)用于學(xué)生管理的Student(學(xué)生)類??紤]到通用性,這里只抽象出所有學(xué)生類型人員都具有的屬性:name(姓名)、age(年齡)、等等(實(shí)驗(yàn)的時(shí)候可以擴(kuò)充屬性)。用成員函數(shù)實(shí)現(xiàn)對(duì)人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)。3、實(shí)驗(yàn)步驟定義枚舉類型CPU_Rank,例如enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},再定義CPU類,包含等級(jí)(rank)、頻率(frequency)、電壓(voltage)等私有數(shù)據(jù)成員,定義成員函數(shù)run、stop,用來輸出提示信息,在構(gòu)造函數(shù)和析構(gòu)函數(shù)中也可以輸出提示信息。在主程序中定義一個(gè)CPU類的對(duì)象,調(diào)用其成員函數(shù),觀察類對(duì)象的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。4、實(shí)驗(yàn)要求(1)獨(dú)立完成實(shí)驗(yàn)。(2)實(shí)驗(yàn)前需先完成預(yù)習(xí)報(bào)告,報(bào)告中應(yīng)預(yù)先編寫好源程序。(3)實(shí)驗(yàn)過程中盡量獨(dú)立思考,培養(yǎng)分析問題和解決問題的能力。(4)實(shí)驗(yàn)完畢后書寫實(shí)驗(yàn)報(bào)告,實(shí)驗(yàn)報(bào)告內(nèi)容包括實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)內(nèi)容、結(jié)果分析以及本次實(shí)驗(yàn)的心得體會(huì)。要求將程序源碼和運(yùn)行時(shí)的輸入/輸出數(shù)據(jù)情況書寫在實(shí)驗(yàn)內(nèi)容部分,并對(duì)程序的輸出結(jié)果進(jìn)行分析,說明為什么能得出相應(yīng)的結(jié)果(如果不能輸出預(yù)期結(jié)果,需要分析說明其原因)。//部分實(shí)驗(yàn)源程序CPU#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};classCPU{private: CPU_Rankrank; intfrequency; floatvoltage;public: CPU(CPU_Rankr,intf,floatv) { rank=r; frequency=f; voltage=v; cout<<"構(gòu)造了一個(gè)CPU!"<<endl; }~CPU(){cout<<"析構(gòu)了一個(gè)CPU!"<<endl;}CPU_RankGetRank()const{returnrank;}intGetFrequency()const{returnfrequency;}floatGetVoltage()const{returnvoltage;}voidSetRank(CPU_Rankr){rank=r;}voidSetFrequency(intf){frequency=f;}voidSetVoltage(floatv){voltage=v;}voidRun(){cout<<"CPU開始運(yùn)行!"<<endl;}voidStop(){cout<<"CPU停止運(yùn)行!"<<endl;}};voidmain(){CPUa(P6,300,2.8);a.Run();a.Stop();}//學(xué)生類//學(xué)生類#include<iostream>#include<string.h>usingnamespacestd;classstudent{private:char*name;intage;public:student()//構(gòu)造函數(shù),建立無初始化的對(duì)象時(shí)將被調(diào)用{cout<<"構(gòu)造函數(shù)student()被調(diào)用"<<endl;name=newchar[20];name[0]='\0';age=0;}student(char*name,intage)//構(gòu)造函數(shù),建立有始化的對(duì)象時(shí)將被調(diào)用{cout<<"構(gòu)造函數(shù)student(char*name,intage)被調(diào)用"<<endl;if(name==NULL){this->name=newchar[20];name[0]='\0';}else{this->name=newchar[strlen(name)+1];strcpy(this->name,name);cout<<"constructingstudent:"<<this->name<<endl;this->age=age;}}student(conststudent&stu)//深拷貝構(gòu)造函數(shù)(因?yàn)轭惖臄?shù)據(jù)成員有指針類型,所以必須定定義),建立有始化的對(duì)象時(shí)將被調(diào)用{cout<<"拷貝構(gòu)造函數(shù)(conststudent&stu)被調(diào)用"<<endl;this->name=newchar[strlen()+strlen("copyof")+1];strcpy(this->name,);strcat(this->name,"copyof");cout<<"constructingstudent:"<<this->name<<endl;this->age=stu.age;}student&operator=(conststudent&stu){if(this==&stu)//檢查自賦值用指針比較,不能用對(duì)象比較,對(duì)象比較函數(shù)未定義.防止stu=stu的賦值return*this;if(this->name)deletethis->name;this->name=newchar[strlen()+strlen("===construct")+1];strcpy(this->name,);strcat(this->name,"===construct");cout<<"constructingstudentby====!"<<endl;this->age=stu.age;return*this;}~student()//析構(gòu)函數(shù){cout<<"析構(gòu)函數(shù)被調(diào)用:"<<this->name<<"age:"<<this->age<<endl;if(this->name){ deletethis->name;this->name=NULL;}}};studenttest(students)//實(shí)參傳遞給形參的時(shí)候調(diào)用拷貝構(gòu)造函數(shù){cout<<"現(xiàn)在調(diào)用的是test函數(shù)"<<endl;students2("temp",22);//返回臨時(shí)對(duì)象前先拷貝構(gòu)造一個(gè)臨時(shí)對(duì)象,然后復(fù)制給實(shí)參//返回棧空間,程序本身有問題。但是拷貝構(gòu)造函數(shù)將原來的對(duì)象在一個(gè)新空間構(gòu)造,//所以不存在內(nèi)存泄露。returns2;//編譯器調(diào)用析構(gòu)函數(shù)去析構(gòu)自己產(chǎn)生的臨時(shí)對(duì)象出錯(cuò)}intmain(intargc,char*argv[]){cout<<"程序開始!"<<endl;studentstu("roger",11);cout<<"toexecutethetest()!"<<endl;students3("gugy",23);//test(stu);//students4;//s4=s3;s3=test(stu);//調(diào)用賦值函數(shù)cout<<"退出程序!"<<endl;return0;}實(shí)驗(yàn)三繼承和派生1、實(shí)驗(yàn)?zāi)康?掌握利用單繼承和多重繼承的方式定義派生類的方法;深刻理解在各種繼承方式下構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序;理解和掌握公有繼承、私有繼承和保護(hù)繼承對(duì)基類成員的訪問機(jī)制;理解虛基類的概念以及引入虛基類的目的和作用。2、實(shí)驗(yàn)內(nèi)容 以下內(nèi)容可根據(jù)具體情況至少選做兩題。設(shè)計(jì)A、B兩個(gè)類,包含自己的缺省構(gòu)造函數(shù)。由類A派生出新類C,并在C中包含類B的一個(gè)成員對(duì)象,且不創(chuàng)建類C的構(gòu)造函數(shù)。創(chuàng)建類C的一個(gè)對(duì)象,觀察其結(jié)果。設(shè)計(jì)一個(gè)圓類Circle和一個(gè)桌子類Table,在設(shè)計(jì)一個(gè)圓桌類Roundatable,它是從前兩個(gè)類派生出來的。要求輸出圓桌的高度、面積、顏色等數(shù)據(jù)。其中,類Circ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 5-氯水楊醛-2-氨基甲基苯并咪唑血管堿與銅的晶體結(jié)構(gòu)及其與DNA和BSA的相互作用
- 2025年中職食品加工工藝(食品生產(chǎn)技術(shù))試題及答案
- 八年級(jí)地理(自然資源)2027年下學(xué)期期末測(cè)試卷
- 2025年大學(xué)大三(能源化學(xué)工程)新能源材料基礎(chǔ)試題及答案
- 中職第二學(xué)年(模具設(shè)計(jì))模具CAD應(yīng)用2026年階段測(cè)試題及答案
- 2025年大學(xué)大四(漢語言文學(xué))綜合應(yīng)用測(cè)試卷
- 六年級(jí)語文(升學(xué)備考)2026年上學(xué)期期末測(cè)試卷
- 2025年中職數(shù)字媒體藝術(shù)設(shè)計(jì)(媒體設(shè)計(jì))試題及答案
- 2025年高職建筑安全技術(shù)與管理(建筑安全方案)期末試題
- 2026年素質(zhì)教育(素質(zhì)培養(yǎng))考題及答案
- 胎膜早破的診斷與處理指南
- 被壓迫者的教育學(xué)
- 2025年科研倫理與學(xué)術(shù)規(guī)范期末考試試題及參考答案
- 2025年國家開放電大行管本科《公共政策概論》期末考試試題及答案
- 超市商品陳列學(xué)習(xí)培訓(xùn)
- 2025年電機(jī)與拖動(dòng)基礎(chǔ)期末考試題庫及答案
- 隧道通風(fēng)機(jī)操作規(guī)程及維護(hù)指南
- 1~3年級(jí)趣味地理題
- 2025年紀(jì)檢監(jiān)察知識(shí)試題庫(含答案)
- CJT 288-2017 預(yù)制雙層不銹鋼煙道及煙囪
評(píng)論
0/150
提交評(píng)論