public abstract class AbstractShape implements Shape

{
    public abstract double area( );
    public abstract double perimeter( );
 
    public int compareTo( Object rhs ) {
        double diff = area( ) - ((Shape)rhs).area( );
        if( diff == 0 )
            return 0;
        else if( diff < 0 )
            return -1;
        else
            return 1;
    }
   
    public double semiPerimeter( ) {
        return perimeter( ) / 2; 
    }
}