abstract class Shape { public abstract double getArea( ); public abstract double getPerimeter( ); public double getSemiPerimeter( ) { return getPerimeter( ) / 2.0; } } class Square extends Shape { public Square( double s ) { side = s; } public double getArea( ) { return side * side; } public double getPerimeter( ) { return 4 * side; } public String toString( ) { return "Square with side " + side; } private double side; } class Rectangle extends Shape { public Rectangle( double len, double wid ) { length = len; width = wid; } public double getArea( ) { return length * width; } public double getPerimeter( ) { return 2 * ( length + width ); } public String toString( ) { return "Rectangle with dimensions " + length + "*" + width; } private double length; private double width; } class Circle extends Shape { public static final double PI = 3.14; public Circle( double r ) { radius = r; } public double getPerimeter( ) { return 2 * PI * radius; } public double getArea( ) { return PI * radius * radius; } public String toString( ) { return "Circle with radius " + radius; } private double radius; } public class Day07 { public static void printArray( String msg, Object [ ] arr ) { System.out.println( msg ); for( int i = 0; i < arr.length; i++ ) System.out.println( "arr[" + i + "]=" + arr[ i ] ); } public static double totalArea( Shape [ ] arr ) { double total = 0.0; for( Shape s : arr ) total += s.getArea( ); return total; } public static void main( String [ ] args ) { Square [ ] arr1 = { new Square( 3 ), new Square( 4 ) }; printArray( "arr1:", arr1 ); System.out.println( "Total area: " + totalArea( arr1 ) ); Circle [ ] arr2 = { new Circle( 1 ), new Circle( 2 ) }; printArray( "arr2: ", arr2 ); System.out.println( "Total area: " + totalArea( arr2 ) ); Rectangle [ ] arr3 = { new Rectangle( 1, 4 ), new Rectangle( 2, 5 ) }; printArray( "arr3: ", arr3 ); System.out.println( "Total area: " + totalArea( arr3 ) ); Shape [ ] arr4 = { new Circle( 1 ), new Square( 1 ), new Rectangle( 3, 4 ) }; printArray( "arr4: ", arr4 ); System.out.println( "Total area: " + totalArea( arr4 ) ); } }