Menu
Coddy logo textTech

Circle 클래스

Coddy Lua 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 70개 중 57번째.

challenge icon

챌린지

쉬움

이전 레슨에서 만든 Rectangle 클래스와 함께 Circle 클래스를 추가하여 Shape Manager를 계속 구축해 보겠습니다.

도형들을 체계적으로 관리하기 위해 네 개의 파일을 사용하게 됩니다:

  • Shape.lua: :new(name):getName()을 가진 기본 Shape 클래스입니다.
  • Rectangle.lua: :getArea()를 가진 이전 챌린지의 Rectangle 클래스입니다.
  • Circle.lua: Shape를 상속받는 Circle 클래스를 만듭니다. 생성자는 radius를 인자로 받아야 하며, 부모 생성자를 "Circle"이라는 이름으로 호출하고 radius를 저장해야 합니다. πr² 공식을 사용하여 원의 넓이를 계산하는 :getArea() 메서드를 추가하세요. π 값으로는 math.pi를 사용하세요.
  • main.lua: Rectangle과 Circle 모듈을 모두 require 하세요. 입력에서 사각형의 너비, 사각형의 높이, 원의 반지름이라는 세 가지 값을 읽습니다. 각 도형의 인스턴스를 하나씩 생성하고 사각형의 이름, 사각형의 넓이, 원의 이름, 원의 넓이라는 네 줄을 출력하세요.

이제 두 도형 모두 상속을 통해 동일한 인터페이스를 공유합니다. 각 도형은 Shape로부터 물려받은 :getName() 메서드와 각자 구현한 :getArea() 메서드를 가집니다. 이러한 공통 인터페이스는 다음 레슨에서 유용하게 사용될 것입니다.

입력: 세 줄 — 너비 (숫자), 높이 (숫자), 반지름 (숫자).

출력: 네 줄 — 사각형의 이름, 사각형의 넓이, 원의 이름, 원의 넓이.

직접 해보기

-- Rectangle 모듈을 불러옵니다
local Rectangle = require('Rectangle')

-- Circle 모듈을 불러옵니다
-- TODO: 여기서 Circle 모듈을 불러오세요

-- 입력으로부터 너비와 높이를 읽어옵니다
local width = tonumber(io.read())
local height = tonumber(io.read())

-- TODO: 입력으로부터 반지름을 읽어옵니다

-- 주어진 치수로 새로운 Rectangle 인스턴스를 생성합니다
local rect = Rectangle:new(width, height)

-- TODO: 주어진 반지름으로 새로운 Circle 인스턴스를 생성합니다

-- 사각형의 이름과 면적을 출력합니다
print(rect:getName())
print(rect:getArea())

-- TODO: 원의 이름과 면적을 출력합니다

Object Oriented Programming의 모든 레슨