요약 - 도형 계산기
Coddy C# 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 70개 중 30번째.
챌린지
쉬움인터페이스와 다형성에 대해 배운 모든 것을 하나로 묶는 도형 계산기를 만들어 보겠습니다. 공통 인터페이스를 통해 서로 다른 도형을 균일하게 처리할 수 있는 시스템을 구축하여 런타임 다형성의 강력함을 실감해 볼 것입니다.
코드는 다음 네 개의 파일로 구성됩니다:
IShape.cs:Shapes네임스페이스 내에IShape라는 인터페이스를 정의합니다. 모든 도형은 자신의 면적을 계산하고 자신을 설명할 수 있어야 합니다. 두 개의 메서드를 선언하세요:double을 반환하는CalculateArea()와string을 반환하는GetDescription()입니다.Circle.cs:Shapes네임스페이스 내에IShape를 구현하는Circle클래스를 생성합니다. 원은 생성자를 통해 설정되는Radius속성(double)을 가집니다. 면적 공식은Math.PI * Radius * Radius입니다. 설명(description)은"Circle with radius {Radius}"를 반환해야 합니다.Rectangle.cs:Shapes네임스페이스 내에IShape를 구현하는Rectangle클래스를 생성합니다. 사각형은 생성자를 통해 설정되는Width와Height속성(둘 다 double)을 가집니다. 면적은 단순히 너비 곱하기 높이입니다. 설명은"Rectangle {Width}x{Height}"를 반환해야 합니다.Program.cs: 메인 파일에서 입력값을 사용하여 원과 사각형을 생성한 다음, 이를IShape참조 배열에 저장합니다. 배열을 루프(loop)로 돌면서 각 도형에 대해 설명을 출력하고, 이어서 소수점 둘째 자리까지 반올림한 면적을 출력합니다. 이는 동일한 인터페이스를 통해 완전히 다른 도형들을 어떻게 처리할 수 있는지 보여줍니다!
세 개의 입력을 받게 됩니다:
- 원의 반지름 (double)
- 사각형의 너비 (double)
- 사각형의 높이 (double)
각 도형에 대해 다음 형식으로 출력을 프린트하세요:
{GetDescription() result}
Area: {CalculateArea() rounded to 2 decimal places}예를 들어, 입력값이 5, 4, 6이라면 출력은 다음과 같아야 합니다:
Circle with radius 5
Area: 78.54
Rectangle 4x6
Area: 24.00루프가 원인지 사각형인지 알 필요가 없다는 점에 주목하세요. 단순히 인터페이스 메서드를 호출하면 다형성이 나머지를 처리합니다. 이것이 바로 인터페이스 기반 프로그래밍의 우아함입니다!
직접 해보기
using System;
using Shapes;
class Program
{
public static void Main(string[] args)
{
// 입력 값 읽기
double circleRadius = Convert.ToDouble(Console.ReadLine());
double rectWidth = Convert.ToDouble(Console.ReadLine());
double rectHeight = Convert.ToDouble(Console.ReadLine());
// TODO: 주어진 반지름으로 Circle 객체 생성
// TODO: 주어진 너비와 높이로 Rectangle 객체 생성
// TODO: 두 도형을 포함하는 IShape 배열 생성
// TODO: 배열을 순회하며 각 도형에 대해 다음을 수행:
// - GetDescription()을 사용하여 설명 출력
// - "Area: "와 소수점 둘째 자리까지 반올림한 CalculateArea() 결과 출력
}
}