声明一个Shape(形状)基类,它有两个派生类:Circle(圆)和Square(正方形),要求利用多态性的概念,分别以虚函数的形式完成对圆和正方形的周长及面积的计算.要求:Shape类的数据成员包括
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/03 10:45:15
![声明一个Shape(形状)基类,它有两个派生类:Circle(圆)和Square(正方形),要求利用多态性的概念,分别以虚函数的形式完成对圆和正方形的周长及面积的计算.要求:Shape类的数据成员包括](/uploads/image/z/11944844-44-4.jpg?t=%E5%A3%B0%E6%98%8E%E4%B8%80%E4%B8%AAShape%EF%BC%88%E5%BD%A2%E7%8A%B6%EF%BC%89%E5%9F%BA%E7%B1%BB%2C%E5%AE%83%E6%9C%89%E4%B8%A4%E4%B8%AA%E6%B4%BE%E7%94%9F%E7%B1%BB%EF%BC%9ACircle%EF%BC%88%E5%9C%86%EF%BC%89%E5%92%8CSquare%EF%BC%88%E6%AD%A3%E6%96%B9%E5%BD%A2%EF%BC%89%2C%E8%A6%81%E6%B1%82%E5%88%A9%E7%94%A8%E5%A4%9A%E6%80%81%E6%80%A7%E7%9A%84%E6%A6%82%E5%BF%B5%2C%E5%88%86%E5%88%AB%E4%BB%A5%E8%99%9A%E5%87%BD%E6%95%B0%E7%9A%84%E5%BD%A2%E5%BC%8F%E5%AE%8C%E6%88%90%E5%AF%B9%E5%9C%86%E5%92%8C%E6%AD%A3%E6%96%B9%E5%BD%A2%E7%9A%84%E5%91%A8%E9%95%BF%E5%8F%8A%E9%9D%A2%E7%A7%AF%E7%9A%84%E8%AE%A1%E7%AE%97.%E8%A6%81%E6%B1%82%EF%BC%9AShape%E7%B1%BB%E7%9A%84%E6%95%B0%E6%8D%AE%E6%88%90%E5%91%98%E5%8C%85%E6%8B%AC)
声明一个Shape(形状)基类,它有两个派生类:Circle(圆)和Square(正方形),要求利用多态性的概念,分别以虚函数的形式完成对圆和正方形的周长及面积的计算.要求:Shape类的数据成员包括
声明一个Shape(形状)基类,它有两个派生类:Circle(圆)和Square(正方形),
要求利用多态性的概念,分别以虚函数的形式完成对圆和正方形的周长及面积的计算.
要求:Shape类的数据成员包括中心点的坐标,Circle类和Square类初始值分别给出:圆的圆心和半径;正方形的中心和一个顶点.
声明一个Shape(形状)基类,它有两个派生类:Circle(圆)和Square(正方形),要求利用多态性的概念,分别以虚函数的形式完成对圆和正方形的周长及面积的计算.要求:Shape类的数据成员包括
#include
#include
#define PI 3.14
class Point
{
public:
Point(){x=0;y=0;}
Point(float x,float y){this->x=x;this->y=y;}
Point(){}
float getX(){ return x;}
float getY(){ return y;}
void setX(float x){this->x=x;}
void setY(float y){this->y=y;}
private:
float x;
float y;
};
class Shape
{
public:
Shape(){this->center.setX(0);this->center.setY(0);}
Shape(Point center){
this->center.setX(center.getX());
this->center.setY(center.getY());
}
Shape(){}
virtual float getArea(){return 0;}
virtual float getCirc(){return 0;}
protected:
Point center;
};
class Circle:public Shape
{
public:
Circle(){}
Circle(Point center,float radius)
{
this->center.setX(center.getX());
this->center.setY(center.getY());
this->radius=radius;
}
Circle(){}
float getArea(){return radius*radius*PI;}
float getCirc(){return 2*PI*radius;}
private:
float radius;
};
class Square:public Shape
{
public:
Square(){}
Square(Point center,Point top){
this->center.setX(center.getX());
this->center.setY(center.getY());
this->top.setX(top.getX());
this->top.setY(top.getY());
}
Square(){}
float getArea(){
float a=top.getX()-center.getX();
float b=top.getY()-center.getY();
return 2*(a*a+b*b);
}
float getCirc(){
float a=top.getX()-center.getX();
float b=top.getY()-center.getY();
return 4*sqrt(2)*sqrt(a*a+b*b);
}
private:
Point top;
};
void main(){
Point p1(0,0),p2(4,4);
Circle c1=Circle(p1,4);
Square s1=Square(p1,p2);
Shape s=c1;
cout