//Point.java // Definition of class Point public class Point { protected int x, y; // coordinates of the Point public Point() {setPoint( 0, 0 ); } // no-argument constructor public Point( int a, int b ) { setPoint( a, b ); } // constructor public void setPoint( int a, int b ) // Set x and y coordinates of Point { x = a; y = b;} public int getX() {return x; } // get x coordinate public int getY() {return y; } // get y coordinate public String toString() { return "[" + x + ", " + y + "]"; } // convert the point into a String representation } // end of Class Point ----------------------------------- //Test.java // to test class Point public class Test { public static void main( String args[] ) { Point p = new Point( 72, 115 ); String output; output = "X coordinate is " + p.getX() + "\nY coordinate is " + p.getY(); p.setPoint( 10, 10 ); // use implicit call to p.toString() output += "\n\nThe new location of p is " + p; System.out.println("Demonstrating Class Point\n" + output); System.exit( 0 ); } // end of main method } // end of Class Test ---------------------------- //Circle.java // Definition of class Circle public class Circle extends Point { // inherits from Point protected double radius; public Circle() // no-argument constructor { // implicit call to superclass constructor setRadius( 0);} public Circle(double r, int a, int b ) // Constructor { super( a, b); // call the superclass constructor setRadius( r);} public void setRadius( double r ) // Set radius of Circle { radius = ( r >= 0.0 ? r : 0.0 ); } public double getRadius() { return radius; } // Get radius of Circle public double area() { return Math.PI * radius * radius; } // Calculate area of Circle public String toString() // convert the Circle to a String {return "Center = " + super.toString() + "; Radius = " + radius;} } // end of class Circle ---------------------------- //Test.java // to test class Circle import java.text.DecimalFormat; public class Test { public static void main( String args[] ) { Circle c = new Circle( 2.5, 37, 43 ); DecimalFormat precision2 = new DecimalFormat( "0.00" ); String output; output = "X coordinate is " + c.getX() + "\nY coordinate is " + c.getY() + "\nRadius is " + c.getRadius(); // getX() and gety() are inherited from class Point, getRadius() and setRadius() are defined in Class Circle c.setRadius(4.25 ); c.setPoint( 2, 2); // setPoint() inherited from class Point output += "\n\nThe new location and radius of c are\n" + c + "\nArea is " + precision2.format( c.area() ); // area() of class Circle System.out.println("Demonstrating Class Circle\n" + output); System.exit(0); } // end of main method } // end of Class Test ------------------------------------ //Cylinder.java // Definition of class Cylinder public class Cylinder extends Circle { protected double height; // height of Cylinder public Cylinder() // No-argument constructor { // implicit call to superclass constructor here setHeight( 0 ); } public Cylinder(double h, double r, int a, int b ) // constructor { super( r, a, b); setHeight( h ); } public void setHeight( double h ) { height = ( h >= 0 ? h : 0 ); } // Set height of Cylinder public double getHeight() { return height; } // Get height of Cylinder
public double area() // Calculate area of Cylinder (i.e., surface area) { return 2 * super.area() + 2 * Math.PI * radius * height;} // this overrides area() in class Circle; area() is class Cylinder defined using area() from base class public double volume() { return super.area() * height; } // Calculate volume of Cylinder using area() method of // class Circle public String toString() {return super.toString() + "; Height = " + height;} // Convert the Cylinder to a String using the toString method of class Circle } // end of Class Cylinder ----------------------------- //Test.java // Application to test class Cylinder import java.text.DecimalFormat; public class Test {public static void main( String args[] ) { Cylinder c = new Cylinder( 5.7, 2.5, 12, 23 ); DecimalFormat precision2 = new DecimalFormat( "0.00" ); String output; output = "X coordinate is " + c.getX() + "\nY coordinate is " + c.getY() + "\nRadius is " + c.getRadius() + "\nHeight is " + c.getHeight(); c.setHeight( 10); c.setRadius(4.25 ); c.setPoint( 2, 2); output += "\n\nThe new location, radius " + "and height of c are\n" + c + "\nArea is " + precision2.format( c.area() ) + "\nVolume is " + precision2.format( c.volume() ); System.out.println("Demonstrating Class Cylinder\n" + output); System.exit(0); } // end of main method } // end of Class Test Revised: November 18, 2008