浙江科技學(xué)院高級(jí)程序設(shè)計(jì)實(shí)驗(yàn)冊(cè)學(xué)院系別_第1頁(yè)
浙江科技學(xué)院高級(jí)程序設(shè)計(jì)實(shí)驗(yàn)冊(cè)學(xué)院系別_第2頁(yè)
浙江科技學(xué)院高級(jí)程序設(shè)計(jì)實(shí)驗(yàn)冊(cè)學(xué)院系別_第3頁(yè)
浙江科技學(xué)院高級(jí)程序設(shè)計(jì)實(shí)驗(yàn)冊(cè)學(xué)院系別_第4頁(yè)
浙江科技學(xué)院高級(jí)程序設(shè)計(jì)實(shí)驗(yàn)冊(cè)學(xué)院系別_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 浙 江 科 技 學(xué) 院 高 級(jí) 程 序 設(shè) 計(jì) 實(shí) 驗(yàn) 冊(cè)學(xué) 院 系 別 專業(yè)班級(jí) 學(xué) 號(hào) 姓 名 年 月 日實(shí)驗(yàn)一 類的封裝1實(shí)驗(yàn)?zāi)康?掌握類和對(duì)象的定義方法、成員函數(shù) 的實(shí)現(xiàn)和調(diào)用方法、類的構(gòu)造函數(shù)的定義方法、構(gòu)造函數(shù)的重載、析構(gòu)函數(shù)的定義方法以及對(duì)象數(shù)據(jù)成員的初始化。深刻理解類與對(duì)象的區(qū)別、類實(shí)現(xiàn)數(shù)據(jù)隱藏與封裝的原理、構(gòu)造函數(shù)和析構(gòu)函數(shù)被調(diào)用的時(shí)間和特點(diǎn)以及它們?cè)诔绦蛑械淖饔玫取? 實(shí)驗(yàn)的題目及要求題1: 定義一個(gè)Date類,包括year、month、day三個(gè)數(shù)據(jù)成員,通過setDate成員函數(shù)輸入生日數(shù)據(jù),通過displayDate將其輸出。把該類的數(shù)據(jù)成員和成員函數(shù)分別設(shè)為私有和

2、公有的情況進(jìn)行測(cè)試。題2 :定義一個(gè)描述學(xué)生通訊錄的類,數(shù)據(jù)成員包括:學(xué)號(hào)、姓名、學(xué)校、專業(yè)、電話號(hào)碼和郵編;成員函數(shù)包括:輸出各個(gè)數(shù)據(jù)成員的值,分別設(shè)置和獲取各個(gè)數(shù)據(jù)成員的值。把該類的數(shù)據(jù)成員和成員函數(shù)分別設(shè)為私有和公有的情況進(jìn)行測(cè)試。題3 :以下是圖書類Book的定義,但沒有類的實(shí)現(xiàn)部分,請(qǐng)根據(jù)類的定義編寫類的實(shí)現(xiàn)部分的代碼,并編寫相應(yīng)的對(duì)所定義的類進(jìn)行測(cè)試的程序。class Bookprivate:char *m_pName;/書名char *m_pAuthor;/作者int m_iSale;/銷售量public:Book();/默認(rèn)構(gòu)造函數(shù)Book(char *pName, char

3、*pAuthor, int iSale);/構(gòu)造函數(shù)void print();/輸出數(shù)據(jù)Book();/析構(gòu)函數(shù)題4 :設(shè)計(jì)兩個(gè)類,使一個(gè)類的對(duì)象作為另一個(gè)類的數(shù)據(jù)成員,觀察其中構(gòu)造函數(shù)的調(diào)用和析構(gòu)函數(shù)的調(diào)用順序。3 實(shí)驗(yàn)的源代碼題一:#include <iostream.h>class Date public:void displayDate();void SetData(int y, int m, int d);Date();virtual Date();private:int year;int month;int day;Date:Date()year= 1900;month

4、= 1;day= 1;Date:Date()void Date:SetData(int y, int m, int d)year= y;month= m;day= d;void Date:displayDate()cout<<year<<"-"<<month<<"-"<<day<<endl;void main()Date d;int iy, im, id;cin>>iy>>im>>id;d.SetData(iy, im, id);d.display

5、Date();題二:#include "iostream.h"#include "string.h"class CStudent public:void SetStuNo( char No )strcpy(stuNo, No);void SetStuName( char Name )strcpy(stuName, Name);void SetStuSchool( char School )strcpy(stuSchool, School);void SetStuSpeciality( char Speciality )strcpy(stuSpeciali

6、ty, Speciality);void SetStuTelNo( char TelNo )strcpy(stuTelNo, TelNo);void SetStuZip( char Zip )strcpy(stuZip, Zip);char * GetStuNo( )return stuNo;char * GetStuName( )return stuName;char * GetStuSchool( )return stuSchool;char * GetStuSpeciality( )return stuSpeciality;char * GetStuTelNo( )return stuT

7、elNo;char * GetStuZip( )return stuZip;void ShowData()cout<<"stuNo:"<<GetStuNo( )<<endl;cout<<"stuName:"<<GetStuName( )<<endl;cout<<"stuSchool:"<<GetStuSchool( )<<endl;cout<<"stuSpeciality:"<<Get

8、StuSpeciality( )<<endl;cout<<"stuTelNo:"<<GetStuTelNo( )<<endl;cout<<"stuZip:"<<GetStuZip( )<<endl;CStudent();virtual CStudent();private:char stuNo15;char stuName10;char stuSchool40;char stuSpeciality40;char stuTelNo20;char stuZip10;CStud

9、ent:CStudent()memset(stuNo,0,15);memset(stuName,0,10);memset(stuSchool,0,40);memset(stuSpeciality,0,40);memset(stuTelNo,0,20);memset(stuZip,0,10);CStudent:CStudent()void main()CStudent cs;char stuNo15;char stuName10;char stuSchool40;char stuSpeciality40;char stuTelNo20;char stuZip10;cin>>stuNo

10、>>stuName>>stuSchool>>stuSpeciality>>stuTelNo>>stuZip;cs.SetStuNo(stuNo);cs.SetStuName(stuName);cs.SetStuSchool(stuSchool);cs.SetStuSpeciality(stuSpeciality);cs.SetStuTelNo(stuTelNo);cs.SetStuZip(stuZip);cs.ShowData();題三:#include "iostream.h"#include "str

11、ing.h"class Bookprivate:char *m_pName;/書名char *m_pAuthor;/作者int m_iSale;/銷售量public:Book();/默認(rèn)構(gòu)造函數(shù)Book(char *pName, char *pAuthor, int iSale);/構(gòu)造函數(shù)void print();/輸出數(shù)據(jù)Book();/析構(gòu)函數(shù);Book:Book()m_pName = NULL;m_pAuthor = NULL;m_iSale = 0;Book:Book(char *pName, char *pAuthor, int iSale)m_pName = new c

12、harstrlen(pName) + 1;strcpy(m_pName, pName);m_pAuthor = new charstrlen(pAuthor) + 1;strcpy(m_pAuthor, pAuthor);m_iSale = iSale;void Book:print()cout<<"name="<<m_pName<<endl<<"author="<<m_pAuthor<<endl<<"sale="<<m_iSale<

13、<endl;Book:Book()if (m_pName) delete m_pName;m_pName = NULL;if (m_pAuthor) delete m_pAuthor;m_pAuthor = NULL;void main()Book b("lxy","yangsheng",45);b.print();題四: #include "iostream.h"class CApublic:CA()cout<<"CA()"<<endl;CA()cout<<"C

14、A()"<<endl;class CBprivate:CA a;public:CB()cout<<"CB()"<<endl;CB()cout<<"CA()"<<endl;void main()CB b;4 實(shí)驗(yàn)的結(jié)果及分析實(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)容及要求題1: 定義

15、一個(gè)日期(年、月、日)的類CDate,其構(gòu)造函數(shù)完成年、月、日的初始化,包含一個(gè)重新設(shè)置日期的成員函數(shù)SetDate,一個(gè)獲取轉(zhuǎn)化為字符串格式日期(yyyy-mm-dd)的成員函數(shù)GetDate。由CDate類派生出一個(gè)CDateTime類,它增加了與時(shí)間有關(guān)的數(shù)據(jù)成員(時(shí)、分、秒),其構(gòu)造函數(shù)完成年、月、日、時(shí)、分、秒的初始化,包含一個(gè)重新設(shè)置日期時(shí)間的成員函數(shù)SetDateTime,一個(gè)獲取轉(zhuǎn)化為字符串格式日期(yyyy-mm-dd hh:mm:ss )的成員函數(shù)GetDate。主函數(shù)完成基類和派生類的測(cè)試工作。 題2:設(shè)計(jì)一個(gè)圓類CCircle和桌子類CTable,再設(shè)計(jì)一個(gè)圓桌類CCi

16、rcleTable,它是從前兩個(gè)類派生出來的。要求輸出圓桌的高度、面積和顏色等數(shù)據(jù)。其中, 類CCircle包含數(shù)據(jù)成員m_dRadius和求面積的成員函數(shù),類CTable包含數(shù)據(jù)成員m_dHeight和返回高度,類CCircleTable再添加數(shù)據(jù)成員m_iColor和相應(yīng)的成員函數(shù)。題:設(shè)計(jì)一個(gè)基類CPerson,包含m_pName和m_iAge兩個(gè)數(shù)據(jù)成員;由它派生出學(xué)生類和教師類,其中學(xué)生類增加學(xué)號(hào)數(shù)據(jù)m_pStuNo,教師類增加職稱數(shù)據(jù)m_pGrade;每個(gè)類均有構(gòu)造函數(shù)和析構(gòu)函數(shù),主函數(shù)完成基類和派生類的測(cè)試工作。 題4:定義一個(gè)車(CVehicle)基類,具有m_dMaxSpee

17、d,m_dWeight等成員變量,Run,Stop等成員函數(shù),由此派生出自行車(CBicycle)類,機(jī)動(dòng)車類(CMotorcar)類,自行車類有高度,品牌等屬性,機(jī)動(dòng)車類的座位數(shù),發(fā)動(dòng)機(jī)排量等屬性。從自行車類和機(jī)動(dòng)車類共同派生出摩托車(CMotorcycle)類,在繼承過程中,注意把CVehicle設(shè)置成虛基類,所有的類都通過構(gòu)造函數(shù)來初始化數(shù)據(jù)成員。想想,如果不設(shè)為虛基類,會(huì)有什么問題,試著上機(jī)找到答案。3 實(shí)驗(yàn)的源代碼#include <iostream.h>#include <afx.h>class CDateprivate:int m_iYear;int m_

18、iMonth;int m_iDate;public:CDate( int iYear=2000, int iMonth=1, int iDate=1)m_iYear = iYear;m_iMonth = iMonth;m_iDate = iDate;void SetDate( int iYear=2000, int iMonth=1, int iDate=1 )m_iYear = iYear;m_iMonth = iMonth;m_iDate = iDate;CString GetDate()CString str;str.Format("%d-%02d-%02d ", m

19、_iYear, m_iMonth, m_iDate);return str;class CDateTime: public CDateprivate:int m_iHour;int m_iMinute;int m_iSecond;public:CDateTime( int iYear=2000, int iMonth=1, int iDate=1 ,int iHour=0, int iMinute=0, int iSecond=0):CDate(iYear, iMonth, iDate)m_iHour = iHour;m_iMinute = iMinute;m_iSecond = iSecon

20、d;void SetDateTime( int iYear=2000, int iMonth=1, int iDate=1 ,int iHour=0, int iMinute=0, int iSecond=0)m_iHour = iHour;m_iMinute = iMinute;m_iSecond = iSecond;SetDate(iYear, iMonth, iDate);CString GetDateTime()CString str;str.Format("%d:%02d:%02d ", m_iHour, m_iMinute, m_iSecond);str = G

21、etDate() + str;return str;void main()CDateTime dt;dt.SetDateTime(2006,3,12,8,12,13);cout<<dt.GetDateTime()<<endl;2、#include <iostream.h>#define PI 3.14159class CCircleprivate:double m_dRadius;public:CCircle( double dRadius=0 )m_dRadius = dRadius;void SetRadius( double dRadius=0 )m_

22、dRadius = dRadius;double GetArea()return PI * m_dRadius * m_dRadius;class CTableprivate:double m_dHeight;public:CTable( double dHeight=0 )m_dHeight = dHeight;void SetHeight( double dHeight )m_dHeight = dHeight;double GetHeight()return m_dHeight;class CCircleTable: public CCircle, public CTableprivat

23、e:int m_iColor;public:CCircleTable( double dRadius=0, double dHeight=0, int iColor = 1 ):CCircle( dRadius ), CTable( dHeight )m_iColor = iColor;void SetColor( int iColor )m_iColor = iColor;double GetColor()return m_iColor;void main()CCircleTable ct(3, 1, 2);cout<<"Area:"<<ct.Ge

24、tArea()<<endl<<"Height:"<<ct.GetHeight()<<endl<<"Color:"<<ct.GetColor()<<endl;ct.SetRadius( 4.5 );ct.SetHeight( 10 );ct.SetColor( 3 );cout<<"Area:"<<ct.GetArea()<<endl<<"Height:"<<ct.GetHe

25、ight()<<endl<<"Color:"<<ct.GetColor()<<endl;3:#include <iostream.h>#include <string.h>#include <afx.h>class CPersonprivate:char *m_pName;int m_iAge;public:CPerson( )m_pName = NULL;m_iAge = 0;cout<<"Create a person!"<<endl;void

26、 SetPerson( char *pName, int iAge )m_pName = new charstrlen(pName) + 1;strcpy( m_pName, pName);m_iAge = iAge;CString GetPerson()CString str;str.Format("name:%snage:%dn", m_pName, m_iAge);return str;CPerson()if(m_pName != NULL)delete m_pName;class CStudent: public CPersonprivate:char *m_pSt

27、uNo;public:CStudent()m_pStuNo = NULL;cout<<"Create a Student!"<<endl;void SetStuNo( char *pStuNo )m_pStuNo = new charstrlen(pStuNo) + 1;strcpy(m_pStuNo, pStuNo);CString GetStudent()CString str;str.Format("StuNo:%sn", m_pStuNo);return str;CStudent()if(m_pStuNo != NULL)

28、delete m_pStuNo;class CTeacher: public CPersonprivate:char *m_pGrade;public:CTeacher()m_pGrade = NULL;cout<<"Create a Teacher!"<<endl;void SetGrade( char *pGrade )m_pGrade = new charstrlen(pGrade) + 1;strcpy(m_pGrade, pGrade);CString GetTeacher()CString str;str.Format("Gra

29、de:%sn", m_pGrade);return str;CTeacher()if(m_pGrade != NULL)delete m_pGrade;void main()CStudent st;st.SetPerson("wang hua", 23);st.SetStuNo("320049");cout<<"Student:"<<endl;cout<<st.GetPerson()<<st.GetStudent();CTeacher tr;tr.SetPerson("

30、;zhang hua", 35);tr.SetGrade("講師");cout<<"Teacher:"<<endl;cout<<tr.GetPerson()<<tr.GetTeacher();4、略,同上題相似,只需繼承改為虛基類的方式,在增加一個(gè)子類5 實(shí)驗(yàn)的結(jié)果及分析實(shí)驗(yàn)三 類的多態(tài)性1實(shí)驗(yàn)?zāi)康?掌握虛函數(shù)的定義方法及其在實(shí)現(xiàn)多態(tài)性中的作用,理解和掌握實(shí)現(xiàn)動(dòng)態(tài)多態(tài)性的前提條件。掌握運(yùn)算符重載函數(shù)的定義方法及將運(yùn)算符重載為類的成員函數(shù)和友元函數(shù)的方法,掌握和應(yīng)用幾種常見的用C+語言運(yùn)算符的重載進(jìn)

31、行解決問題的方法。 2 實(shí)驗(yàn)的內(nèi)容及要求題1: 編寫程序,計(jì)算圓柱體、球體、正方體和長(zhǎng)方形的表面積和體積。提示:本題中,可先定義一個(gè)抽象類,其中包含一個(gè)數(shù)據(jù)成員和分別求表面積和體積的純虛函數(shù),然后在本類的基礎(chǔ)上,派生出圓柱體類、球體類、正方體類和長(zhǎng)方體類,編寫程序輸入數(shù)據(jù)進(jìn)行測(cè)試。題2: 設(shè)計(jì)一個(gè)抽象類Vehicle,由它派生出類Car和類Truck。類Car包含名稱、顏色、載客數(shù)3個(gè)數(shù)據(jù)成員,類Truck包含名稱、顏色、載重量3個(gè)數(shù)據(jù)成員,編寫程序輸入數(shù)據(jù)進(jìn)行測(cè)試。題3: 編寫程序,運(yùn)用運(yùn)算符重載實(shí)現(xiàn)點(diǎn)類Point的兩個(gè)對(duì)象(即兩點(diǎn))間橫、縱座標(biāo)的+、-、+=和-=的重載,并輸入數(shù)據(jù)進(jìn)行測(cè)試

32、。題4:設(shè)計(jì)一個(gè)長(zhǎng)方形類Triangle,包含長(zhǎng)和寬兩個(gè)私有的數(shù)據(jù)成員。要求重載運(yùn)算符“+”,以實(shí)現(xiàn)多個(gè)矩形對(duì)象的面積之和。編寫程序輸入數(shù)據(jù)進(jìn)行測(cè)試。 3 實(shí)驗(yàn)的源代碼1)#include <iostream.h>#define PI 3.14159class CShapeprotected:double m_dRadius;public:CShape( double dRadius )m_dRadius = dRadius;virtual double GetArea() = 0;virtual double GetVolume() = 0;class CCylinder: pu

33、blic CShapeprivate:double m_dHeight;public:CCylinder( double dHeight, double dRadius):CShape( dRadius )m_dHeight = dHeight;double GetArea()return PI * m_dRadius * m_dRadius * 2 + 2 * PI * m_dRadius * m_dHeight;double GetVolume()return PI * m_dRadius * m_dRadius * m_dHeight;class CBall: public CShapepublic:CBall( double dRadius):CShape( dRadius )double GetArea()return 4 * PI * m_dRadius * m_dRadius;double GetVolume()return 4 / 3.0 * PI * m_dRadi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論