Menu
Coddy logo textTech

요약 - 도형 계산기

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

challenge icon

챌린지

쉬움

이 장에서 배운 모든 인터페이스 개념을 통합하는 도형 계산기를 만들어 보겠습니다. 서로 다른 기하학적 도형을 공통 인터페이스를 통해 일관되게 처리하는 시스템을 구축하여 Go 언어의 다형성이 가진 강력함을 경험해 보게 될 것입니다.

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

  • shape.go: Area() float64Perimeter() float64라는 두 개의 메서드를 가진 Shape 인터페이스를 정의합니다. 또한 임의의 Shape를 인자로 받아 면적과 둘레를 모두 보여주는 형식화된 문자열을 반환하는 DescribeShape 함수를 만듭니다.
  • shapes.go: Shape 인터페이스를 구현하는 두 개의 구조체를 만듭니다:
    • WidthHeight 필드를 가진 Rectangle
    • Radius 필드를 가진 Circle
    각 구조체는 Area()Perimeter() 메서드를 모두 구현해야 하며, 도형에 대한 읽기 쉬운 설명을 반환하는 String() 메서드(fmt.Stringer 인터페이스 구현)도 추가해야 합니다.
  • main.go: 입력으로부터 도형 데이터를 읽고, 적절한 도형을 생성한 후, DescribeShape 함수를 사용하여 각 도형의 정보를 표시합니다. 또한 Stringer 인터페이스를 확인하기 위해 각 도형을 직접 출력합니다.

다음과 같은 입력이 제공됩니다:

  • 1행: 사각형의 너비 (float)
  • 2행: 사각형의 높이 (float)
  • 3행: 원의 반지름 (float)

계산 시 pi 값으로 3.14159를 사용하세요. 원의 둘레는 2 * pi * radius입니다.

String() 메서드는 다음을 반환해야 합니다:

  • Rectangle: "Rectangle(%.2f x %.2f)"
  • Circle: "Circle(Radius: %.2f)"

DescribeShape 함수는 다음을 반환해야 합니다:

Area: %.2f, Perimeter: %.2f

모든 float 값은 %.2f를 사용하여 소수점 둘째 자리까지 표시하세요.

예를 들어, 4, 3, 5가 입력되면 출력은 다음과 같아야 합니다:

Rectangle(4.00 x 3.00)
Area: 12.00, Perimeter: 14.00
Circle(Radius: 5.00)
Area: 78.54, Perimeter: 31.42

각 도형을 먼저 출력(String() 메서드 사용)한 다음, DescribeShape의 설명을 출력하세요. 사각형을 먼저 처리하고 그 다음에 원을 처리합니다.

직접 해보기

package main

import (
	"fmt"
)

func main() {
	// 입력 값 읽기
	var width, height, radius float64
	fmt.Scanln(&width)
	fmt.Scanln(&height)
	fmt.Scanln(&radius)

	// TODO: 주어진 너비와 높이로 Rectangle 생성

	// TODO: 주어진 반지름으로 Circle 생성

	// TODO: 사각형 출력 (String() 메서드 사용)
	// TODO: DescribeShape()를 사용하여 사각형의 설명 출력

	// TODO: 원 출력 (String() 메서드 사용)
	// TODO: DescribeShape()를 사용하여 원의 설명 출력
}

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