Menu
Coddy logo textTech

요약 - 도형 계산기

Coddy C# 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 70개 중 30번째.

challenge icon

챌린지

쉬움

인터페이스와 다형성에 대해 배운 모든 것을 하나로 묶는 도형 계산기를 만들어 보겠습니다. 공통 인터페이스를 통해 서로 다른 도형을 균일하게 처리할 수 있는 시스템을 구축하여 런타임 다형성의 강력함을 실감해 볼 것입니다.

코드는 다음 네 개의 파일로 구성됩니다:

  • 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 클래스를 생성합니다. 사각형은 생성자를 통해 설정되는 WidthHeight 속성(둘 다 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() 결과 출력
    }
}

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