Circle 클래스
Coddy Lua 여정의 객체 지향 프로그래밍 (Object Oriented Programming) 섹션에 포함된 레슨. 70개 중 57번째.
챌린지
쉬움이전 레슨에서 만든 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 컴파일러