요약 - 도형 계산기
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 49번째.
챌린지
쉬움추상 클래스와 인터페이스를 결합하여 유연한 기하학 도구 모음을 만드는 도형 계산기 시스템을 구축해 보겠습니다. 각 도형이 고유한 계산 방식을 제공하면서도 추상화를 통해 공통된 동작을 공유하는 클래스 계층 구조를 설계하게 됩니다.
코드를 다음 세 개의 파일로 구성합니다:
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 width와double 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.0인Rectangle을 생성합니다. - 이름이
'Circle'이고 반지름이4.0인Circle을 생성합니다. - 각 도형에 대해
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() 호출
}