基類與派生類的定義及其應(yīng)用實(shí)驗(yàn)報(bào)告_第1頁(yè)
基類與派生類的定義及其應(yīng)用實(shí)驗(yàn)報(bào)告_第2頁(yè)
基類與派生類的定義及其應(yīng)用實(shí)驗(yàn)報(bào)告_第3頁(yè)
基類與派生類的定義及其應(yīng)用實(shí)驗(yàn)報(bào)告_第4頁(yè)
基類與派生類的定義及其應(yīng)用實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、佛山科學(xué)技術(shù)學(xué)院電子信息工程學(xué)院面向?qū)ο蟪绦蛟O(shè)計(jì)2016級(jí)計(jì)算機(jī)科學(xué)與技術(shù)課程名稱 實(shí)驗(yàn)項(xiàng)目 專業(yè)班級(jí) 指導(dǎo)教師面向?qū)ο蟪绦蛟O(shè)計(jì)日期 2018.12.16實(shí)驗(yàn)三基類與派生類的定義及其應(yīng)用 姓名_學(xué)號(hào) 成績(jī)實(shí)驗(yàn)?zāi)康?、2、3、4、5、6、掌握繼承的概念。理解派生類與基類的關(guān)系。理解不同的繼承類型。掌握繼承下的構(gòu)造函數(shù)和析構(gòu)函數(shù)。掌握單繼承和多繼承使用方法。理解con st常數(shù)據(jù)成員和常成員函數(shù)的使用。實(shí)驗(yàn)內(nèi)容1.II頭文件person.h的內(nèi)容上機(jī)建立、編譯、運(yùn)行并分析下面程序,并理解繼承的概念。#include #include using names pace std;class P ers

2、onprivate:char m_strName20;int m_nAge;int m_nSex;public:Person();/構(gòu)造函數(shù)Person( char *name, int age, char sex ); / 構(gòu)造函數(shù)P erson( const Person &p ); / 拷貝構(gòu)造函數(shù)P erson()/析構(gòu)函數(shù)coutvvNow destroying the instance of P ersonendl; void SetName( char *name );void SetAge( int age );void setSex( char sex );char* Get

3、Name(); |int GetAge();char GetSex(); void ShowMe();/源程序文件person.cpp的內(nèi)容:/#include p erson.hP erson: Person() : m_nAge( 0 ), m_nSex( 0 )/ 構(gòu)造函數(shù)strcpy( m_strName. XXX);Person:Person( char *name, int age, char sex ) : m nAge( age ), m nSex( sex = m?0:1 )/構(gòu)造函數(shù)strc py( m_strName, name ):Person:Person( cons

4、t Person &p ) : m_nAge( p.m_nAge ), m_nSex( p. m_nSex )/拷貝構(gòu)造函數(shù) strc py( m_strName, p.m_strName ):void P erson:SetName( char *name )strc py( m_strName, name ):void P erson:SetAge( int age )m_nAge = age:void P erson:setSex( char sex )m_nSex = sex = m?0:1:廠char* P erson:GetName()return m_strName:int P

5、erson:GetAge()return m_nAge:-char P erson:GetSex()return (m_nSex = 0?m:f): -void P erson:ShowMe()cout GetName() t GetAge() t GetSex() t: /頭文件employee.h的內(nèi)容:/#include p erson.h/雇員類定義class Empio yee: p ublic Person/工作部門/月薪char m_strDe pt20:float m_fSalary:public:Emp loyee():Empio yee( char *name, int a

6、ge, char sex, char *de pt, float salary ): Empio yee( Empio yee &e ):Empio yee()coutvvNow destroying the instance of Empio yeevvendl: void SetDe pt( char *de pt ): void SetSaIary( float salary ):char* GetDe pt()float GetSaIary() :/顯示雇員信息void ShowMeQ :: /源程序文件 empioyee.cpp的內(nèi)容: /#include empio yee.hEm

7、pio yee:E mpio yee() : m_fSalary( 0.0 ) strcpy( m_strDept, xxxx):Empio yee:E mpIo yee( char *name, int age, char sex, char *de pt, float salary ) :Person( name, age, sex ), m fSaIary( salary )strc py( m_strDe pt, dept );Empio yee:E mpio yee( Empio yee &e ) : P erson( e.GetName(), e.GetAge(), e.GetSe

8、x(), m_fSalary( e.m_fSalary )- -strc py( m_strDe pt, e.m_strDe pt ); - -void Empio yee:SetDe pt( char *de pt )strc py( m_strDe pt, dept ); -void Empio yee:SetSalary( float salary )m_fSalary = salary;-char* EmpI oyee:GetDe pt()return m_strDe pt; float Empio yee:GetSalary()return m_fSaIary; void Empio

9、 yee:ShowMe()P erson:ShowMe();cout m_strDe pt t m_fSalary using names pace std;class Apublic:A()coutvvConstructor1_Avv x endl;A( int m ) : x( m )coutvvConstructor2_Avv x vv endl;A()coutvvDestructor_Avv x endl; -p rivate: int x;;class B : public A|public:B()coutvvConstructor1_Bvv y endl;B( int m, int

10、 n, int l ) : A( m ), a( n ), y( l ) | coutvvConstructor2_Bvv y vvendl; -B()coutvvDestructor_Bvv y vv endl;private:A a; int y;int main()B b1, b2(5,6,7); return 0; | 要求:(1)給出實(shí)驗(yàn)結(jié)果;3、設(shè)計(jì)一個(gè)人員類Person和一個(gè)日期類Date,由人員類派生出學(xué)生類Student,學(xué)生類的數(shù)據(jù)成 員birthday為日期類。要求:1.(2)掌握構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序的方法。建模,畫出類結(jié)構(gòu)圖定義日期類Date,該類包含年(yea

11、r)、月(month)、日(day)等屬性及構(gòu)造函數(shù) 和顯示日期的成員函數(shù)displayO ;定義人員類Person該類包含姓名(name)屬性及構(gòu)造函數(shù); 定義由人員類派生的學(xué)生類 Student,該類包含新增的學(xué)號(hào)(id)、成績(jī)(score)和 成員對(duì)象birthday屬性及構(gòu)造函數(shù)和顯示成員函數(shù) display();2.3.4.編寫各類的實(shí)現(xiàn)程序代碼; 編寫測(cè)試這個(gè)類的main()函數(shù)。思考問(wèn)題:a)如何實(shí)現(xiàn)對(duì)類的成員對(duì)象的私有數(shù)據(jù)成員的訪問(wèn)?b)基類、派生類和類的成員對(duì)象,其 構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序是如何實(shí)現(xiàn)的?c)分析說(shuō)明學(xué)生類對(duì)象的內(nèi)存分配情況。實(shí)驗(yàn)步驟及結(jié)果分析實(shí)驗(yàn)結(jié)果(1

12、)給出實(shí)驗(yàn)結(jié)果;如果改為私有派生,會(huì)出現(xiàn)什么情況?私有繼承后,基類所有成員在派生類中為private成員。看似沒(méi)有任何意義,但私有繼承可以幫助 我們復(fù)用基類代碼,并防止基類接口的曝光。私有繼承時(shí)基類中各成員屬性均變?yōu)閜rivate,并且基類中private成員被隱藏。派生類的成員也只 能訪問(wèn)基類中的public/protected成員,而不能訪問(wèn) private成員;派生類的對(duì)象不能訪問(wèn)基類中的 任何的成員。對(duì)于這個(gè)實(shí)驗(yàn),由于直接通過(guò)employee的對(duì)象emp2調(diào)用了 GetName ()成員函數(shù),故出錯(cuò) 若要讓程序能正常運(yùn)行,該如何調(diào)試處理?con st常數(shù)據(jù)成員和可以使employee類

13、自己創(chuàng)建一個(gè) GetName成員函數(shù),該成員函數(shù)返回Person:GetName();為了防止類中的某些數(shù)據(jù)成員在使用過(guò)程中被修改可以采取什么措施?(掌握 常成員函數(shù)的使用)在傳遞參數(shù)過(guò)程中使用con st常量2、實(shí)驗(yàn)結(jié)果(1) 給出實(shí)驗(yàn)結(jié)果;(2)掌握構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序的方法。3、實(shí)驗(yàn)結(jié)果設(shè)計(jì)一個(gè)人員類Person和一個(gè)日期類Date,由人員類派生出學(xué)生類 Student,學(xué)生類的數(shù)據(jù)成員 birthday為日期類。要求:1)建模,畫出類結(jié)構(gòu)圖 定義日期類Date,該類包含年(year)、月(month)、日(day)等屬性及構(gòu)造函數(shù) 和顯示日期的成員函數(shù)displayO ;定義人

14、員類Person該類包含姓名(name)屬性及構(gòu)造函數(shù); 定義由人員類派生的學(xué)生類 Student該類包含新增的學(xué)號(hào)(id)、成績(jī)(score)和 成員對(duì)象birthday屬性及構(gòu)造函數(shù)和顯示成員函數(shù)display();2)a)b)編寫各類的實(shí)現(xiàn)程序代碼;main.cpp#include viostream#include vwindows.h#include Studenthint main(int argc, char* argv) string title = 16計(jì)算機(jī)科學(xué)與技術(shù)1官科健20160310123; SetConsoleTitle(title.c_str();Date bi

15、rthday(佃98,7,27);Student kejian(kejian, 123, 96.6,birthday); kejian.dis play();Stude nt.c pp#include Person.hclass Student :p ublic Personp rivate:int s_id;float s_score;Date birthday;p ublic:Student();Student( string name, int id, float score,Date bir);void dis play();Student:Student()Student:Stude

16、nt(string name, int id, float score,Date bir):Person(name),s_id(id),s_score(score)birthdav=bir;void Student:dis playOcout name: p_name nid: s_id nscore: using names pace std; class Date p rivate: int d_year; int d_month; int d_day; p ublic:Date(); /構(gòu)造函數(shù)Date( int year, int month, int day ); void dis

17、playO;void Date:dis playOcout nyear: d_year nmonth: d_month nday: d_day endl;Date:Date() Date:Date(int year, int month, int day)d_year = year; d_month = month; d_day = day;3)編寫測(cè)試這個(gè)類的main()函數(shù)。4)思考問(wèn)題:a)如何實(shí)現(xiàn)對(duì)類的成員對(duì)象的私有數(shù)據(jù)成員的訪問(wèn)? 通過(guò)調(diào)用類的getXXX()函數(shù)b)基類、派生類和類的成員對(duì)象,其構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序是如何實(shí)現(xiàn)的?基類,派生類,類C)分析說(shuō)明學(xué)生類對(duì)象的內(nèi)存分配情況。調(diào)用Date,初

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論