diff options
| author | Fuwn <[email protected]> | 2024-04-07 23:18:32 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-04-07 23:18:32 -0700 |
| commit | c1b6ffe70bd281c6c230fd63fabcaac2aff47514 (patch) | |
| tree | e8af3b1782a7cd0754590ed618fddc1bdb9b7385 /chapter2/newpoint.h | |
| download | dscode-main.tar.xz dscode-main.zip | |
Diffstat (limited to 'chapter2/newpoint.h')
| -rw-r--r-- | chapter2/newpoint.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/chapter2/newpoint.h b/chapter2/newpoint.h new file mode 100644 index 0000000..159f1fb --- /dev/null +++ b/chapter2/newpoint.h @@ -0,0 +1,82 @@ +// FILE: newpoint.h (revised from point.h in Figure 2.9 on page 58)
+// CLASS PROVIDED: point (an ADT for a point on a two-dimensional plane)
+//
+// CONSTRUCTOR for the point class:
+// point(double initial_x = 0.0, double initial_y = 0.0)
+// Postcondition: The point has been set to (initial_x, initial_y).
+//
+// MODIFICATION MEMBER FUNCTIONS for the point class:
+// void shift(double x_amount, double y_amount)
+// Postcondition: The point has been moved by x_amount along the x axis
+// and by y_amount along the y axis.
+//
+// void rotate90( )
+// Postcondition: The point has been rotated clockwise 90 degrees.
+//
+// CONSTANT MEMBER FUNCTIONS for the point class:
+// double get_x( ) const
+// Postcondition: The value returned is the x coordinate of the point.
+//
+// double get_y( ) const
+// Postcondition: The value returned is the y coordinate of the point.
+//
+// NONMEMBER FUNCTIONS for the point class:
+// double distance(const point& p1, const point& p2)
+// Postcondition: The value returned is the distance between p1 and p2.
+//
+// point middle(const point& p1, const point& p2)
+// Postcondition: The point returned is halfway between p1 and p2.
+//
+// point operator +(const point& p1, const point& p2)
+// Postcondition: The sum of p1 and p2 is returned.
+//
+// bool operator ==(const point& p1, const point& p2)
+// Postcondition: The return value is true if p1 and p2 are identical.
+//
+// bool operator !=(const point& p1, const point& p2)
+// Postcondition: The return value is true if p1 and p2 are not identical.
+//
+// ostream& operator <<(ostream& outs, const point& source)
+// Postcondition: The x and y coordinates of source have been
+// written to outs. The return value is the ostream outs.
+//
+// istream& operator >>(istream& ins, point& target)
+// Postcondition: The x and y coordinates of target have been
+// read from ins. The return value is the istream ins.
+//
+// VALUE SEMANTICS for the point class:
+// Assignments and the copy constructor may be used with point objects.
+
+#ifndef MAIN_SAVITCH_NEWPOINT_H
+#define MAIN_SAVITCH_NEWPOINT_H
+#include <iostream> // Provides ostream and istream
+
+namespace main_savitch_2B
+{
+ class point
+ {
+ public:
+ // CONSTRUCTOR
+ point(double initial_x = 0.0, double initial_y = 0.0);
+ // MODIFICATION MEMBER FUNCTIONS
+ void shift(double x_amount, double y_amount);
+ void rotate90( );
+ // CONSTANT MEMBER FUNCTIONS
+ double get_x( ) const { return x; }
+ double get_y( ) const { return y; }
+ // FRIEND FUNCTION
+ friend std::istream& operator >>(std::istream& ins, point& target);
+ private:
+ double x, y; // x and y coordinates of this point
+ };
+
+ // NONMEMBER FUNCTIONS for the point class
+ double distance(const point& p1, const point& p2);
+ point middle(const point& p1, const point& p2);
+ point operator +(const point& p1, const point& p2);
+ bool operator ==(const point& p1, const point& p2);
+ bool operator !=(const point& p1, const point& p2);
+ std::ostream& operator <<(std::ostream & outs, const point& source);
+}
+
+#endif
|