已知图形类Shape是一个表示图形的抽象类,Area( )为求图形面积的函数,Perimeter( )为求图形周长的函数,Print()为 输出图形的基本信息。分别设计图形类(Shape)、点类(Point)和圆类(Circle),要求根据如下已知代码,实现相关类。 PI=3.1415926f;
时间: 2023-12-14 21:38:01 浏览: 76
下面是相关类的代码实现:
```c++
#include<iostream>
using namespace std;
const float PI = 3.1415926f; // 定义常量
// 点类
class Point {
public:
Point(float x, float y) : x(x), y(y) {}
float getX() const { return x; }
float getY() const { return y; }
private:
float x, y;
};
// 图形类
class Shape {
public:
virtual float Area() const = 0; // 纯虚函数
virtual float Perimeter() const = 0; // 纯虚函数
virtual void Print() const = 0; // 纯虚函数
};
// 圆类
class Circle : public Shape {
public:
Circle(Point center, float radius) : center(center), radius(radius) {}
float Area() const override { return PI * radius * radius; } // 计算圆的面积
float Perimeter() const override { return 2 * PI * radius; } // 计算圆的周长
void Print() const override { // 输出圆的基本信息
cout << "Shape: Circle\n";
cout << "Center: (" << center.getX() << ", " << center.getY() << ")\n";
cout << "Radius: " << radius << endl;
}
private:
Point center; // 圆心
float radius; // 半径
};
int main() {
Point center(0, 0);
float radius = 1.0f;
Circle circle(center, radius);
circle.Print();
cout << "Area: " << circle.Area() << endl;
cout << "Perimeter: " << circle.Perimeter() << endl;
return 0;
}
```
在上述代码中,我们定义了点类(Point)、图形类(Shape)和圆类(Circle)。其中,点类包含了坐标信息,图形类是一个抽象类,包含了计算面积、周长和输出基本信息的纯虚函数,圆类继承自图形类,实现了这些纯虚函数。在主函数中,我们创建了一个圆类的实例,并调用了它的成员函数来计算面积、周长和输出基本信息。
阅读全文