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: 이전 챌린지에서 만든 Rectangle 클래스이며 :getArea()를 포함합니다.
  • Circle.lua: Shape를 상속하는 Circle 클래스를 만드세요. 생성자는 radius를 인수로 받아야 하며, 이름 "Circle"과 함께 parent 생성자를 호출하고 반지름을 저장해야 합니다. 원의 넓이를 πr² 공식으로 계산하는 :getArea() 메서드를 추가하세요. π의 값에는 math.pi를 사용하세요.
  • main.lua: Rectangle 및 Circle 모듈을 모두 Require하세요. 입력에서 세 값을 읽으세요: 직사각형의 width, 직사각형의 height, 원의 radius입니다. 각 도형의 instance를 하나씩 만들고 네 줄을 출력하세요: 직사각형의 이름, 직사각형의 넓이, 원의 이름, 원의 넓이입니다.

이제 두 도형은 inheritance를 통해 동일한 interface를 공유합니다. 각각 Shape에서 가져온 :getName() method와 고유한 :getArea() 구현을 가집니다. 이 공통 interface는 다음 레슨에서 유용하게 사용됩니다.

입력: 세 줄: width(number), height(number), radius(number)입니다.

출력: 네 줄: rectangle의 이름, rectangle의 넓이, circle의 이름, circle의 넓이입니다.

직접 해보기

-- 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)의 모든 레슨

직접 연습해 보세요: 온라인 Lua 컴파일러