已知图形类Shape是一个表示图形的抽象类,Area( )为求图形面积的函数,Perimeter( )为求图形周长的函数,Print()为 输出图形的基本信息。分别设计图形类(Shape)、点类(Point)和圆类(Circle),要求根据如下已知代码,实现相关类。 PI=3.1415926f;
时间: 2023-12-14 08:37:50 浏览: 101
Java:使用抽象类定义一个“形状类”,能够计算周长和面积。
根据题目要求,我们可以设计如下的类:
```c++
#include<iostream>
using namespace std;
const float PI = 3.1415926f; // 定义圆周率常量
class Shape {
public:
virtual float Area() = 0; // 纯虚函数,用于求面积
virtual float Perimeter() = 0; // 纯虚函数,用于求周长
virtual void Print() = 0; // 纯虚函数,用于输出基本信息
};
class Point {
public:
Point(float _x = 0, float _y = 0) : x(_x), y(_y) {}
float GetX() const { return x; }
float GetY() const { return y; }
void SetX(float _x) { x = _x; }
void SetY(float _y) { y = _y; }
private:
float x, y;
};
class Circle : public Shape {
public:
Circle(Point _center, float _radius) : center(_center), radius(_radius) {}
float Area() { return PI * radius * radius; }
float Perimeter() { return 2 * PI * radius; }
void Print() {
cout << "圆心坐标:" << center.GetX() << "," << center.GetY() << endl;
cout << "半径:" << radius << endl;
}
private:
Point center;
float radius;
};
```
上述代码中,我们定义了一个Shape类作为图形的抽象类,其中包含了三个纯虚函数:Area()、Perimeter()和Print(),分别用于求面积、周长和输出基本信息。我们还定义了一个Point类用于表示平面上的点,包含了点的横坐标和纵坐标。最后,我们定义了一个Circle类用于表示圆形,继承自Shape类,并实现了Area()、Perimeter()和Print()三个函数,分别用于求圆形面积、周长和输出圆形的基本信息。
我们可以使用下面的代码进行测试:
```c++
int main() {
Point p(0, 0);
Circle c(p, 5);
c.Print();
cout << "面积:" << c.Area() << endl;
cout << "周长:" << c.Perimeter() << endl;
return 0;
}
```
运行结果如下:
```
圆心坐标:0,0
半径:5
面积:78.5398
周长:31.4159
```
从输出结果可以看出,我们已经成功地实现了Shape类和Circle类,并且能够正确地求出圆形的面积和周长。
阅读全文