Java Reference
In-Depth Information
Example 2•1: Rect.java (continued)
**/
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 + "]";
}
}
Testing the Rect Class
Example 2-2 is a standalone program named RectTest that puts the Rect class of
Example 2-1 through its paces. Note the use of the new keyword and the Rect()
constructor to create new Rect objects. The program uses the . operator to invoke
methods of the Rect objects and to access their fields. The test program also relies
implicitly on the toString() method of Rect when it uses the string concatenation
operator ( + ) to create strings to be displayed to the user.
Example 2•2: RectTest.java
package com.davidflanagan.examples.classes;
/** This class demonstrates how you might use the Rect class */
public class RectTest {
public static void main(String[] args) {
Rect r1 = new Rect(1, 1, 4, 4);
// Create Rect objects
Rect r2 = new Rect(2, 3, 5, 6);
Rect u = r1.union(r2);
// Invoke Rect methods
Rect i = r2.intersection(r1);
if (u.isInside(r2.x1, r2.y1)) // Use Rect fields and invoke a method
System.out.println("(" + r2.x1 + "," + r2.y1 +
Search WWH ::




Custom Search