Listing 2: line.h.

class Line
{
  protected:
    Point start;
    Point end;
  public:
    Line(Point s, Point e):start(s),end(e) {};
    Line(){};

    Point getStart() { return start; }
    Point getEnd()   { return end; }
    bool is_vertical() { return (start.x() == end.x()); }
    bool is_horizontal() { return (start.y() == end.y()); }
    float slope() { return (start.y()-end.y())/(end.x()-start.x()); }
    float yintercept();
    bool parallel(Line* other); 
    Point* intersection(Line* other){return NULL;}
};