// Shape
package ch09_quiz;
/*
 * Shape interface 를 상속받은 Rectangle(사각형), Circle(원) class 를 정의하고,
 * ShapeTest class 에서 Shape 변수를 사용해서 다형성을 구현한 코드를 작성하세요
 */

public interface Shape {
	public double area(); // 도형 넓이 계산
	public void drawing(); // 도형 그리기
   
}
--------------------------------------------------------------------------------

// Rectangle
package ch09_quiz;

public class Rectangle implements Shape{
	
	private double	width; // 가로 길이
	private double length; // 세로 길이 
	
	// 생성자 생성.
	public Rectangle(double width, double length) {
		this.width = width;
		this.length = length;
	}

	@Shape_Override 
	public double area() { 
		return width * length ;
	}

	@Shape_Override
	public void drawing() {
		System.out.println('ㅁ');
	}
	
}
--------------------------------------------------------------------------------

// Circle
package ch09_quiz;

public class Circle implements Shape{
	
	private double radius; 
	
	public Circle(double radius) {
		this.radius = radius;
	}
	
	@Override
	public double area() {
		return (3.1415926536)*radius*radius;
	}

	@Override
	public void drawing() {
		System.out.println('O');
	}

}
--------------------------------------------------------------------------------

// ShapeTest == main
package ch09_quiz;
import java.util.Scanner;

public class ShapeTest {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Shape sp = null;
		System.out.print("도형 타입을 입력해주세요. 1.사각형 2.원 > ");
		int type = sc.nextInt();
		switch(type) {
		case 1:
			System.out.print("가로길이를 입력해 주세요 > ");
			double width = sc.nextDouble();
			System.out.print("세로길이를 입력해 주세요 > ");
			double length = sc.nextDouble();
			sp = new Rectangle(width, length); // sp 부모 객체에 Rectangle 자식 개체 대입.
			System.out.println("사각형 넓이 : " + sp.area());
			break;
		case 2:
			System.out.print("반지름을 입력해 주세요 > ");
			double radius = sc.nextDouble();
			sp = new Circle(radius);           // sp 부모 객체에 Rectangle 자식 개체 대입.
			System.out.println("원 넓이 : " + sp.area());
			break;
		default:
			System.out.println("도형 선택 오류.");
		}
		
		if(sp != null) {
			sp.drawing();
		}
		sc.close();
	}
	
}