IT/솔루션) Power Java

Power JAVA 10장 ) 인터페이스와 다형성 - Programming_5

돔찌 2019. 5. 12. 18:00

<2016. 10. 11. 12:32>

 

Power JAVA 10장 ) 인터페이스와 다형성 - Programming_5

 

=============Shape.java(슈퍼클래스)===================
/* 
 * 도형에 관한 클래스를 다형성을 이용하여서 작성하여 보자.
 * 이 프로그램에서는 사각형이나 삼각형과 같은 많은 종류의 도형을 사용한다.
 * 먼저 Shape이라는 수퍼 클래스를 작성한다. Shape은 모든 도형의 공통된 연산을 정의한다.
 * 예를 들어서 도형의 면적을 반환하는 calcArea()와 같은 메소드를 정의한다.
 * Shape을 상속받는 모든 도형들은 특정한 도형의 면적을 계산하여서 calcArea()를 통하여 반환한다.
 */
package Programming_5;
public class Shape {
	String color;
	double area;
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public double calcArea(Shape object) {
		double area = 0;
		if(object instanceof Rectangle) {
			double a = ((Rectangle)object).getLength();
			double b = ((Rectangle)object).getWidth();
			area = a*b;
		} else if(object instanceof Triangle) {
			double a = ((Triangle)object).getBase();
			double b = ((Triangle)object).getHeight();
			area = (a*b)/2;
		}
		return area;
	}
	;
	public String toString() {
		return color + "," + area;
	}
}
class Rectangle extends Shape {
	private double length = 5;
	private double width = 5;
	public double getLength() {
		return length;
	}
	public void setLength(double length) {
		this.length = length;
	}
	public double getWidth() {
		return width;
	}
	public void setWidth(double width) {
		this.width = width;
	}
	public String toString() {
		return color + "," + area;
	}
}
class Triangle extends Shape {
	private double base = 5;
	private double height= 5;
	public double getBase() {
		return base;
	}
	public void setBase(double base) {
		this.base = base;
	}
	public double getHeight() {
		return height;
	}
	public void setHeight(double height) {
		this.height = height;
	}
	public String toString() {
		return color + "," + area;
	}
}
============ShapeTest.java=============
package Programming_5;
public class ShapeTest {
	public static void main(String[] args) {
		Shape myshape1;
		Shape myshape2;
		myshape1 = new Rectangle();
		System.out.println(myshape1.calcArea(myshape1));
		myshape2 = new Triangle();
		System.out.println(myshape2.calcArea(myshape2));
	}
}