Sample Java code from Weiss textbook handout #28 abstract public class Shape implements Comparable { abstract public double area( ); public Shape( String shapeName ) { name = shapeName; } final public int compareTo( Object rhs ) { double difference = area( ) - ((Shape)rhs).area( ); if (difference < 0) return -1; else if (difference == 0) return 0; else // difference > 0 return 1; } final public String toString( ) { return name + " of area " + area( ); } private String name; } ---------------------------------------------------------------------- public class Circle extends Shape { public Circle( double r ) { super( "circle" ); radius = r; } public double area( ) { return Math.PI * radius * radius; } private double radius; } ---------------------------------------------------------------------- public class Rectangle extends Shape { public Rectangle( double len, double wid ) { super( "rectangle" ); length = len; width = wid; } public double area( ) { return length * width; } private double length; private double width; } public class Square extends Rectangle { public Square( double side ) { super( side, side ); } } ---------------------------------------------------------------------- import java.util.*; public class WeissTest { public static void main(String[] args) { Shape[] test = {new Square(12), new Rectangle(15, 3.2), new Circle(8.4), new Circle(1.5), new Square(8.7), new Rectangle(7.2, 3.2), new Square(2.4), new Circle(3.7), new Circle(7.9)}; for (int i = 0; i < test.length; i++) System.out.println(test[i]); System.out.println(); Arrays.sort(test); for (int i = 0; i < test.length; i++) System.out.println(test[i]); } } ---------------------------------------------------------------------- rectangle of area 144.0 rectangle of area 48.0 circle of area 221.6707776372958 circle of area 7.0685834705770345 rectangle of area 75.68999999999998 rectangle of area 23.040000000000003 rectangle of area 5.76 circle of area 43.00840342764427 circle of area 196.066797510539 rectangle of area 5.76 circle of area 7.0685834705770345 rectangle of area 23.040000000000003 circle of area 43.00840342764427 rectangle of area 48.0 rectangle of area 75.68999999999998 rectangle of area 144.0 circle of area 196.066797510539 circle of area 221.6707776372958
Stuart Reges
Last modified: Wed May 25 17:15:23 PDT 2005