/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package patternjavaimplementation;



public class Shape {
	public Shape() {
	}
    public static void main(String[] args) {
        ShapeFactory sf = new ShapeFactory();
        sf.getInfo("square",5);

        sf.getInfo("circle",5);
    }
}
class Circle extends Shape{
    public Circle(double r){
         System.out.println("Circle");
        System.out.println("Area:"+area(r));
        System.out.println("perimeter:"+perimeter(r));
    }

    public double area(double r) {
        return (Math.PI*r*r);
    }
    public double perimeter(double r) {
        return (2*Math.PI*r);
    }


}

class ShapeFactory {

    public static Shape getInfo(String shape,double r) {
        if (shape.equalsIgnoreCase("circle")){
            return new Circle(r);
        }
        else if(shape.equalsIgnoreCase("square")){
            return new Square(r);
        }
        else{
            return null;
        }
    }

}
class Square extends Shape{
    public Square(double w){
        System.out.println("Square");
        System.out.println("Area:"+area(w));
        System.out.println("perimeter:"+perimeter(w));
    }
    public  double area(double w) {
        return(w*w);
    }
    public double perimeter(double w) {
        return (4*w);
    }
}
