ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:69.98KB ,
资源ID:23817313      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23817313.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(继承与多态性.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

继承与多态性.docx

1、继承与多态性学生实验报告开课实验室: 2011 年 4 月 16 日学院年级、专业、班姓名学号实验课程名称面向对象程序设计成绩实验项目名称继承与多态性指导老师一、 实验目的1、掌握继承、基类和派生类的概念。2、掌握初始化基类成员的方法。3、 掌握派生类对基类的继承。4、 学习虚函数和纯虚函数的定义与使用方式。5、 理解抽象类的概念,学习如何用指针指向其他的派生类,实现多态性。6、 掌握抽象类的定义与使用方式,并注意指针的用法。7、学习如何使用虚函数、纯虚函数、抽象类和实现类的多态性。二、实验设备 1、硬件环境:微型计算机,2、软件环境:Visual C+ 6.0;三、实验要求 1、定义派生类的

2、实例#include stdafx.h#include string.h#include iostream.hclass STUDENTprotected: char m_no12,m_name11; int m_sex,m_year,m_month,m_day;public: STUDENT() void set(char * no,char * name,int sex,int year,int month,int day) strcpy(m_no,no); strcpy(m_name,name); m_sex=sex; m_year=year; m_month=month; m_day=

3、day; void set_no(char * no) strcpy(m_no,no); void set_name(char * name) strcpy(m_name,name); void set_sex(int sex) m_sex=sex; void set_year(int year) m_year=year; void set_month(int month) m_month=month; void set_day(int day) m_day=day; char * get_no() return m_no; char * get_name() return m_name; i

4、nt get_sex() return m_sex; int get_year() return m_year; int get_month() return m_month; int get_day() return m_day; ;class CLASS: public STUDENTprotected: int m_c,m_english;public: CLASS() void set_c(int c) m_c=c; void set_english(int english) m_english=english; int get_c() return m_c; int get_engl

5、ish() return m_english; void list() coutn学号:m_no; coutn姓名:m_name; coutn性别:( (m_sex=0) ? 女 : 男); coutn出生日期:m_year年m_month月m_day日; coutnC+:m_c; coutn英语:m_english; ;int main(int argc, char* argv) char str100; int x,i; CLASS s10; for (i=0;i=1;i+) coutstr; si.set_no(str); coutstr; si.set_name(str); coutx

6、; si.set_sex(x); coutx; si.set_year(x); cinx; si.set_month(x); cinx; si.set_day(x); coutx; si.set_c(x); coutx; si.set_english(x); for (i=0;i=1;i+) si.list(); coutnn; return 0;2、多重继承的实例#include stdafx.h#include iostream.hclass BASE1public: void show_i() coutin; protected: int i;class BASE2public: voi

7、d show_j() coutjn; protected: int j;class DERIVED : public BASE1,public BASE2public: void set(int x,int y) i=x; j=y; ;int main(int argc, char* argv) DERIVED obj; obj.set(5,7); obj.show_i(); obj.show_j(); return 0; 3、有一个图书馆类,内有数据成员“借书卡号”和“书名”;还有一个学生类,内有数据成员“姓名”。试设计一个读者类,它是图书馆类和学生类的派生类,继承了它们的所有数据成员和成员

8、函数,在此基础上要添加一个查找函数,可根据输入的读者姓名,显示出该读者的相关信息。 程序设计: (1)定义一个图书馆类Library,其主要功能是记录读者的借书卡号和书名。 (2)定义一个学生类Student,它的主要作用是记录读者的姓名。 (3)定义一个通过读者类Reader,它是Library和Student的派生类,它除了继承这两个类的数据成员,还定义自己的数据成员,通过该类可以了解到读者的上述所有信息,还记录了读者的借还书日期。3个类的关系如图所示。Library 类Student类Char CardChar BookChar Namevoid SetLib()void DispLib

9、()void SetStu()void DispStu()Reader类Char databuf(9)Int Date1(3)Int date2(3)Void SstBor()Int Find()Void Display()4、虚函数的简单使用。# include class base public:virtual void fh() cout In base class n ; ;class subclass: public base public:virtual void fn() cout In subclass n ; ;void test( base &b) b.fn(); void

10、 main( ) base be;subclass sc;cout Calling test(bc) n ;test(bc);cout Calling test(sc) n ;test(sc);5、用抽象类实现的菜单程序。 # include class Menu public:virtual void action ( ) = 0;;class item1: public Menupublic:virtual void action ()cout 新建文件 endl;;class item2: public Menupublic :virtual void action ( )cout 打开

11、文件 endl;;class item3: public Menupublic:virtual void action ( )cout 保存文件 endl;;class item4: public Menupublic:virtual void action() cout关闭文件 endl;void main() int select;Menu * Fptr4;FptrO = new item1;Fptr1 = new item2;Fptr2 = new item3;Fptr3 = new item4;Do cout 1 new file endl;cout 2 open file endl;

12、cout 3 save file endl;cout 4 close file endl;cout O exit endl;cin select;if( select = 1 & select action();while( select! =0);for(int i=0;i=3;i+ )delete Fptri;6、定义一个从正方形、球体和圆柱体的各种运算中抽象出一个公共基 container类,在其中定义表面积和体积的纯虚函数,在抽象类中定义一个公共的成员数据radius,此数据可作为球体的半径,正方形的边长,圆柱体的底面的半径。分析:定义一个派生于container类的正方体类cube,

13、在类中都具有求表面积的和体积的重定义的成员函数。定义一个派生于container类的球体类sphere,在类中都具有求表面积和体积的重定义的成员函数。定义一个派生于container类的圆柱体类cylinder,在类中都具有求表面积和体积的重定义的成员函数。7、编写一个人员信息管理系统。这个系统的功能是:交互式的实现校园人员信息的录入与显示。分析:学校里,主要有四类人员:大学本科学生、教师、研究生和助教。大学本科生每周有固定的学时数。教师除了固定的学时数外,还有每周的教学时数。研究生除了固定的学时数外,每周还可以自由做一定的研究。助教生除了上课外,还要做研究和一定的教学工作。人员的基本信息包括

14、姓名、编号、性别、身份证号、总学时数以及每周固定学时数。各个人员之间的关系: people类派生出student 类和teacher类,student 类派生出graduate类, graduate类和teacher类派生出TA类。以下给出部分程序:#include class people public:/添加程序private:;class student: virtual public peoplepublic:/添加程序private:;class teacher:virtual public peoplepublic:/添加程序private:;class graduate: vir

15、tual public studentpublic:/添加程序private:;class TA:public people student, public teacherpublic:/添加程序private:;void main()/添加程序四、思考问题及课后练习1、编写一个程序,定义一个汽车类vehicle,它具有一个需传递参数的构造函数,类中的数据成员包括车轮个数和车的重量,并放到保护段中;定义轿车类car是汽车类vehicle的私有派生类,其中包含载人数;再定义卡车类truck是汽车类vehicle的私有派生类,其中包含载人数和载重量。每个类都有相应的数据输出。2、设有系类,它的数据

16、包括系编号、系名,功能包括置数据、修改数据和取数据。设有班类,它继承系类,另数据包括学号、姓名、性别,功能包括置数据、修改数据和取数据。主函数默认设置一位同学数据,键盘输入一位同学数据,然后显示二位同学数据。四、实验程序Sy3_3:#include #include #include using namespace std;class Libraryprotected: char card15; char book20;public: void setlib(); void displib();class Studentprotected: char name20;public: void s

17、etstu(); void dispstu();class Reader: public Library,Studentprotected: char datebuf9; int date13; int date23;public: Reader(); void setbor(); int find(char *n); void display();void Library:setlib() cout输?入?卡号?:card; cout输?入?书名?book;void Library:displib() cout借书卡号?: cardendl; cout书名?: bookendl;void S

18、tudent:setstu() cout输?入?姓?名?: name;void Student:dispstu() cout姓?名?: name12) date21=(date11+2)%12; date20=date10+1; else date20=date10; date21=date11+2; int main() Reader *p; int m,i,j=0; char name20; cout请?输?入?人?数y: m; p=new Readerm; for (i=0;im;i+) cout第i+1个?读者?的?借书证: endl; pi.setbor(); for (i=0;im

19、;i+) cout第i+1个?读者?的?信?息: endl; pi.display(); cout请?输?入?要a查找的?读者?的?姓?名?name; for (i=0;im;i+) if(pi.find(name) pi.display(); j=1; break; if(j=0) cout查找的?姓?名?不?存?在endl; Sy3_6:#include using namespace std;#define PI 3.14class container /基类public: double radius; virtual void squir()=0; virtual void volum

20、e()=0;class cube:public container /正y方?体?类public: cube(double a1=0) radius=a1; void squir() double a2; a2=radius*radius*6; cout正y方?体?的?表面?积y为a: a2endl; void volume() double a3; a3=radius*radius*radius; cout正y方?体?的?体?积y为a: a3endl; ;class sphere:public container /球类public: sphere(double b1=0) radius=b

21、1; void squir() double b2; b2=4*radius*radius*PI; cout球的?表面?积y为a: b2endl; void volume() double b3; b3=4/3*radius*radius*radius*PI; cout球的?体?积y为a: b3endl; ;class cylinder:public container /圆2柱体?类private: double h;public: cylinder(double c1=0,double h1=0) radius=c1;h=h1; void squir() double c2; c2=2*P

22、I*radius*radius+2*PI*radius*h; cout圆2柱体?的?表面?积y为a: c2endl; void volume() double c3; c3=PI*radius*radius*h; cout圆2柱体?的?体?积y为a: c3endl; ;int main() cube c(6); cout正y方?体?的?边?长l=6endl; c.squir(); c.volume(); coutendl; sphere s(2); cout球体?的?半?径?r=2endl; s.squir(); s.volume(); coutendl; cylinder y(2,4); c

23、out圆2柱体?的?底边?半?径?r=2,高?h=4endl; y.squir(); y.volume();Sy3_7:#include #include using namespace std;class people public: char name20; int num; char sex20; int totaltime; int weektime; int iden; /*people(char *na,int n,char *s,int week) strcpy(name,na); num=n; strcpy(sex,s); weektime=week; */ void get() coutname; coutnum; coutsex; coutiden; coutweektime; void show() cout姓?名?为a:nameendl; cout编号?为a:numendl; cout性?别e:sexendl; cout身份Y证号?为a:idenendl; cout总学时数y为a:totaltimeendl; ;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1