2.1 A Rectangle Class

Example 2-1 shows a class that represents a rectangle. Each instance of this Rect class has four fields, x1, y1, x2, and y2, that define the coordinates of the corners of the rectangle. The Rect class also defines a number of methods that operate on those coordinates.

Note the toString( ) method. This method overrides the toString( ) method of java.lang.Object, which is the implicit superclass of the Rect class. toString( ) produces a String that represents a Rect object. As you'll see, this method is quite useful for printing out Rect values.

Example 2-1. Rect.java
package je3.classes; /**  * This class represents a rectangle.  Its fields represent the coordinates  * of the corners of the rectangle.  Its methods define operations that can  * be performed on Rect objects.  **/ public class Rect {     // These are the data fields of the class     public int x1, y1, x2, y2;     /**      * The is the main constructor for the class.  It simply uses its arguments      * to initialize each of the fields of the new object.  Note that it has      * the same name as the class, and that it has no return value declared in      * its signature.      **/     public Rect(int x1, int y1, int x2, int y2) {         this.x1 = x1;         this.y1 = y1;         this.x2 = x2;         this.y2 = y2;     }     /**      * This is another constructor.  It defines itself in terms of the above      **/     public Rect(int width, int height) { this(0, 0, width, height); }          /** This is yet another constructor. */     public Rect( ) { this(0, 0, 0, 0); }     /** Move the rectangle by the specified amounts */     public void move(int deltax, int deltay) {         x1 += deltax; x2 += deltax;         y1 += deltay; y2 += deltay;     }     /** Test whether the specified point is inside the rectangle */     public boolean isInside(int x, int y) {         return ((x >= x1)&& (x <= x2)&& (y >= y1)&& (y <= y2));     }     /**       * Return the union of this rectangle with another.  I.e. return the       * smallest rectangle that includes them both.      **/     public Rect union(Rect r) {         return new Rect((this.x1 < r.x1) ? this.x1 : r.x1,                         (this.y1 < r.y1) ? this.y1 : r.y1,                         (this.x2 > r.x2) ? this.x2 : r.x2,                         (this.y2 > r.y2) ? this.y2 : r.y2);     }          /**       * Return the intersection of this rectangle with another.       * I.e. return their overlap.      **/     public Rect intersection(Rect r) {         Rect result =  new Rect((this.x1 > r.x1) ? this.x1 : r.x1,                                 (this.y1 > r.y1) ? this.y1 : r.y1,                                 (this.x2 < r.x2) ? this.x2 : r.x2,                                 (this.y2 < r.y2) ? this.y2 : r.y2);         if (result.x1 > result.x2) { result.x1 = result.x2 = 0; }         if (result.y1 > result.y2) { result.y1 = result.y2 = 0; }         return result;     }     /**      * This is a method of our superclass, Object.  We override it so that      * Rect objects can be meaningfully converted to strings, can be       * concatenated to strings with the + operator, and can be passed to       * methods like System.out.println( )      **/     public String toString( ) {         return "[" + x1 + "," + y1 + "; " + x2 + "," + y2 + "]";     } }


Java Examples in a Nutshell
Java Examples in a Nutshell, 3rd Edition
ISBN: 0596006209
EAN: 2147483647
Year: 2003
Pages: 285

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net