声明一个车vehicle基类具有MaxSpeedweight等成员变量有RunStop等成员函数.docx
- 文档编号:5836615
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:11
- 大小:73.36KB
声明一个车vehicle基类具有MaxSpeedweight等成员变量有RunStop等成员函数.docx
《声明一个车vehicle基类具有MaxSpeedweight等成员变量有RunStop等成员函数.docx》由会员分享,可在线阅读,更多相关《声明一个车vehicle基类具有MaxSpeedweight等成员变量有RunStop等成员函数.docx(11页珍藏版)》请在冰豆网上搜索。
声明一个车vehicle基类具有MaxSpeedweight等成员变量有RunStop等成员函数
实验九多态性与虚函数
(2)
一、实验目的和要求
1.了解多态的概念;
2.了解虚函数的作用及使用方法;
3.了解静态关联和动态关联的概念和用法;
4.了解纯虚函数和抽象类的概念和用法
二、实验内容和结果
1.声明一个车(vehicle)基类,具有MaxSpeed、weight等成员变量有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)有座位数(SeatNum)等属性,类从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数,使用虚函数完成。
(各个类都必须定义构造函数和析构函数)
#include
usingnamespacestd;
classvehicle
{
protected:
floatMaxSpeed;
floatweight;
public:
~vehicle(){}
vehicle(floatm,floatw):
MaxSpeed(m),weight(w){}
virtualvoidRun()
{
cout<<"车已经启动啦"< } virtualvoidStop() { cout<<"vehicle已经停啦"< } }; classbicycle: virtualpublicvehicle { protected: floatHeight; public: ~bicycle(){} bicycle(floatm,floatw,floath): vehicle(m,w),Height(h){} voidRun() { cout<<"Theheightofbicycleis: "< } voidStop() { cout<<"bicycle已经停啦"< } }; classmotorcar: virtualpublicvehicle { protected: intSeatNum; public: ~motorcar(){} motorcar(floatm,floatw,floats): vehicle(m,w),SeatNum(s){} voidRun() { cout<<"Thenumberofmotorcar'sseatis: "< } voidStop() { cout<<"motorcar已经停啦"< } }; classmotorcycle: publicbicycle,publicmotorcar { public: ~motorcycle(){} motorcycle(floatm,floatw,floath,floats): vehicle(m,w),bicycle(m,w,h),motorcar(m,w,s){} voidRun() { cout<<"MaxSpeed: "< cout<<"weight: "< cout<<"Theheightis: "< cout<<"Thenumberofseatis: "< } voidStop() { cout<<"motorcycle已经停啦"< } }; intmain() { vehiclea(108,53); bicycleb(180,50,2); motorcarc(180,80,5); motorcycled(120,90,1.2,3); vehicle*p[4]={&a,&b,&c,&d}; for(inti=0;i<4;i++) { p[i]->Stop(); p[i]->Run(); } return0; } 2.定义抽象基类Shape,由它派生出3个派生类: Circle,Square,Rectangle,Triangle,Trapezoid(梯形)。 用一个函数printArea分别输出以上五者的面积,5个图形的数据在定义对象时给出。 #include #include usingnamespacestd; classShape { public: ~Shape(){} virtualvoidSetdata(float=0,float=0,float=0)=0; virtualfloatArea()=0;//求面积、纯虚函数 }; classTriangle: publicShape//三角形类 { protected: floatW,H; public: ~Triangle(){} Triangle(floatw=0,floath=0): W(w),H(h){} voidSetdata(floatw=0,floath=0,floatj=0) { W=w; H=h; } floatArea() { returnW*H/2; } }; classSquare: publicShape//正方形类 { protected: floatS; public: ~Square(){} Square(floats=0): S(s){} voidSetdata(floats=0,floath=0,floatj=0) { S=s; } floatArea() { returnS*S; } }; classRectangle: publicShape//矩形类 { protected: floatL; floatW; public: ~Rectangle(){} voidSetdata(floatl=0,floatw=0,floatj=0) { L=l; W=w; } Rectangle(floatl=0,floatw=0): L(l),W(w){} floatArea() { returnL*W; } }; classCircle: publicShape//圆类 { protected: floatR; public: ~Circle(){} Circle(floatr=0): R(r){} voidSetdata(floatr=0,floath=0,floatj=0) { R=r; } floatArea() { return3.1415926*R*R; } }; classTrapezoid: publicShape//梯形类 { protected: floatSD; floatXD; floatH; public: ~Trapezoid(){} Trapezoid(floatsd=0,floatxd=0,floath=0): SD(sd),XD(xd),H(h){} voidSetdata(floatsd=0,floatxd=0,floath=0) { SD=sd; XD=xd; H=h; } floatArea() { return0.5*(SD+XD)*H; } }; intmain() { cout< : fixed)< (2); Trianglesjx; sjx.Setdata(2,3);//设置数据 cout<<"三角形面积为: "< Squarezfx(4); cout<<"正方形面积为: "< Rectanglejx(2,4); cout<<"矩形面积为: "< Circleyuan (2); cout<<"圆面积为: "< Trapezoidtx(2.5,3.5,6.5); tx.Setdata(1,2,3);//设置数据 cout<<"梯形面积为: "< Shape*p[5]={&sjx,&zfx,&jx,&yuan,&tx}; floatarea=0; for(inti=0;i<5;i++) area+=p[i]->Area(); cout<<"总面积为: "< return0; } 3.实现计算器程序,要求输入两个数和运算符,得到结果,用简单工厂模式完成。 #include usingnamespacestd; classOperater { protected: inta,b,result; charop; public: Operater(intA,charOP,intB): a(A),b(B),op(OP){} Operater() { a=1,b=1,op=''; } virtualintgetResult()=0; }; classOperaterAdd: publicOperater { public: OperaterAdd(intA,charOP,intB): Operater(A,OP,B){} OperaterAdd(): Operater(){} intgetResult() {returnresult=a+b;} }; classOperaterSub: publicOperater {public: OperaterSub(intA,charOP,intB): Operater(A,OP,B){} OperaterSub(): Operater(){} intgetResult() { returnresult=a-b; } }; classOperaterMul: publicOperater { public: OperaterMul(intA,charOP,intB): Operater(A,OP,B){} OperaterMul(): Operater(){} intgetResult() {returnresult=a*b;}}; classOperaterDiv: publicOperater { public: OperaterDiv(intA,charOP,intB): Operater(A,OP,B){} OperaterDiv(): Operater(){} intgetResult() { if(b! =0) { result=a/b; returnresult; } elsecout<<"除数不能为0! "; } }; classOperaterFactory { public: Operater*createOperate(charop) {Operater*oper; switch(op) {case'+': oper=newOperaterAdd();break; case'-': oper=newOperaterSub();break; case'*': oper=newOperaterMul();break; case'/': oper=newOperaterDiv();break; } returnoper; } }; intmain() {OperaterFactoryOF; Operater*oper=OF.createOperate('+'); cout< return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 声明 一个 vehicle 具有 MaxSpeedweight 成员 变量 RunStop 函数
链接地址:https://www.bdocx.com/doc/5836615.html