Circle 클래스
Coddy Lua 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 70개 중 57번째.
챌린지
쉬움이전 레슨에서 만든 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: 원의 이름과 면적을 출력합니다