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