Menu
Coddy logo textTech

요약 - 도형 계산기

Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 49번째.

challenge icon

챌린지

쉬움

추상 클래스와 인터페이스를 결합하여 유연한 기하학 도구 모음을 만드는 도형 계산기 시스템을 구축해 보겠습니다. 각 도형이 고유한 계산 방식을 제공하면서도 추상화를 통해 공통된 동작을 공유하는 클래스 계층 구조를 설계하게 됩니다.

코드를 다음 세 개의 파일로 구성합니다:

  • shape.dart: 여기에 추상 기본 클래스와 인터페이스를 정의합니다:
    • String name 속성과 생성자를 가진 추상 클래스 Shape를 만듭니다. 추상 메서드 double calculateArea()double calculatePerimeter()를 포함하세요. '$name - Area: ${calculateArea()}, Perimeter: ${calculatePerimeter()}'를 출력하는 일반 메서드 describe()를 추가합니다.
    • 'Drawing shape...'를 출력하는 draw() 메서드를 가진 Drawable 클래스를 만듭니다.
  • shapes.dart: shape.dart를 임포트하고 구체적인 도형 클래스들을 생성합니다:
    • Shape를 상속받고 Drawable을 구현하는 Rectangle 클래스를 만듭니다. double widthdouble height 속성을 추가하세요. 넓이는 width * height로, 둘레는 2 * (width + height)로 계산합니다. draw() 메서드는 'Drawing rectangle ${width}x$height'를 출력해야 합니다.
    • Shape를 상속받고 Drawable을 구현하는 Circle 클래스를 만듭니다. double radius 속성을 추가하세요. 파이(pi) 값으로 3.14159를 사용합니다. 넓이는 pi * radius * radius로, 둘레(원주)는 2 * pi * radius로 계산합니다. draw() 메서드는 'Drawing circle with radius $radius'를 출력해야 합니다.
  • main.dart: shapes.dart를 임포트하고 도형 계산기를 시연합니다:
    • 이름이 'Rectangle'이고 너비가 5.0, 높이가 3.0Rectangle을 생성합니다.
    • 이름이 'Circle'이고 반지름이 4.0Circle을 생성합니다.
    • 각 도형에 대해 draw()를 호출한 다음 describe()를 호출합니다.
    • 두 도형 사이에 빈 줄을 하나 출력합니다.

이 챌린지는 추상 클래스가 어떻게 공유된 구조(모든 도형은 넓이와 둘레 계산 기능이 있음)를 정의하는지, 그리고 인터페이스가 어떻게 추가적인 기능(그릴 수 있는 도형)을 더하는지 보여줍니다. 각 구체 클래스는 핵심 정체성을 위해 추상 클래스를 상속받고, 추가 기능을 위해 인터페이스를 구현합니다.

예상 출력:

Drawing rectangle 5.0x3.0
Rectangle - Area: 15.0, Perimeter: 16.0

Drawing circle with radius 4.0
Circle - Area: 50.26544, Perimeter: 25.13272

직접 해보기

import 'shapes.dart';

void main() {
  // TODO: 너비 5.0, 높이 3.0인 'Rectangle'이라는 이름의 Rectangle 생성
  
  // TODO: 반지름 4.0인 'Circle'이라는 이름의 Circle 생성
  
  // TODO: rectangle에 대해 draw()를 호출한 다음 describe() 호출
  
  // TODO: 빈 줄 출력
  
  // TODO: circle에 대해 draw()를 호출한 다음 describe() 호출
}

객체 지향 프로그래밍의 모든 레슨