Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a class called Point that contains two doubles that represent its x- and y

ID: 3920935 • Letter: W

Question

Write a class called Point that contains two doubles that represent its x- and y-coordinates. It should have get and set methods for both fields. It should have a constructor that takes two double parameters and initializes its coordinates with those values. It should have a default constructor that initializes both coordinates to zero. It should also contain a method called distanceTo that takes as a parameter another Point and returns the distance from the Point that was passed as a parameter to the Point that we called the method of. You will need to use sqrt(). For example at the end of the following, dist should be equal to 5.0:

Next, write a class called LineSegment that contains two Point-pointers, where each holds the address of a Point object that represents an endpoint of the LineSegment. It should have get and set methods for both fields and a constructor that takes the addresses of two Point objects and passes them to the set methods to initialize the data members. It should also contain a method called length that returns the length of the LineSegment – by using the distanceTo method on its endpoints – and a method called slope that returns the slope of the LineSegment. You don't need to do anything special for vertical lines - division by zero will result in the special value inf, which stands for "infinity". Your program will not be tested with line segments where both endpoints have the same coordinates. The LineSegement class might be used as follows:

The functions for the Point class should have the following names:

setXCoord, getXCoord

setYCoord, getYCoord

distanceTo

The functions for the LineSegment class should have the following names:

setEnd1, getEnd1

setEnd2, getEnd2

length

slope

The files must be named: Point.hpp, Point.cpp, LineSegment.hpp and LineSegment.cpp

Point.cpp and LineSegment.hpp should both #include Point.hpp. LineSegment.cpp should #include LineSegment.hpp. The main method you write for testing will also need to include LineSegment.hpp. If you named the file with your main method "geomMain.cpp", then you can compile your program with "g++ Point.cpp LineSegment.cpp geomMain.cpp -o geom".

Explanation / Answer

The cpp and hpp files are given Below.

//Point.hpp

#ifndef POINT_INCLUDE

#define POINT_INCLUDE

class Point

{

public:

//Member Variables

double XCoord;

double YCoord;

//Constructors

Point();

Point(double,double);

//Function Declarations

void setXCoord(double);

void setYCoord(double);

double getXCoord();

double getYCoord();

double distanceTo(Point);

};

#endif

//Point.cpp

#include "Point.hpp"

#include<iostream>

#include<math.h>

using namespace std;

//Member Function Defintions

Point::Point()

{

this->XCoord=0.0;

this->YCoord=0.0;

}

Point::Point(double x,double y)

{

this->XCoord=x;

this->YCoord=y;

}

void Point::setXCoord(double x)

{

this->XCoord=x;

}

void Point::setYCoord(double y)

{

this->YCoord=y;

}

double Point::getXCoord()

{

return this->XCoord;

}

double Point::getYCoord()

{

return this->YCoord;

}

double Point::distanceTo(Point p2)

{

double ans=sqrt(pow((this->XCoord)-(p2.XCoord),2)+pow((this->YCoord-p2.YCoord),2));

return ans;

}

//LineSegment.hpp

#ifndef LINE_SEGMENT_INCLUDE

#define LINE_SEGMENT_INCLUDE

#include "Point.hpp"

class LineSegment

{

public:

//Members Variables

Point *End1;

Point *End2;

//Constructor

LineSegment(Point*,Point*);

//Member Functions Declaration

void setEnd1(Point *p1);

void setEnd2(Point *p2);

Point* getEnd1();

Point* getEnd2();

double length();

double slope();

};

#endif

//LineSegment.cpp

#include<iostream>

#include "LineSegment.hpp"

using namespace std;

//Member Function Definitions

LineSegment::LineSegment(Point *p1,Point *p2)

{

setEnd1(p1);

setEnd2(p2);

}

void LineSegment::setEnd1(Point *p1)

{

End1=p1;

}

void LineSegment::setEnd2(Point *p2)

{

End2=p2;

}

Point* LineSegment::getEnd1()

{

return End1;

}

Point* LineSegment::getEnd2()

{

return End2;

}

double LineSegment::length()

{

return End1->distanceTo(*End2);

}

double LineSegment::slope()

{

return ((End2->YCoord-End1->YCoord)/(End2->XCoord-End1->XCoord));

}

//geomMain.cpp

#include<iostream>

#include "LineSegment.hpp"

using namespace std;

int main()

{

Point p1(2.0, 3.0);

Point p2(1.0, 8.0);

LineSegment ls1(&p1, &p2);

double length = ls1.length();

double slope = ls1.slope();

cout<<"Length : "<<length<<endl;

cout<<"Slope : "<<slope;

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote