面向对象实验三( 组合、继承与多态性)

来源:互联网 发布:java开发有哪些方向 编辑:程序博客网 时间:2024/06/18 15:55
一、实验目的
1、掌握继承机制。
2、掌握虚函数。
3、理解并掌握虚基类。


二、实验内容

1、编写一个程序:设计一个汽车类,数据成员有轮子个数、车重。小车类是汽车类的私有派生类,包含载客量。卡车类是汽车类的私有派生类,包含载客数和载重量。每个类都有数据的输出方法。

#include<iostream>using namespace std;//汽车类class car{public:    int wheel;//轮子个数    float weight;//车重    car(int a=0,float b=0);    void carprint();//汽车类的输出函数};//小车类class dolly:private car{private:    int busload;//载客量public:    dolly(int c=24):car(4,2)    {        busload=c;    }    void dollyprint();//小车类的输出函数};//卡车类class truck:private car{private:    int busload;//载客量    float upweight;//载重量public:    truck(int c=24,float d=30):car(4,2)    {        busload=c;        upweight=30;    }    void truckprint();//卡车类的输出函数};int main(){    car c1(4,2);    c1.carprint();    dolly c2(24);    c2.dollyprint();    truck c3(24,3);    c3.truckprint();    return 0;}//汽车类的构造函数car::car(int a,float b){    wheel=a;    weight=b;}//汽车类的输出函数void car::carprint(){    cout<<"汽车类:"<<endl;    cout<<"轮子个数为:"<<wheel<<"个"<<endl;    cout<<"车重为:"<<weight<<"吨"<<endl;    cout<<endl<<endl;}//小车类的输出函数void dolly::dollyprint(){    cout<<"小车类:"<<endl;    cout<<"轮子个数为:"<<wheel<<"个"<<endl;    cout<<"车重为:"<<weight<<"吨"<<endl;    cout<<"载客量为:"<<busload<<"位"<<endl;    cout<<endl<<endl;}//卡车类的输出函数void truck::truckprint(){    cout<<"卡车类:"<<endl;    cout<<"轮子个数为:"<<wheel<<"个"<<endl;    cout<<"车重为:"<<weight<<"吨"<<endl;    cout<<"载客量为:"<<busload<<"位"<<endl;    cout<<"载重量为:"<<busload<<"吨"<<endl;}



2、虚基类为Shape,从Shape派生出矩形类(左上角点、宽、高)、椭圆类(横轴、纵轴)。给出各个类的构造函数,成员初始化,在基类中定义虚函数GetArea()(计算面积),在派生类中改写。写出该程序的实现。

#include<iostream>#define PI 3.14using namespace std;//形状类class Shape{public:    int x,y;    int wide,high;    Shape(){};    virtual void GetArea()=0;//虚函数GetArea()(计算面积)    virtual ~Shape(){};};//矩形类class rectangle:public Shape{private:    int x,y;    int wide,high;public:    rectangle(int a,int b,int c,int d);//矩形类的构造函数    void GetArea();};//椭圆类class ellipse:public Shape{private:    int x,y;    int wide,high;public:    ellipse(int a,int b,int c,int d);//椭圆类的构造函数    void GetArea();};int main(){    rectangle ob1(3,4,6,8);    ob1.GetArea();    ellipse ob2(0,0,2,2);    ob2.GetArea();    return 0;}//矩形类的构造函数rectangle::rectangle(int a,int b,int c,int d){    x=a;    y=b;    wide=c;    high=d;}//椭圆类的构造函数ellipse::ellipse(int a,int b,int c,int d){    x=a;    y=b;    wide=c;    high=d;}void rectangle::GetArea(){    cout<<"矩形类"<<endl;    cout<<"左上角点的坐标为:"<<'('<<x<<','<<y<<')'<<endl;    cout<<"矩形的宽为:"<<wide<<endl;    cout<<"矩形的高为:"<<high<<endl;    cout<<"矩形的面积为:"<<wide*high<<endl<<endl;}void ellipse::GetArea(){    float area;    area=PI*wide*high/4;    cout<<"椭圆类"<<endl;    cout<<"椭圆的横轴为:"<<wide<<endl;    cout<<"椭圆的长轴为:"<<high<<endl;    cout<<"椭圆的面积为:"<<area<<endl;}


原创粉丝点击