/*
 * Circle.java
 *
 * Created 10/30/06
 * Last modified 10/30/06
 */

package chapter9;

/**
 * This class is a subclass of the GeometricObject superclass
 * defined in Chapter 9 of Liang, Introduction to Java
 * Programming: Fundamentals First, 6th edition. Some comments
 * have been modified.
 */
public class Circle extends GeometricObject {

    // ---------------------------------------------------------------------
    // Instance variables (data fields)...

    private double radius;

    // ---------------------------------------------------------------------
    // Constructor(s)...

    public Circle() {
        System.out.println ("Enter Circle default constructor");
        System.out.println ("Exit Circle default constructor");
    }
    
    public Circle (double radius) {
        System.out.println ("Enter Circle 1-arg constructor");
        System.out.println ("Exit Circle 1-arg constructor");
        this.radius = radius;
    }
    
    // ---------------------------------------------------------------------
    // Methods ("getters", "setters", and others...)

    public double getRadius() {
        return radius;
    }
    
    public void setRadius (double radius) {
        this.radius = radius;
    }
    
    public double getArea() {
        return radius * radius * Math.PI;
    }
    
    public double getDiameter() {
        return 2 * radius;
    }
    
    public double getPerimeter() {
        return 2 * radius * Math.PI;
    }
    
    public void printCircle() {
        System.out.println ("The circle is created " + getDateCreated() +
                " and the radius is " + radius);
    }
    
    /** This main() method serves as a test facility for creating
     * Circle objects and exercising their methods.
     */
    public static void main (String [] args) {

        Circle circle = new Circle(1.0);    // Creates Circle with radius 1

        // The following methods are "inherited" from GeometricObject...
        
        System.out.println ("A circle " + circle.toString());
        System.out.println ("The color is " + circle.getColor());
        System.out.println ("The circle is " + 
                (circle.isFilled() ? "filled" : "not filled"));

        // The following methods are defined only in the subclass Circle...

        System.out.println ("The radius is " + circle.getRadius());
        System.out.println ("The diameter is " + circle.getDiameter());
        System.out.println ("The area is " + circle.getArea());
        System.out.println ("The perimeter is " + circle.getPerimeter());
    }

}   // End of Cirlce class definition
