• 智能AI问答!更聪明、更完整、原创作!
  • 一款基于GPT的超级AI机器人,可以回答问题、聊天、创作、写文案!

设计一个基类point,定义二维空间的点,设计一个继承类rectangle,由两个对角点确定一个矩形。完善其内部成员函数,包括设置、获取成员变量,计算rectangle类的高、宽和面积

发布于 2024-05-11 08:57:00

在面向对象编程中,基类(基类)通常用于定义一组通用的属性和方法,而派生类(继承类)则继承这些属性和方法,并根据需要进行扩展或覆盖。

以下是一个简单的示例,使用C++语言来定义Point基类和Rectangle继承类:

#include <iostream>
#include <cmath>

// 基类 Point 定义二维空间中的一个点
class Point {
protected:
    double x;
    double y;
public:
    Point() : x(0), y(0) {}  // 默认构造函数
    Point(double x, double y) : x(x), y(y) {}  // 带参数的构造函数

    // 设置点的坐标
    void setCoordinates(double newX, double newY) {
        x = newX;
        y = newY;
    }

    // 获取点的坐标
    void getCoordinates(double &outX, double &outY) const {
        outX = x;
        outY = y;
    }
};

// 继承类 Rectangle 由两个对角线上的点确定一个矩形
class Rectangle : public Point {
private:
    Point corner;  // 矩形的另一个对角点

public:
    // 构造函数,使用两个对角点初始化矩形
    Rectangle(const Point& p1, const Point& p2)
        : Point(p1), corner(p2) {}

    // 设置矩形的对角点
    void setDiagonalPoints(const Point& p1, const Point& p2) {
        setCoordinates(p1.x, p1.y);
        corner.setCoordinates(p2.x, p2.y);
    }

    // 计算矩形的高
    double getHeight() const {
        return std::abs(corner.y - y);
    }

    // 计算矩形的宽
    double getWidth() const {
        return std::abs(corner.x - x);
    }

    // 计算矩形的面积
    double getArea() const {
        return getWidth() * getHeight();
    }
};

int main() {
    // 示例:创建一个矩形对象并计算其高、宽和面积
    Point p1(1, 1);
    Point p2(4, 6);
    Rectangle rect(p1, p2);

    std::cout << "Height: " << rect.getHeight() << std::endl;
    std::cout << "Width: " << rect.getWidth() << std::endl;
    std::cout << "Area: " << rect.getArea() << std::endl;

    return 0;
}

在这个示例中,Point类有两个数据成员xy,代表点在二维空间中的坐标。它提供了设置和获取坐标的方法。

Rectangle类继承自Point,并添加了第二个点corner来表示矩形的对角点。它提供了计算矩形高度、宽度和面积的方法。getHeightgetWidth方法计算两个对角点之间的距离来确定矩形的高和宽,getArea方法则通过乘以高和宽来计算面积。

请注意,这个示例假设矩形的对角线是垂直和水平的。如果对角线不是这样的方向,那么计算高和宽的方法需要相应地调整。

0 条评论

发布
问题

在线
客服