'폴리모피즘'에 해당되는 글 1건
[05.18] 수업 내용 - 폴리모피즘 :: 2007/05/18 10:28
평소에는 소스 보고 코딩만 했는데, 차라리 오늘같이 자유로 소스를 구현하는 시간이 더 유익한것 같습니다.
다음은 수업시간에 작성한 폴리모피즘을 구현한 소스입니다.
허접하지만 폴리모피즘이 무엇인가 알 수 있는 간단한 소스이니 참고 하세요 ^^
도형 공통 속성 클래스 열기
사각형 클래스 열기
원 클래스 열기
메인 클래스 열기

| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 |
평소에는 소스 보고 코딩만 했는데, 차라리 오늘같이 자유로 소스를 구현하는 시간이 더 유익한것 같습니다.
다음은 수업시간에 작성한 폴리모피즘을 구현한 소스입니다.
허접하지만 폴리모피즘이 무엇인가 알 수 있는 간단한 소스이니 참고 하세요 ^^
도형 공통 속성 클래스 열기
사각형 클래스 열기
// 사각형 관련 클래스
public class Rectangle extends Figure {
private int rWidth, rHeight;
// 인자 : 가로 너비, 세로 너비, x좌표, y좌표, 색깔
public Rectangle(int width, int height, int x, int y, String color) {
super(x, y, color, "사각형");
rWidth = width;
rHeight = height;
}
// Override : 면적을 구한다
public double getDimension() {
fDimension = rWidth * rHeight;
return fDimension;
}
}
원 클래스 열기
// 원 관련 클래스
public class Ellipse extends Figure {
private int eR; // 원의 반지름
// 인자 : 반지름, x좌표, y좌표, 색깔
public Ellipse(int r, int x, int y, String color) {
super(x, y, color, "원");
eR = r;
}
// Override : 면적을 구한다
public double getDimension() {
fDimension = eR * eR * Figure.PI;
return fDimension;
}
}
메인 클래스 열기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class DrawFigure {
// 입력 클래스
public static InputStreamReader isr = new InputStreamReader(System.in);
public static BufferedReader br = new BufferedReader(isr);
public static void main(String[] args) throws IOException {
System.out.print("그릴 도형의 갯수를 입력->");
int drawNum = Integer.parseInt(br.readLine());
System.out.println();
Figure figure[] = new Figure[drawNum]; // 도형 클래스 폴리모피즘
int kindFigure = 0; // 그릴 도형의 종류
int x, y; // 도형의 좌표
String color; // 도형의 색상
for(int i = 0 ; i < figure.length ; i++) {
System.out.printf("[%d번째]%d개의 도형을 입력하세요(1:원, 2:사각형)-> ", i+1, figure.length);
kindFigure = Integer.parseInt(br.readLine());
System.out.println();
System.out.print("도형의 x좌표를 입력하세요->");
x = Integer.parseInt(br.readLine());
System.out.print("도형의 y좌표를 입력하세요->");
y = Integer.parseInt(br.readLine());
System.out.print("도형형의 색깔을 입력하세요->");
color = br.readLine();
if(kindFigure == 1) {
System.out.print("원의 반지름 입력하세요->");
int r = Integer.parseInt(br.readLine());
System.out.println();
figure[i] = new Ellipse(r, x, y, color);
} else if(kindFigure == 2) {
System.out.print("사각형의 가로 길이를 입력하세요->");
int width = Integer.parseInt(br.readLine());
System.out.print("사각형의 세로 길이를 입력하세요->");
int height = Integer.parseInt(br.readLine());
System.out.println();
figure[i] = new Rectangle(width, height, x, y, color);
} else {
System.out.println("숫자를 다시 입력하세요");
System.out.println();
i--;
continue;
}
}
for(Figure f : figure)
f.drawFigure(); // 도형 그리기!!
}
}