数据的共享和保护以及多态性课案.docx
- 文档编号:29535369
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:11
- 大小:40.43KB
数据的共享和保护以及多态性课案.docx
《数据的共享和保护以及多态性课案.docx》由会员分享,可在线阅读,更多相关《数据的共享和保护以及多态性课案.docx(11页珍藏版)》请在冰豆网上搜索。
数据的共享和保护以及多态性课案
实验四数据的共享和保护以及多态性
一、实验目的
1.学习数据的共享和保护。
2.学习使用虚函数实现动态多态性。
二、实验内容
1.声明一个Dog类,自行分析设计出其可以拥有的静态数据成员和静态成员函数,设计完整程序并测试这个类,请分析写出静态数据成员和静态成员函数的功能和用法。
2.声明类X、Y、Z。
实现:
Y的成员函数可以访问X的私有数据成员,Z的成员函数可以访问X的数据成员。
用多文件结构实现以上功能。
(各类中的数据成员和函数成员请自行思考设计)
3.声明一个Vehicle(车)基类,有Run、Stop等成员函数,由此派生出bicycle(自行车)类和motorcar(汽车)类,从bicycle类和motorcar类派生出motorcycle(摩托车)类,它们都有Run、Stop等成员函数。
实现并测试这些类,注意虚基类和虚函数的使用。
4.对people类重载“==”运算符和“=”运算符,“==”运算符判断两个people类对象的id属性的大小;“=”运算符实现people类对象的赋值操作。
附:
people类的属性:
number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。
其中“出生日期”声明为一个“日期”类内嵌子对象。
三、实验注意事项
程序中,需要编写一个可执行函数与main主调函数,自主设计输入、输出值,使得结果可以由控制台显示输出。
四、实验程序代码
程序1
#include
#include
usingnamespacestd;
classDog
{
public:
Dog(){age=1;sex="male";weight=1.0;}
Dog(int_age,string_sex,double_weight):
age(_age),sex(_sex),weight(_weight){}
~Dog(){}
voidsetDog(int_age,string_sex,double_weight)
{
age=_age;
sex=_sex;
weight=_weight;
}
voidshowDog()
{
cout<<"age="< } private: intage; stringsex; doubleweight; }; intmain() { Dogd1,d2(10,"female",20.0); d1.showDog(); d2.showDog(); d1.setDog(8,"female",50); d1.showDog(); cin.get(); return0; } 程序2 #include usingnamespacestd; classX; classZ; classY{ public: voidg(X*pa); }; classX{ inti; public: X(){i=0;} voiddisp(){cout<<"i="< friendvoidY: : g(X*pa); friendclassZ; friendvoidh(X*pa); }; classZ{ public: voidf(X*pa){pa->i+=5;} }; voidY: : g(X*pa){pa->i++;} voidh(X*pa){pa->i+=8;} intmain(){ Xx; Yy; Zz; y.g(&x); x.disp(); z.f(&x); x.disp(); h(&x); x.disp(); return0; } 程序3 #include usingnamespacestd; classVehicle{ public: virtualvoidRun(){cout<<"Vehicle: : Runcalled\n";} virtualvoidStop(){cout<<"Vehicle: : Stopcalled\n";} }; classmotorcar: publicVehicle{ public: voidRun(){cout<<"motorcar: : Runcalled\n";} virtualvoidStop(){cout<<"motorcar: : Stopcalled\n";} }; classbicycle: publicVehicle{ public: virtualvoidRun(){cout<<"bicycle: : Runcalled\n";} voidStop(){cout<<"bicycle: : Stopcalled\n";} }; classmotorcycle: publicbicycle,publicmotorcar{ public: voidRun(){cout<<"motorcycle: : Runcalled\n";} voidStop(){cout<<"mototrcycle: : Stopcalled\n";} }; intmain(){ Vehicleve; bicyclebi; motorcarmo; motorcyclemocy; Vehicle*pclass=&ve; pclass->Run(); pclass->Stop(); pclass=&bi; pclass->Run(); pclass->Stop(); pclass=&mo; pclass->Run(); pclass->Stop(); } 程序4 #include #include usingnamespacestd; classdate //日期类 { private: intyear,month,day; public: voidsetdate(inty=0,intm=0,intd=0); //带默认形参值的成员函数 voidshowdate(); }; voiddate: : setdate(inty,intm,intd) //内联成员函数 { cin>>y>>m>>d; year=y; month=m; day=d; } voiddate: : showdate() {cout< } classpeople {private: intnum; charsex; datebirth; //"日期类内嵌子对象 stringid; public: people(){} //构造函数 people(intn,chars,dateb,stringi) {num=n; sex=s; birth=b; id=i; } peopleoperator==(constpeople&p);//符号重载函数实现 peopleoperator=(constpeople&p); people(people&p);//拷贝构造函数 voidsetpeople();//属性值录入 voidshowpeople();//属性值显示 }; people: : people(people&p)//定义拷贝构造函数 { num=p.num; sex=p.sex; birth=p.birth; id=p.id; } voidpeople: : setpeople() { cout<<"-------录入人员信息---------"< cout<<"请输入编号: "; cin>>num; cout<<"请输入性别(m/f): "; cin>>sex; cout<<"请输入出生日期: "; birth.setdate(); cout<<"请输入身份证号: "; cin>>id; } voidpeople: : showpeople()//对象函数实现 { cout<<"-----"< cout<<"人员编号: "< cout<<"人员性别: "< cout<<"出生日期: "; birth.showdate(); cout<<"身份证号: "< } peoplepeople: : operator==(constpeople&p) { if(p.id==id) {cout<<"id相等! "< elsecout<<"id不相等! "< return*this; } peoplepeople: : operator=(constpeople&p) { id=p.id;num=p.num;sex=p.sex;birth=p.birth; return*this; } intmain() { peoplep1,p2; p1.setpeople(); p1.showpeople(); p2.setpeople(); p2.showpeople(); cout<<""< cout<<"p1==p2: "< p1==p2; cout<<""< cout<<"p1=p2: "< p1=p2; p1.showpeople(); p2.showpeople(); return0; } 五、实验运行结果 程序1 程序2 程序3 程序4 六、实验心得与体会 本次实验是我了解了数据的共享和保护。 熟悉了使用虚函数实现动态多态性的方法,加深了我对C++实验的理解,提高了我的编程能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 共享 保护 以及 多态性