#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