Подорожуй з gofrie.com

Задача: Сегмент

Реалізувати клас сегментів, який не суперечить наступній сигнатурі:


#include <iostream>
using namespace std;

class Point 
{
private:
    double _x;
    double _y;
public:
    Point(const double &x = 0, const double &y = 0);
    Point(const Point&);
    ~Point(void);
    Point& operator=(const Point &);
    double& x(void);
    double& y(void);
    const double& x()const;
    const double& y()const;
};

//Вивід у вигляді (x; y)
ostream& operator<<(ostream&, const Point&);
const Point operator+(const Point&, const Point&);
Point& operator+=(Point&, const Point&);
const bool operator==(const Point&, const Point&);
const bool operator!=(const Point&, const Point&);

class Segment
{
private:
    const unsigned int _myID;
    Point _a;
    Point _b;
public:
    Segment(const double &x1 = 0, const double &y1 = 0,
            const double &x2 = 0, const double &y2 = 0);
    Segment(const Point &start, const Point &end);
    Segment(const Segment &);
    ~Segment();
    Segment& operator=(const Segment &);
    const Point& start() const;
    const Point& end() const;
    Point& start();
    Point& end();
    const double& startX() const;
    const double& startY() const;
    const double& endX() const;
    const double& endY() const;
    double& startX();
    double& startY();
    double& endX();
    double& endY();
    // Обчислення довжини відрізка
    const double length() const;
    // Обчислення відстані від відрізка до точки
    const double distance(const Point &) const;
    //Ідентифікатор поточного сегменту
    const unsigned int getID() const;
};

// Вивід у вигляді [(x1; y1); (x2; y2)]
ostream& operator<<(ostream&, const Segment &);
const bool operator==(const Segment &, const Segment &);
const bool operator!=(const Segment &, const Segment &);