面向对象实验三( 组合、继承与多态性)
2013-11-18 21:50
351 查看
一、实验目的
1、掌握继承机制。
2、掌握虚函数。
3、理解并掌握虚基类。
二、实验内容
1、编写一个程序:设计一个汽车类,数据成员有轮子个数、车重。小车类是汽车类的私有派生类,包含载客量。卡车类是汽车类的私有派生类,包含载客数和载重量。每个类都有数据的输出方法。
2、虚基类为Shape,从Shape派生出矩形类(左上角点、宽、高)、椭圆类(横轴、纵轴)。给出各个类的构造函数,成员初始化,在基类中定义虚函数GetArea()(计算面积),在派生类中改写。写出该程序的实现。
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; }
相关文章推荐
- 面向对象实验三(组合、继承与多态性)
- Java面向对象继承与组合的问题
- 面向对象之继承和组合浅谈
- 面向对象思想的头脑风暴(二)—— 详解继承与组合的优缺点
- 【转】使用组合替代继承(面向对象软件设计的“开—闭”原则 )
- PHP面向对象之旅:接口与组合模拟多继承
- 面向对象设计三大原则(封装变化点,对接口进行编程,多使用组合而不是继承)
- 面向对象:类组合还是类继承?
- 面向对象设计原则七 - 组合优先于继承
- 4.java面向对象语法学习(部分3-继承,组合,代理)
- 关于面向对象设计中继承与组合的选择
- 面向对象设计原则七 - 组合优先于继承
- Java第4次实验提纲(面向对象2-继承、多态、抽象类与接口与Swing)
- 一个经典实例理解继承与多态原理与优点(附源码)---面向对象继承和多态性理解得不够深刻的同学请进
- 面向对象之继承和组合浅谈
- 组合对象面向对象中组合和继承的关系
- 面向对象之组合、封装、多态性、鸭子类型
- 面向对象之继承和组合浅谈
- 面向对象思想的头脑风暴(二)—— 详解继承与组合的优缺点
- 面向对象之继承和组合浅谈