도형을 그리기 위해서는 도형의 색상이 필요하다.
도형 그리기에 알맞는 색상 인터페이스를 만든다.
.
.
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
반응형
'Java > 본격 Java 퀴즈 기초' 카테고리의 다른 글
[Java] 도형의 성질을 이용하여 크기 조절하기(인터페이스) (0) | 2020.07.13 |
---|---|
[Java] 점과 원 위치 이동하는 절차 인터페이스로 만들기 (0) | 2020.07.13 |
[Java] 원과 직사각형 추상클래스로 상속받아 구현하기 (0) | 2020.07.13 |
[Java] 동물 추상클래스로 상속받아 구현하기 (0) | 2020.07.10 |
[Java] 학생과 직장인 정보 표시하기(abstract 클래스 구현) (0) | 2020.07.10 |