// Point.java // Definition of class Point public class Point { private double x, y; // coordinates of the Point public Point( double a, double b ) { setPoint( a, b ); } public void setPoint( double a, double b ) { x = a; y = b; } public double getX() { return x; } public double getY() { return y; } public String toString() { return "[" + x + ", " + y + "]"; } public String getName() { return "Point"; } } ========== // Square.java // Definition of class Square public class Square { private double side; private Point p; // composition public Square() { this( 0.0, 0.0, 0.0 ); } public Square( double s, double a, double b ) { p = new Point( a, b ); // instantiate point object setSide( s ); } public void setSide( double s ) { side = ( s >= 0 ? s : 0 ); } public double getSide() { return side; } public double area() { return Math.pow( side, 2 ); } public String toString() { return "Corner = " + p.toString() + "; Side = " + side; } public String getName() { return "Square"; } public String getPointName() { return p.getName(); } public String getPointString() { return p.toString(); } } ============== // Cube.java // Definition of class Cube public class Cube { private double depth; private Square s; // composition public Cube( double m, double a, double b ) { s = new Square( m, a, b ); depth = m; } public double getDepth() { return depth; } public double area() { return s.area() * 6; } public double volume() { return s.area() * depth; } public String toString() { return s.toString() + "; Depth = " + depth; } public String getName() { return "Cube"; } public double getSquareArea() { return s.area(); } public String getSquareName() { return s.getName(); } public String getSquareString() { return s.toString(); } public String getSPointString() { return s.getPointString(); } public String getSPointName() { return s.getPointName(); } } ================= // Test.java // Driver for point, square, cube composition program import javax.swing.*; public class Test { public static void main( String args[] ) { Cube cube = new Cube( 3.3, 10, 10 ); String result = ""; result += cube.getSPointName() + ": " + cube.getSPointString(); result += "\n" + cube.getSquareName() + ": " + cube.getSquareString(); result += "\n" + cube.getName() + ": " + cube.toString(); result += "\n" + cube.getSPointName() + ": " + cube.getSPointString(); result += "\n" + cube.getSquareName() + ": " + cube.getSquareString(); result += "\n" + "Area = " + cube.getSquareArea(); result += "\n" + cube.getName() + ": " + cube.toString(); result += "\n" + "Area = " + cube.area(); result += "\n" + "Volume = " + cube.volume(); JOptionPane.showMessageDialog( null, result, "Shapes", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } }