编写一个与图形相关的应用程序,需要处理大量图形(Shape)的信息。图形有矩形(Rectangle),圆形(Circle)和正方形(Square),应用需要计算这些图形的面积并且可能在设备上进行显示。
#include <map>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std ;
#define PI 3.14159
class Shape
{ //抽象类
public:
Shape(){}
~Shape(){}
virtual void Draw() = 0 ; //纯虚函数
virtual double Area() = 0 ; //纯虚函数
} ;
//长方形类
class Rectangle : public Shape
{
private:
int a;
int b;
public:
Rectangle():a(0),b(0){}
Rectangle(int x,int y):a(x),b(y){}
virtual void Draw()
{
cout<<"Retangle , Area = "<<Area()<<endl;
}
virtual double Area()
{
return a*b ;
}
} ;
//圆形类
class Circle : public Shape
{
private:
double r;
public:
Circle(double x):r(x){}
virtual void Draw()
{
cout<<"Circle , Area = "<<Area()<<endl;
}
virtual double Area()
{
return r*r*PI;
}
} ;
//正方形类,继承Rectangle类
class Square : public Rectangle
{
private:
int a ;
public:
Square(int x):a(x){}
virtual void Draw()
{
cout<<"Square , Area = "<<Area()<<endl;
}
virtual double Area()
{
return a*a;
}
} ;
int main()
{
Rectangle rect(10,20);
Square square(10);
Circle circle(8);
Shape *p ; //基类(抽象类)指针
p = &rect ;
cout<<p->Area()<<endl;
p->Draw();
p = &square ;
cout<<p->Area()<<endl;
p->Draw();
p = &circle ;
cout<<p->Area()<<endl;
p->Draw();
return 0 ;
}