c++面向?qū)ο髮嶒瀳蟾鎋第1頁
c++面向?qū)ο髮嶒瀳蟾鎋第2頁
c++面向?qū)ο髮嶒瀳蟾鎋第3頁
c++面向?qū)ο髮嶒瀳蟾鎋第4頁
c++面向?qū)ο髮嶒瀳蟾鎋第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

廣東工業(yè)大學(xué)實驗報告信息工程學(xué)院(系)專業(yè)班成績評定學(xué)號姓名(合作者號)教師簽名預(yù)習(xí)情況操作情況考情情況數(shù)據(jù)處理情況實驗二題目類與對象第12周星期四一、實驗?zāi)康?.掌握聲明類的方法,類和類的成員的概念以及定義對象的方法。2.初步掌握用類和對象編制基于對象的程序。3.學(xué)習(xí)檢查和調(diào)試基于對象的程序。4.掌握類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的概念和使用方法。5.掌握對象數(shù)組、對象的指針及其使用方法。6.掌握共用數(shù)據(jù)的保護(hù)方法二、實驗內(nèi)容1.檢查下面的程序,找出其中的錯誤,并改正之。然后上機(jī)調(diào)試,使之能正常運行。正確程序如下:(1)#include<iostream>usingnamespacestd;classClock{public: voidset_clock(void);voidshow_clock(void);private: inthour;intminute;intsecond;};intmain(){ Clockclock;clock.set_clock();clock.show_clock();return0;} voidClock::set_clock(void){cin>>hour;cin>>minute;cin>>second;}voidClock::show_clock(void){cout<<hour<<":"<<minute<<":"<<second<<endl;}(2)#include<iostream>usingnamespacestd;classA{public:A(inti=0){m=i;}voidshow(){cout<<m;}~A(){} intm;private:};intmain(){Aa(5);a.m+=10;a.show();return0;}(3)classX{ public: X(){a=b=0;} X(inti){a=i;} X(inti,intj,intk){a=i;b=j;c=k;} voidset_A(inti){a=i;} private: inta; intb; intc;};intmain(){ Xx1; Xx2(2); Xx3(1,2,3); x1.set_A(3); return0;}3.設(shè)計一個時鐘類Clock。數(shù)據(jù)成員包括hour(小時)、minute(分鐘)、second(秒)。要求用成員函數(shù)實現(xiàn)以下功能:(1)創(chuàng)建具有指定時鐘(小時、分鐘、秒)的Clock對象,默認(rèn)時鐘為00:00:00。(2)動態(tài)地設(shè)置時、分、秒。(3)在屏幕上按“時:分:秒”的格式顯示時鐘。(4)在主函數(shù)中測試該類。#include<iostream>usingnamespacestd;classClock{public: Clock(int,int,int); voidset_clock(); voidshow_clock(); private: inthour; intminute; intsecond;};Clock::Clock(inth,intm,ints){ hour=h; minute=m; second=s;}intmain(){ Clockclock(0,0,0); while(1) { cout<<"Nowthetimeis"; clock.show_clock(); cout<<"Pleasesetthetimenow."<<endl; clock.set_clock(); } return0;}voidClock::set_clock(){ cin>>hour; cin>>minute; cin>>second;}voidClock::show_clock(){cout<<hour<<":"<<minute<<":"<<second<<endl; }4.需要求3個三角形的周長和面積,請編寫一個基于對象的程序。數(shù)據(jù)成員包括三角形的三邊長a、b、c。要求用成員函數(shù)實現(xiàn)以下功能:(1)定義構(gòu)造函數(shù)完成三角形的初始化;(2)求三角形的周長;(3)求三角形的面積;(4)輸出三角形信息。#include<iostream>#include<math.h>usingnamespacestd;classSanjiaoxing{public: Sanjiaoxing(intb1,intb2,intb3){bian1=b1;bian2=b2;bian3=b3;}voidset_size(); floatmianji(); intzhouchang();private: intbian1; intbian2; intbian3;};voidSanjiaoxing::set_size(){ cout<<"輸入三角形三邊長."<<endl;cin>>bian1>>bian2>>bian3;}intSanjiaoxing::zhouchang(){return(bian1+bian2+bian3);}floatSanjiaoxing::mianji(){ floatp,s; p=(bian1+bian2+bian3)/2; s=sqrt(p*(p-bian1)*(p-bian2)*(p-bian3)); return(s);}intmain(){ SanjiaoxingSan1(0,0,0),San2(0,0,0),San3(0,0,0); San1.set_size(); cout<<"第一個三角形周長是"<<San1.zhouchang()<<endl; cout<<"第一個三角形面積是"<<San1.mianji()<<endl; San2.set_size(); cout<<"第二個三角形周長是"<<San2.zhouchang()<<endl; cout<<"第二個三角形面積是"<<San2.mianji()<<endl; San3.set_size(); cout<<"第三個三角形周長是"<<San3.zhouchang()<<endl; cout<<"第三個三角形面積是"<<San3.mianji()<<endl; return0;}廣東工業(yè)大學(xué)實驗報告信息工程學(xué)院(系)專業(yè)班成績評定學(xué)號姓名(合作者號)教師簽名預(yù)習(xí)情況操作情況考情情況數(shù)據(jù)處理情況實驗三題目繼承與派生第13周星期四一、實驗?zāi)康?.了解繼承在面向?qū)ο蟪绦蛟O(shè)計中的重要作用。2.進(jìn)一步理解繼承與派生的概念。3.掌握通過繼承派生出一個新的類的方法。4.了解虛基類的作用和用法。5.掌握類的組合二、實驗內(nèi)容2.某出版系統(tǒng)發(fā)行圖書和磁帶,利用繼承設(shè)計管理出版物的類。要求如下:建立一個基類Publication存儲出版物的標(biāo)題title、出版物名稱name、單價price及出版日期date。用Book類和Tape類分別管理圖書和磁帶,它們都從Publication類派生。Book類具有保存圖書頁數(shù)的數(shù)據(jù)成員page,Tape類具有保存播放時間的數(shù)據(jù)成員playtime。每個類都有構(gòu)造函數(shù)、析構(gòu)函數(shù),且都有用于從鍵盤獲取數(shù)據(jù)的成員函數(shù)inputData(),用于顯示數(shù)據(jù)的成員函數(shù)display()。#include<iostream>#include<string>usingnamespacestd;classPublication{public: Publication(stringt,stringn,stringp,stringd):title(t),name(n),price(p),date(d){} ~Publication(){} voidinputdata(); voiddisplay();protected: stringtitle; stringname; stringprice; stringdate;};voidPublication::inputdata(){ cout<<"請輸入圖書標(biāo)題、名稱、單價、出版日期"<<endl; cin>>title>>name>>price>>date;}voidPublication::display(){ cout<<"title:"<<title<<endl; cout<<"name:"<<name<<endl; cout<<"price:"<<price<<endl; cout<<"date"<<date<<endl;}classBook:publicPublication{public: Book(stringt,stringn,stringp,stringd,stringpa):Publication(t,n,p,d),page(pa){} ~Book(){} voidinputdata(); voiddisplay(); stringpage;protected:};voidBook::inputdata(){ cout<<"請輸入圖書標(biāo)題、名稱、單價、出版日期、頁數(shù)"<<endl; cin>>title>>name>>price>>date>>page;}voidBook::display(){ cout<<"title:"<<title<<endl; cout<<"name:"<<name<<endl; cout<<"price:"<<price<<endl; cout<<"date"<<date<<endl; cout<<"page"<<page<<endl;}classTape:publicPublication{public: Tape(stringt,stringn,stringp,stringd,stringpl):Publication(t,n,p,d){playtime=pl;} ~Tape(){} voidinputdata(); voiddisplay();protected: stringplaytime;};voidTape::inputdata(){ cout<<"請輸入圖書標(biāo)題、名稱、單價、出版日期、播放時間"<<endl; cin>>title>>name>>price>>date>>playtime;}voidTape::display(){ cout<<"title:"<<title<<endl; cout<<"name:"<<name<<endl; cout<<"price:"<<price<<endl; cout<<"date:"<<date<<endl; cout<<"playtime:"<<playtime<<endl;}intmain(){ Publicationp("1","2","3","4");Bookp("1","2","3","4","5");Tapep("1","2","3","4","5"); p.inputdata(); p.display(); return0;}3.按下列要求編寫程序。(1)定義一個分?jǐn)?shù)類Score。它有3個數(shù)據(jù)成員:Chinese//語文課成績English//英語課成績Mathematics//數(shù)學(xué)課成績2個構(gòu)造函數(shù):無參的和帶參數(shù)的3個成員函數(shù):是否帶參數(shù)根據(jù)需要自定sum()//計算三門課總成績print()//輸出三門課成績和總成績modify()//修改三門課成績(2)定義一個學(xué)生類Student。它有3個數(shù)據(jù)成員:Num//學(xué)號Name//姓名MyScore//成績2個構(gòu)造函數(shù):無參的和帶參數(shù)的3個成員函數(shù):是否帶參數(shù)根據(jù)需要自定sum()//計算某學(xué)生三門課總成績print()//輸出某學(xué)生學(xué)號、姓名和成績modify()//修改某學(xué)生學(xué)號、姓名和成績在主函數(shù)中,先定義一個學(xué)生類對象數(shù)組,再通過for循環(huán)給對象數(shù)組賦上實際值,最后輸出對象數(shù)組個元素的值。#include<iostream>#include<string>usingnamespacestd;classScore{public: Score(){ch=en=ma=0;} Score(intc,inte,intm){ch=c;en=e;ma=m;} voidsum(); voidprint(); voidmodify();private: intch; inten; intma;};voidScore::sum(){ cout<<ch+en+ma<<endl;}voidScore::print(){ cout<<"chinese:"<<ch<<endl; cout<<"english:"<<en<<endl; cout<<"math:"<<ma<<endl<<endl;}voidScore::modify(){ cout<<"請輸入語文,英語和數(shù)學(xué)的成績:"<<endl; cin>>ch>>en>>ma;}classStudent:publicScore{public: Student(){num=0;name="";myscore=0;} Student(inta,stringb,intc){num=a;name=b;myscore=c;} voidsum1(); voidprint1(); voidmodify1();private: intnum; stringname; intmyscore;};voidStudent::sum1(){ sum();}voidStudent::print1(){ cout<<"name:"<<name<<endl; cout<<"number"<<num<<endl; print();}voidStudent::modify1(){ cout<<"請輸入學(xué)生姓名和學(xué)號:"<<endl; cin>>name>>num; modify();}intmain(){ Students; while(1) { s.modify1(); s.print1(); } return0;}4.分別定義教師類Teacher和干部類Cadre,采用多重繼承的方式由這兩個類派生出新類Teacher_Cadre(教師兼干部類)。要求:(1)在兩個基類中都包含姓名、年齡、性別、地址、電話數(shù)據(jù)成員。(2)在Teacher類中還包含數(shù)據(jù)成員職稱title,在Cadre類中還包含數(shù)據(jù)成員職務(wù)post,在Teacher_Cadre類中還包含數(shù)據(jù)成員工資wage。(3)對兩個基類中的姓名、年齡、性別、地址、電話數(shù)據(jù)成員用相同的名字,在訪問這類數(shù)據(jù)成員時,指定作用域。(4)在類體中聲明成員函數(shù),在類外定義成員函數(shù)。(5)在派生類Teacher_Cadre的成員函數(shù)show中調(diào)用Teacher類中的display函數(shù),輸出姓名、年齡、性別、地址、電話,然后再用cout語句輸出職務(wù)和工資。#include<iostream>#include<string>usingnamespacestd;classTeacher{public: Teacher(){name=sex=addr=tel=title="";age=0;} Teacher(stringa,intb,stringc,stringd,stringe,stringf):name(a),age(b),sex(c),addr(d),tel(e),title(f){} voiddisplay();private: stringname; intage; stringsex; stringaddr; stringtel; stringtitle;};voidTeacher::display(){ cout<<"name:"<<name<<endl; cout<<"age:"<<age<<endl; cout<<"sex:"<<sex<<endl; cout<<"addr:"<<addr<<endl; cout<<"tel:"<<tel<<endl; cout<<"title:"<<title<<endl;}classCadre{public: Cadre(){name=sex=addr=tel=post="";age=0;} Cadre(stringa,intb,stringc,stringd,stringe,stringf):name(a),age(b),sex(c),addr(d),tel(e),post(f){} stringpost;private: stringname; intage; stringsex; stringaddr; stringtel;};classTeacher_Cadre:publicCadre,publicTeacher{public: Teacher_Cadre(stringa,intb,stringc,stringd,stringe,stringf,stringg,stringh):Teacher(a,b,c,d,e,f),wage(h){post=g;} voidshow();private: stringwage;};voidTeacher_Cadre::show(){ display(); cout<<"post:"<<post<<endl; cout<<"wage:"<<wage<<endl;}intmain(){ Teacher_Cadretc("q",1,"w","e","r","t","y","u"); tc.show(); return0;}廣東工業(yè)大學(xué)實驗報告信息工程學(xué)院(系)專業(yè)班成績評定學(xué)號姓名(合作者號)教師簽名預(yù)習(xí)情況操作情況考情情況數(shù)據(jù)處理情況實驗四題目多態(tài)與虛函數(shù)實驗第14周星期四一、實驗?zāi)康?.理解多態(tài)的概念2.掌握如何用虛函數(shù)實現(xiàn)運行時多態(tài)3.掌握如何利用抽象類二、實驗內(nèi)容設(shè)計一個圖形類(Shape),由它派生出5個派生類:三角形類(Triangle)、正方形類(Square)、圓形類(Circle)、矩形類(Rectangle)、梯形類(triangle)類,利用虛函數(shù)計算圖形面積,用一個函數(shù)printArea分別輸出以上5者的面積。#include<iostream>#include<iomanip>#include<cmath>usingnamespacestd;constdoublePI=3.1415926;classShape{ public: virtualdoubleGetArea()=0;};classTriangle:publicShape{private: doublea,b,c;public: doubleTArea; doubleGetArea();};doubleTriangle::GetArea(){ doubletmp; cout<<"請輸入三角形的三邊長:"; cin>>a>>b>>c; while((a<0)||(b<0)||(c<0)||(a+b<=c)||(a+c<=b)||(b+c<=a)) { cout<<"輸入的邊長小于零或輸入的邊長不能構(gòu)成三角形!"<<endl; cout<<"請重新輸入三角形的三邊長:"; cin>>a>>b>>c; } tmp=(a+b+c)/2.0; TArea=sqrt(tmp*(tmp-a)*(tmp-b)*(tmp-c)); returnTArea;}classRectangle:publicShape{private: doublelength,width;public: doubleRArea; doubleGetArea();};doubleRectangle::GetArea(){ cout<<"請輸入矩形的長和寬:"; cin>>length>>width; while(length<0||width<0) { cout<<"矩形的長和寬不能小于零!"<<endl; cout<<"請重新輸入矩形的長和寬:"; cin>>length>>width; } RArea=length*width; returnRArea;}classCircle:publicShape{private: doubleRadius;public: doubleCArea; doubleGetArea();};doubleCircle::GetArea(){ cout<<"請輸入圓的半徑:"; cin>>Radius; while(Radius<0) { cout<<"圓的半徑不能小于零!"<<endl; cout<<"請重新輸入圓的半徑:"; cin>>Radius; } CArea=2*PI*Radius; returnCArea;}classSquare:publicShape{private: doubleside;public: doubleSArea; doubleGetArea();};doubleSquare::GetArea(){ cout<<"請輸入正方形的邊長:"; cin>>side; while(side<0) { cout<<"正方形的邊長不能小于零!"<<endl; cout<<"請重輸入正方形的邊長:"; cin>>side; } SArea=side*side; returnSArea;}classtriangle:publicShape{private: doubleUpBase,DownBase,Higth;public: doubleTArea; doubleGetArea();};doubletriangle::GetArea(){ cout<<"請輸入梯形的上底,下底和高:"; cin>>UpBase>>DownBase>>Higth; while(UpBase<0||DownBase<0||Higth<0) { cout<<"梯形的上底,下底和高不能小于零!"<<endl; cout<<"請重新輸入梯形的上底,下底和高:"; cin>>UpBase>>DownBase>>Higth; } TArea=(UpBase+DownBase)*Higth/2.0; returnTArea;}voidPrintArea(){ TrianglemyTri; Squaremysqu; Circlemycir; Rectanglemyrec; trianglemytri; cout<<fixed<<setprecision(2)<<"三角形的面積:"<<myTri.GetArea()<<endl; cout<<fixed<<setprecision(2)<<"正方形的面積:"<<mysqu.GetArea()<<endl; cout<<fixed<<setprecision(2)<<"圓形的面積:"<<mycir.GetArea()<<endl; cout<<fixed<<setprecision(2)<<"矩形的面積:"<<myrec.GetArea()<<endl; cout<<fixed<<setprecision(2)<<"梯形的面積:"<<mytri.GetArea()<<endl;}intmain(void){ PrintArea(); return0;}定義一個教師類,由教師類派生出講師、副教授、教授類。教師的工資分別由基本工資、課時費和津貼構(gòu)成。假設(shè)講師、副教授、教授的基本工資分別為800、900、1000元,課時費分別為每小時40、45、50元,津貼分別為1300、1800、2300。定義虛函數(shù)來計算教師的工資,并通過主函數(shù)來進(jìn)行驗證。#include<iostream>usingnamespacestd;classTeacher{public: virtualintGetAllPay()=0;};classLecturer:publicTeacher{private: intCommonPay,ClassperPay,Subsidy,LAllPay;public: Lecturer(){CommonPay=800;ClassperPay=40;Subsidy=1300;} intGetAllPay();};intLecturer::GetAllPay(){ LAllPay=CommonPay+ClassperPay+Subsidy; returnLAllPay;}classAssProfessor:publicTeacher{private: intCommonPay,ClassperPay,Subsidy,AAllPay;public: AssProfessor(){CommonPay=900;ClassperPay=45;Subsidy=1800;} intGetAllPay();};intAssProfessor::GetAllPay(){ AAllPay=CommonPay+ClassperPay+Subsidy; returnAAllPay;}classProfessor:publicTeacher{private: intCommonPay,ClassperPay,Subsidy,PAllPay;public: Professor(){CommonPay=1000;ClassperPay=50;Subsidy=2300;} intGetAllPay();};intProfessor::GetAllPay(){ PAllPay=CommonPay+ClassperPay+Subsidy; returnPAllPay;}intmain(void){ Teacher*ptr; Lecturerxiaozhang; ptr=&xiaozhang; cout<<"講師的總工資:"<<ptr->GetAllPay()<<endl; AssProfessorxiaoming; ptr=&xiaoming; cout<<"副教授的總工資:"<<ptr->GetAllPay()<<endl; Professorxiaoli; ptr=&xiaoli; cout<<"教授的總工資:"<<ptr->GetAllPay()<<endl; return0;}3.定義一個基類為哺乳動物類Mammal,其中有數(shù)據(jù)成員年齡、重量、品種,有成員函數(shù)move()、speak()等,以此表示動物的行為。由這個基類派生出狗、貓、馬、豬等哺乳動物,它們有各自的行為。編程分別使各個動物表現(xiàn)出不同的行為。要求如下:1、從基類分別派生出各種動物類,通過虛函數(shù)實現(xiàn)不同動物表現(xiàn)出的不同行為。2、今有狗:CAIRN:3歲,3kg;DORE:4歲,2kg;貓:CAT:5歲,4kg;馬:HORSE,5歲,60kg;豬:PIG,2歲,45kg。3、設(shè)置一個Mammal類數(shù)組,設(shè)計一個屏幕菜單,選擇不同的動物或不同的品種,則顯示出動物相對應(yīng)的動作,直到選擇結(jié)束。4、對應(yīng)的動作中要先顯示出動物的名稱,然后顯示年齡、重量、品種、叫聲及其他特征。#include<stdlib.h>#include<string>#include<iostream>usingnamespacestd;classMammal//建立動物基類Mammal{protected:stringname;intage;floatweight;public:Mammal(stringn,inta,floatw){name=n;age=a;weight=w;}virtualstringmove()=0;virtualstringspeak()=0;virtualvoidsetout()=0;//純虛函數(shù)實現(xiàn)類繼承時的多態(tài)性};classDog:publicMammal//建立四個類似的類,分別為Dog,Cat,Horse,Pig{public:Dog(stringn,inta,floatw):Mammal(n,a,w){};stringmove(){return"看門或者作為寵物";}stringspeak(){return"汪汪";}voidsetout(){cout<<"狗類的信息:"<<endl;cout<<"昵稱:"<<name<<endl;cout<<"年齡:"<<age<<"歲"<<endl;cout<<"體重:"<<weight<<"Kg"<<endl;cout<<"行為:"<<move()<<endl;cout<<"叫聲:"<<speak()<<endl;}};classCat:publicMammal{public:Cat(stringn,inta,floatw):Mammal(n,a,w){};stringmove(){return"捉老鼠";}stringspeak(){return"喵~";}voidsetout(){cout<<"貓類的信息:"<<endl;cout<<"昵稱:"<<name<<endl;cout<<"年齡:"<<age<<"歲"<<endl;cout<<"

溫馨提示

  • 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

提交評論