본문 바로가기

Java/본격 Java 퀴즈 기초

[Java] 도형 그리기 인터페이스

도형을 그리기 위해서는 도형의 색상이 필요하다.

도형 그리기에 알맞는 색상 인터페이스를 만든다.

.

.

package InterfaceDrawable;

public interface Drawable {
	int RED = 1;
	int GREEN  = 2;
	int BLUE = 3;
	int BLACK = 4;
	int WHITE = 5;
	
	public abstract void draw(int color);
}

.

.

인터페이스는 모두 abstract로 선언되어있기 때문에 implements 된 클래스는 인터페이스에 있는 메소드들을 무조건 오버라이딩해야한다.

.

.

Drawable을 implements할 도형 클래스를 만든다

좌표와 크기와 색상을 받는다.

.

.

circle class

package InterfaceDrawable;

public class Circle implements Drawable{
	int x, y;
	double radius;
	String[] colors = {"RED", "GREEN", "BLUE", "BLACK", "WHITE"};
	public Circle(int x, int y, double radius) {
		this.x = x;
		this.y = y;
		this.radius = radius;
	}
	
	public void draw(int color) {
		System.out.printf("( %d, %d) 위치에 반지름  %f, 원의 색깔 %s인 원을 그립니다. \n", x, y, radius, colors[color - 1]);
	}
	
	public double getRadius() { return radius; }
	public int getX() { return x; }
	public int getY() { return y; }
	
}

.

.

Rectangle class

package InterfaceDrawable;

public class Rectangle implements Drawable{
	int x1, x2, y1, y2;
	String[] colors = {"RED", "GREEN", "BLUE", "BLACK", "WHITE"};
	public Rectangle(int x1, int x2, int y1, int y2){
		this.x1 = x1;
		this.x2 = x2;
		this.y1 = y1;
		this.y2 = y2;
	}
	public void draw(int color){
		System.out.printf("왼쪽 위의 좌표가 (%d, %d), 오른쪽 아래의 좌표가 (%d, %d), 원의 색깔이 %s인 사각형은 그립니다. \n", x1, y1, x2, y2, colors[color - 1]);
	}
	public int getX1() { return x1; }
	public int getX2() { return x2; }
	public int getY1() { return y1; }
	public int getY2() { return y2; }
}

.

.

처음에 상위클래스에 있는 상수를 받아오는 법을 몰랐지만

하위클래스에 배열로 같은 위치에 상수 이름들을 만들어서 하면 된다.

.

.

package InterfaceDrawable;

public class TestDrawable {

	public static void main(String[] args) {
		Drawable[] drawables = new Drawable[] {
				new Circle(10, 20, 15),
				new Circle(30, 20, 10),
				new Rectangle(5, 8, 8, 9)};
		
		for(Drawable d : drawables) {
			d.draw(Drawable.RED);
		}
		
	}
	
}

.

.

728x90
반응형