Untitled

mail@pastecode.io avatar
unknown
c_cpp
2 years ago
1.6 kB
3
Indexable
#ifndef INC_5_ELLIPSE_H
#define INC_5_ELLIPSE_H

#include <iostream>
#include <cmath>
#include "Point.h"

class Ellipse : public Point { //наслідування від класу Point

public:
    Ellipse() : Point(), xrad_(0), yrad_(0) {}  //Конструктор за замовчуванням
    Ellipse(double x, double y) : Point(x, y), xrad_(0), yrad_(0) {}  //Конструктори ініціалізації
    Ellipse(double x, double y, double xrad, double yrad) : Point(x, y), xrad_(xrad), yrad_(yrad) {};
    ~Ellipse() = default;  //Деструктор

    // перевизначення віртуального методу area(). Перевизначуємо за допомогою ключового слова override (його можна не вказувати, але рекомендується). Перевизначення - це коли ми переписуємо віртуальний метод базового класу
    double area() override { //Обчислення площі
        return 4 * xrad_ * yrad_ * M_PI;
    }

    double xrad() const { return xrad_; } // getter для xrad_
    double yrad() const { return yrad_; } // getter для уrad_

    // перевантаження оператора виводу (<<)
    friend std::ostream& operator<<(std::ostream &os, const Ellipse &ellipse) {
        os << static_cast<const Point&>(ellipse) <<"; " << ellipse.xrad() << "; " << ellipse.yrad();
        return os;
    }


protected:
    double xrad_;

private:
    double yrad_;
};



#endif //INC_5_ELLIPSE_H