Question: The code below defines a class Point that represents a point on the coordinate plane. A Segment should connect two points (its end points). When
The code below defines a class Point that represents a point on the coordinate plane. A Segment should connect two points (its end points). When we make a segment, we will give the constructor the addresses of two points - we want the segment to use those points as its endpoints. The segment should link to those points, not make copies of them. (Aggregation)
Finish the Segment class by:
- Adding the member variables p1 and p2 needed to hold the addresses of two Points (OK to do in the public section).
- Making a constructor that accepts two addresses.
Then add code for a moveBy(int deltaX, int deltaY) function to Segment so that we can shift the segment by some amount in x (deltaX) and some amount in y (deltaY). Moving a segment should move its endpoints.
#include
using namespace std;
class Point { private: int x = 0; int y = 0; public: Point() { } Point(int xVal, int yVal) { moveBy(xVal, yVal); } string toString() { return to_string(x) + ", " + to_string(y); } void moveBy(int xVal, int yVal) { x += xVal; y += yVal; } };
class Segment { public: string toString() { return p1->toString() + " to " + p2->toString(); }
//Do not modify anything on or above the line below this //YOUR_CODE_BELOW
//YOUR_CODE - constructor and member variables
//YOUR_CODE_ABOVE //Do not modify anything on or below the line above this
};
int main() { Point A(0, 0); Point B(4, 4);
Segment s1(&A, &B);
cout << s1.toString() << endl; s1.moveBy(1, 1); cout << s1.toString() << endl; s1.moveBy(0, -2); cout << s1.toString() << endl; }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
