您的位置:首页 > 编程语言 > C语言/C++

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

2013-11-18 21:50 351 查看
一、实验目的

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.14

using 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++