您的位置:首页 > 其它

【作业练习】虚函数与多态性:图形绘制

2017-05-12 21:47 886 查看
任务要求:1,当用户选择圆形(Circle)时,则要求用户输入圆形的半径,程序模拟绘制图形,输出圆形以及模拟擦除圆形。2,当用户选择矩形(Rectangle)时,则要求用户输入宽度和高度。程序模拟绘制矩形,输出矩形面积以及模拟擦除矩形。Main.h 文件#pragma onceclass Main{public:Main(void);~Main(void);};Main.cpp文件#include "Main.h"#include<iostream>#include "Shape.h"#include "Circle.h"#include "Rectangle.h"using namespace std;void Display(CShape &shape);void Draw(CShape &shape);void Erase(CShape &shape);int main(int argc,char argv[]){cout<<"请输入图形编号:(如1/2)"<<endl;cout<<"1.Circle"<<endl;cout<<"2.Rectangle"<<endl;cout<<"请输入选项"<<endl;int nSelection = 0;cin>>nSelection;switch(nSelection){case 1:{//输入半径//创建CCircle对象circledouble dbRadius = 0.0;cout<<"请输入半径(radius):";cin >> dbRadius;char*pShape = "Circle";CCircle circle(pShape,dbRadius);Draw(circle); //绘制图形Display(circle);//输出圆的面积Erase(circle);//擦除图形}break;case 2:{//绘制图形//输入半径//创建CCircle对象circle;double dbLength = 0.0;double dbWidth = 0.0;cout<<"请输入长度和宽度(eg:3 4):";cin >> dbLength >> dbWidth;char *pShape = "Rectangle";CRectangle rectangle(pShape,dbLength,dbWidth);Draw(rectangle); //绘制图形Display(rectangle); //输出圆的面积Erase(rectangle); //擦除图形;}break;default:cout<<"输入选项错误!"<<endl;break;}return 0;}void Display(CShape &shape){cout << shape.GetShape() <<"面积 = " <<shape.GetArea()<<endl;}void Draw(CShape &shape){shape.Draw();}void Erase(CShape &shape){shape.Erase();}Shape.h 文件#pragma onceclass CShape{public:CShape(void);CShape(char* pShape);//重载构造函数~CShape(void);private :char* m_pShape;public:char* GetShape();virtual double GetArea();virtual void Draw();virtual void Erase();};Shape.cpp#include "Shape.h"#include<iostream>using namespace std;CShape::CShape(void){m_pShape = "Default";}CShape::CShape(char* pShape){m_pShape = pShape;}CShape::~CShape(void){}char* CShape::GetShape(){return m_pShape;}double CShape::GetArea(){return 0.0;}void CShape::Draw(){cout<<"Draw"<<endl;}void CShape::Erase(){cout<<"Erase"<<endl;}
Rectangle.h 文件
#pragma once#include "shape.h"class CRectangle :public CShape{public:CRectangle(void);CRectangle(char* pShape,double dbLength,double dbWidth);//重载构造函数~CRectangle(void);private:double m_dbLength;//矩形长度double m_dbWidth;//矩形宽度public:double GetArea(); //计算矩形面积void Erase();void Draw();};
Rectangle.cpp 文件
#include "Rectangle.h"#include "shape.h"#pragma once#include<iostream>using namespace std;CRectangle::CRectangle(void){m_dbLength = 0.0;//矩形长度m_dbWidth = 0.0;}CRectangle::CRectangle(char* pShape,double dbLength,double dbWidth){m_dbLength = dbLength;m_dbWidth = dbWidth;}CRectangle::~CRectangle(void){}double CRectangle::GetArea(){double dbArea = m_dbLength*m_dbLength;return dbArea;}void CRectangle::Draw(){cout<< "Draw a rectangle (length = "<< m_dbLength <<"Width = "<<m_dbWidth<<")"<<endl;}void CRectangle::Erase(){cout << "Erase a rectangle (length = "<< m_dbLength <<"Width = "<<m_dbWidth<<")"<<endl;}
Circle.h#pragma once#include "shape.h"class CCircle :public CShape{public:CCircle(void);CCircle::CCircle(char* pShape,double dbRadius); //重载构造函数~CCircle(void);private:double m_dbRadius;public:void Draw(); //绘制图void Erase(); //擦除图double GetArea(); //计算圆面积};Circle.cpp#include "Circle.h"#include<iostream>using namespace std;const double PI = 3.1415926;CCircle::CCircle(void){m_dbRadius = 0.0;}CCircle::CCircle(char* pShape,double dbRadius):CShape(pShape){m_dbRadius = dbRadius;}CCircle::~CCircle(void){}double CCircle::GetArea(){double dbArea = PI*m_dbRadius*m_dbRadius;return dbArea;}void CCircle::Draw(){cout << "Erase a rectangle (Radius = "<< m_dbRadius <<")"<<endl;}void CCircle::Erase(){cout << "Erase a rectangle (Radius = "<< m_dbRadius <<")"<<endl;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: