羅玉萍實(shí)驗(yàn)報告三_第1頁
羅玉萍實(shí)驗(yàn)報告三_第2頁
羅玉萍實(shí)驗(yàn)報告三_第3頁
羅玉萍實(shí)驗(yàn)報告三_第4頁
羅玉萍實(shí)驗(yàn)報告三_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、池州學(xué)院數(shù)學(xué)計(jì)算機(jī)科學(xué)系實(shí)驗(yàn)報告專業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 班級: 12級計(jì)本 實(shí)驗(yàn)課程: 類和對象 姓名: 羅玉萍 學(xué)號: 120312147 實(shí)驗(yàn)室:_博采北101 實(shí)驗(yàn)時間: 2013/4/26 指導(dǎo)教師簽字: 彭秀芳 成績: 實(shí)驗(yàn)三 類和對象一、實(shí)驗(yàn)?zāi)康呐c要求1. 學(xué)習(xí)類、成員函數(shù)、對象的定義方法。2. 學(xué)習(xí)使用構(gòu)造函數(shù)和析構(gòu)函數(shù)。3. 學(xué)習(xí)使用靜態(tài)成員、內(nèi)聯(lián)成員函數(shù)。4. 掌握this指針的使用方法。5. 掌握對象成員的使用方法。6. 掌握多文件結(jié)構(gòu)的程序設(shè)計(jì)方法。7. 進(jìn)一步熟悉VC+ 6.0的編譯連接過程,掌握VC+ 6.0的調(diào)試方法。二、實(shí)驗(yàn)環(huán)境PC機(jī)、XP操作系統(tǒng)、Visual

2、C+ 6.0三、實(shí)驗(yàn)內(nèi)容1. 閱讀程序,預(yù)測功能,再上機(jī)編輯、運(yùn)行該程序,以驗(yàn)證自己的預(yù)測。(1)理解拷貝構(gòu)造函數(shù)的目的和調(diào)用。在三種情況下,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)第一種情況:當(dāng)用類的一個對象去初始化該類的另一個對象時;第二種情況:如果函數(shù)的形參是類的對象,調(diào)用函數(shù)時,進(jìn)行形參和實(shí)參結(jié)合時;第三種情況:如果函數(shù)的返回值是類的對象,函數(shù)執(zhí)行完成返回調(diào)用者時。以下程序都是定義一個屏幕上的點(diǎn)類,該類具有x,y坐標(biāo)屬性?!境绦?】#include<iostream>using namespace std;class Point public:Point(int xx = 0, int y

3、y = 0)X = xx; Y = yy;cout<<"調(diào)用構(gòu)造函數(shù)n"Point(Point &p);int GetX() return X; int GetY() return Y; private:int X,Y;Point:Point(Point &p)X=p.X;Y=p.Y;cout<<"調(diào)用拷貝構(gòu)造函數(shù)n"void main()Point A(3,4); /a行Point B(A); /b行cout<<B.GetX()<<"n"思考:(a)將b行改寫為Poin

4、t B = A; 程序輸出結(jié)果會有變化嗎? (b)將b行改寫為Point B; B = A; 程序輸出結(jié)果會有變化嗎?【程序2】#include<iostream>using namespace std;class Point public:Point(int xx = 0,int yy = 0)X = xx; Y = yy;cout<<"調(diào)用構(gòu)造函數(shù)n"Point(Point &p);int GetX() return X;int GetY() return Y;private:int X,Y;Point:Point(Point &

5、p)X = p.X;Y = p.Y;cout<<"調(diào)用拷貝構(gòu)造函數(shù)n"void fun1(Point p)cout<<p.GetX()<<"n"void main()Point A(4,5); /a行Point B(A); /b行cout<<B.GetX()<<"n"fun1(B); /調(diào)用拷貝構(gòu)造函數(shù),實(shí)現(xiàn)形參和實(shí)參結(jié)合【程序3】#include<iostream>using namespace std;class Point public:Point(int

6、xx=0,int yy=0)X=xx;Y=yy;cout<<"調(diào)用構(gòu)造函數(shù)n"Point(Point &p);int GetX() return X;int GetY() return Y;private:int X,Y;Point:Point(Point &p)X=p.X;Y=p.Y;cout<<"調(diào)用拷貝構(gòu)造函數(shù)n"Point fun2()Point Temp(10,20); /調(diào)用構(gòu)造函數(shù)return Temp; void main()Point A(4,5); /a行Point B(A); /b行cout&

7、lt;<B.GetX()<<"n"B=fun2();cout<<B.GetX()<<"n" (2) 創(chuàng)建一個雇員類,該類中數(shù)據(jù)成員有姓名、家庭住址和郵政編碼等,其功能有修改姓名、顯示數(shù)據(jù)信息,要求其功能函數(shù)的原型放在類定義體中。#include<iostream>using namespace std;class Employeepublic:Employee(char *pName="",char *pAddress="",char *pPostalcode=

8、"")name = new char(strlen(pName)+1);strcpy(name,pName);address = new char(strlen(pAddress)+1);strcpy(address,pAddress);strcpy(postalcode,pPostalcode);void modifyName(char *pName)strcpy(name,pName);void modifyAddress(char *pAddress)strcpy(address,pAddress);void modifyPostalcode(char *pPosta

9、lcode)strcpy(postalcode,pPostalcode);void display()cout<<"姓名:"<<name<<"t"<<"地址:"<<address<<"t"<<"郵編:"<<postalcode<<endl;private:char *name;char *address; char postalcode7;int main()Employee em3=Em

10、ployee("李琳","張家口","075000"),Employee("張強(qiáng)","北京","100011"),Employee("王明","天津","300232");for(int i=0;i<3;i+)emi.display();em1.modifyName("張曉強(qiáng)");cout<<"張強(qiáng)改名為張曉強(qiáng),第二個雇員的信息為:"<<endl;

11、em1.display(); return 0;思考:為什么將姓名、家庭住址設(shè)計(jì)為指針類型?郵政編碼設(shè)計(jì)為數(shù)組類型?2. 編寫程序建立一個矩陣類Array,存儲一個的矩陣并能在矩陣中查找數(shù)據(jù)。要求如下:(a)私有數(shù)據(jù)成員·int px44:存儲一個矩陣的值。·int n: 矩陣的行數(shù)。(b)公有數(shù)據(jù)成員·int x:存儲根據(jù)查找要求在矩陣中要找到的某數(shù)。·int im,jm:存儲該數(shù)所在的行、列值。(c) 公有成員函數(shù)·構(gòu)造函數(shù):初始化n的值為,x、im、jm為。·void input(int a4):將一個矩陣賦給該對象中的數(shù)組。&

12、#183;void find():在該對象存儲的矩陣中查找值最小的數(shù),保存該數(shù)及該數(shù)所在的行、列值到x,im,jm中。·void print():按行輸出矩陣的值(d)編寫一個程序測試該類,使用以下測試數(shù)據(jù),輸出矩陣的值,查找值最小的數(shù)并輸出x、im、jm的值。3. 熟悉多文件程序(1)在實(shí)際程序設(shè)計(jì)中,一個源程序按照結(jié)構(gòu)可以劃分為3個文件:類聲明文件(*.h文件)、類實(shí)現(xiàn)文件(*.cpp )和類的使用文件(*.cpp,主函數(shù)文件)。 類聲明文件(*.h文件): 將類的聲明部分放在類聲明文件(頭文件)中,這就形成了類的public接口,向用戶提供調(diào)用類成員函數(shù)所需的函數(shù)原型。 類實(shí)現(xiàn)

13、文件(*.cpp ): 將類成員函數(shù)的定義放在類實(shí)現(xiàn)文件中,這就形成了類的實(shí)現(xiàn)方法。 類的使用文件(*.cpp,主函數(shù)文件): 將類的使用部分(通常是主程序)放在類使用文件中, 這樣可以清晰地表示出本程序所要完成的工作。 (2)嘗試完成一個C+多文件程序的開發(fā)過程。先依據(jù)之前學(xué)習(xí)的內(nèi)容創(chuàng)建一個新的空工程,然后依次在該工程中添加下列文件:/文件1 student.h (類的聲明部分)#include<iostream>using namespace std;class Studentpublic: /類的外部接口 Student(char *name1,char *stu_no1,f

14、loat score1); /聲明構(gòu)造函數(shù) Student(); /聲明析構(gòu)函數(shù) void modify(float score1); /聲明數(shù)據(jù)修改函數(shù) void show(); /聲明數(shù)據(jù)輸出函數(shù)private: char *name; /學(xué)生姓名 char *stu_no; /學(xué)生學(xué)號 float score; /學(xué)生成績;/文件2 student.cpp (類的實(shí)現(xiàn)部分)#include "student.h" /包含類的聲明文件Student:Student(char *name1,char *stu_no1,float score1) name=new char

15、strlen(name1)+1; /構(gòu)造函數(shù)的實(shí)現(xiàn) strcpy(name,name1); stu_no=new charstrlen(stu_no1)+1; strcpy(stu_no,stu_no1); score=score1; Student:Student() /析構(gòu)函數(shù)的實(shí)現(xiàn) delete name; delete stu_no; void Student:modify(float score1)/數(shù)據(jù)修改函數(shù)的實(shí)現(xiàn) score=score1; void Student:show() /數(shù)據(jù)輸出函數(shù)的實(shí)現(xiàn) cout<<"name: "<<

16、name<<endl; cout<<"stu_no: "<<stu_no<<endl; cout<<"score: "<<score<<endl; /文件3 studentmain.cpp (類的使用部分)#include "student.h" /包含類的聲明文件int main() Student stu1("Liming","20080201",90); /定義類Student的對象stu1,調(diào)用stu1的

17、構(gòu)造函數(shù),初始化對象stu1 stu1.show(); /調(diào)用stu1的成員函數(shù)show,顯示stu1的數(shù)據(jù) stu1.modify(88); /調(diào)用stu1的成員函數(shù)modify,修改stu1的數(shù)據(jù) stu1.show(); /調(diào)用stu1的成員函數(shù)show,顯示stu1修改后的數(shù)據(jù) return 0;四、實(shí)驗(yàn)步驟1. 【程序1】#include<iostream>using namespace std;class Point public:Point(int xx = 0, int yy = 0)X = xx; Y = yy;cout<<"調(diào)用構(gòu)造函數(shù)n&

18、quot;Point(Point &p);int GetX() return X; int GetY() return Y; private:int X,Y;Point:Point(Point &p)X=p.X;Y=p.Y;cout<<"調(diào)用拷貝構(gòu)造函數(shù)n"void main()Point A(3,4); /a行Point B(A); /b行cout<<B.GetX()<<"n"(a) #include<iostream>using namespace std;class Point pub

19、lic:Point(int xx = 0, int yy = 0)X = xx; Y = yy;cout<<"調(diào)用構(gòu)造函數(shù)n"Point(Point &p);int GetX() return X; int GetY() return Y; private:int X,Y;Point:Point(Point &p)X=p.X;Y=p.Y;cout<<"調(diào)用拷貝構(gòu)造函數(shù)n"void main()Point A(3,4); /a行Point B=A; /b行cout<<B.GetX()<<&qu

20、ot;n"(b) #include<iostream>using namespace std;class Point public:Point(int xx = 0, int yy = 0)X = xx; Y = yy;cout<<"調(diào)用構(gòu)造函數(shù)n"Point(Point &p);int GetX() return X; int GetY() return Y; private:int X,Y;Point:Point(Point &p)X=p.X;Y=p.Y;cout<<"調(diào)用拷貝構(gòu)造函數(shù)n"

21、void main()Point A(3,4); /a行Point B; B=A  /b行cout<<B.GetX()<<"n"【程序2】#include<iostream>using namespace std;class Point public:Point(int xx = 0,int yy = 0)X = xx; Y = yy;cout<<"調(diào)用構(gòu)造函數(shù)n"Point(Point &p);int GetX() return X;int GetY() return Y;private

22、:int X,Y;Point:Point(Point &p)X = p.X;Y = p.Y;cout<<"調(diào)用拷貝構(gòu)造函數(shù)n"void fun1(Point p)cout<<p.GetX()<<"n"void main()Point A(4,5); /a行Point B(A); /b行cout<<B.GetX()<<"n"fun1(B); /調(diào)用拷貝構(gòu)造函數(shù),實(shí)現(xiàn)形參和實(shí)參結(jié)合【程序3】#include<iostream>using namespace s

23、td;class Point public:Point(int xx=0,int yy=0)X=xx;Y=yy;cout<<"調(diào)用構(gòu)造函數(shù)n"Point(Point &p);int GetX() return X;int GetY() return Y;private:int X,Y;Point:Point(Point &p)X=p.X;Y=p.Y;cout<<"調(diào)用拷貝構(gòu)造函數(shù)n"Point fun2()Point Temp(10,20); /調(diào)用構(gòu)造函數(shù)return Temp; void main()Point

24、 A(4,5); /a行Point B(A); /b行cout<<B.GetX()<<"n"B=fun2();cout<<B.GetX()<<"n"#include<iostream>using namespace std;class Employeepublic:Employee(char *pName="",char *pAddress="",char *pPostalcode="")name = new char(strlen(p

25、Name)+1);strcpy(name,pName);address = new char(strlen(pAddress)+1);strcpy(address,pAddress);strcpy(postalcode,pPostalcode);void modifyName(char *pName)strcpy(name,pName);void modifyAddress(char *pAddress)strcpy(address,pAddress);void modifyPostalcode(char *pPostalcode)strcpy(postalcode,pPostalcode);

26、void display()cout<<"姓名:"<<name<<"t"<<"地址:"<<address<<"t"<<"郵編:"<<postalcode<<endl;private:char *name;char *address; char postalcode7;int main()Employee em3=Employee("李琳","張家口"

27、,"075000"),Employee("張強(qiáng)","北京","100011"),Employee("王明","天津","300232");for(int i=0;i<3;i+)emi.display();em1.modifyName("張曉強(qiáng)");cout<<"張強(qiáng)改名為張曉強(qiáng),第二個雇員的信息為:"<<endl;em1.display(); return 0;2#include<iostream>#include<iomanip>using namespace std;class Arraypublic:int x; /存儲根據(jù)查找要求在矩陣中要找到的某數(shù)int im,jm; /存儲該數(shù)所在的行、列值A(chǔ)rray();void input(int a4); /將一個矩陣賦給該對象中的數(shù)組 void find(); /在該對象存儲的矩陣中查找值最小的數(shù) void print(); private:int px44; /存儲一個矩陣的值。 int n; /矩陣的行數(shù)arr;Array:Array()x=0; n=4; i

溫馨提示

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

最新文檔

評論

0/150

提交評論