shape-polymorphism


문제 정보
check포인트 : 1 (부분 점수)
schedule시간 제한 : 2.0s
storage메모리 제한 : 256M
edit_square출제자:
 
답안 제출

Shape, Line, Rect, Circle 클래스 - 메소드 오버라이딩과 동적 바인딩

문제 설명

다음과 같은 도형 계층 구조를 가진 클래스를 작성하고,
업캐스팅과 메소드 오버라이딩을 이용하여 동적 바인딩이 어떻게 동작하는지 확인하는 프로그램을 작성하시오.

도형은 다음 네 가지 타입을 가진다.

  • Shape (기본 도형)
  • Line
  • Rect
  • Circle

Line, Rect, Circle 클래스는 모두 Shape 클래스를 상속받는다.


클래스 요구 사항

1. Shape 클래스
  • 메소드
    • void draw()
      • 문자열 Shape 를 한 줄에 출력한다.

예)

System.out.println("Shape");

2. Line 클래스
  • 선언
    • class Line extends Shape
  • 메소드
    • void draw()
      • 문자열 Line 을 한 줄에 출력한다.

3. Rect 클래스
  • 선언
    • class Rect extends Shape
  • 메소드
    • void draw()
      • 문자열 Rect 를 한 줄에 출력한다.

4. Circle 클래스
  • 선언
    • class Circle extends Shape
  • 메소드
    • void draw()
      • 문자열 Circle 을 한 줄에 출력한다.

프로그램 동작 (Main 클래스)

Main 클래스의 main 메소드는 다음을 수행한다.

  1. 첫 번째 줄에서 정수 n을 입력받는다. (1 ≤ n ≤ 100)
  2. 두 번째 줄에서 공백으로 구분된 n개의 문자열을 입력받는다.
    각 문자열은 다음 네 값 중 하나이다.
    • "Shape"
    • "Line"
    • "Rect"
    • "Circle"
  3. 크기가 nShape 타입의 배열을 선언한다.
    예) Shape[] arr = new Shape[n];
  4. 입력으로 들어온 각 문자열에 대해
    • "Shape"arr[i] = new Shape();
    • "Line"arr[i] = new Line();
    • "Rect"arr[i] = new Rect();
    • "Circle"arr[i] = new Circle(); 와 같이 객체를 생성하여 배열에 저장한다.
      (업캐스팅이 일어남)
  5. 배열의 앞에서부터 순서대로 각 원소의 draw() 메소드를 호출한다.
    • 각 호출마다 한 줄씩 출력된다.
  6. 출력에는 영어 단어(Shape, Line, Rect, Circle)와 개행 문자만 포함되도록 한다.
    (한글, 기타 문자열은 출력하지 않는다.)

입력 형식

입력은 다음과 같이 주어진다.

n
type1 type2 ... typen
  • n은 도형의 개수 (정수)
  • typeiShape, Line, Rect, Circle 중 하나의 문자열

예)

4
Line Rect Line Circle

출력 형식

n줄을 출력한다.
각 줄에는 해당 위치의 도형이 draw() 호출 시 출력하는 문자열을 출력한다.

예시 입력:

4
Line Rect Line Circle

예시 출력:

Line
Rect
Line
Circle

댓글

현재 작성된 댓글이 없습니다.