abstract class Shape { abstract public double getArea( ); abstract public double getPerimeter( ); public double semiPerimeter( ) { return getPerimeter( ) / 2.0; } } class Circle extends Shape { public Circle( double r ) { radius = r; } public String toString( ) { return "Circle " + radius; } public double getArea( ) { return 3.14 * radius * radius; } public double getPerimeter( ) { return 2 * 3.14 * radius; } private double radius; } class Square extends Shape { public Square( double s ) { side = s; } public String toString( ) { return "Square " + side; } public double getPerimeter( ) { return 4 * side; } public double getArea( ) { return side * side; } private double side; } class Rectangle extends Shape { public Rectangle( double len, double wid ) { length = len; width = wid; } public double getPerimeter( ) { return 2 * ( length + width ); } public String toString( ) { return "Rectangle " + length + "*" + width; } public double getArea( ) { return length * width; } private double length; private double width; } public class Day4a { public static void printArray( Object [ ] arr ) { for( int i = 0; i < arr.length; i++ ) System.out.println( "arr[" + i + "]=" + arr[ i ].toString( ) ); } public static double totalArea( Shape [ ] arr ) { double sum = 0.0; for( Shape s : arr ) sum += s.getArea( ); return sum; } public static void main( String [ ] args ) { Shape [ ] arr = { new Circle( 2 ), new Square( 1 ), new Circle( 3 ), new Rectangle( 3, 5 ), new Rectangle( 4, 7 ), new Square( 2 ), new Circle( 1 ), new Square( 3 ) }; printArray( arr ); System.out.println( "Total of area is: " + totalArea( arr ) ); } }