요약 - 도형 계층 구조
Coddy Lua 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 70개 중 36번째.
챌린지
쉬움처음부터 완전한 도형 계층 구조를 만들어 봅시다! 모든 도형이 상속받는 Shape 부모 클래스를 만든 다음, 공통 기능을 공유하면서 각자 고유한 속성을 가진 Circle 및 Square 자식 클래스를 구축하게 됩니다.
코드는 네 개의 파일로 구성됩니다:
Shape.lua: 모든 도형이 상속받을 기본 클래스입니다. 도형의 색상을 저장하는:new(color)생성자와 이를 반환하는:getColor()메서드가 있어야 합니다. 이 공유 속성은 원이든 사각형이든 모든 도형이 색상을 갖게 됨을 의미합니다.Circle.lua: Shape를 상속받는 자식 클래스입니다.:new(color, radius)생성자는 색상 처리를 위해 부모 생성자를 호출한 다음, 반지름을 고유 속성으로 추가해야 합니다. 원의 상세 정보를 출력하는:describe()메서드를 포함하세요.Square.lua: Shape를 상속받는 또 다른 자식 클래스입니다.:new(color, side)생성자 역시 부모 생성자를 호출한 다음, 변의 길이를 저장해야 합니다. 사각형을 위한:describe()메서드도 포함하세요.main.lua: 두 도형의 인스턴스를 생성하고, 고유한 속성을 유지하면서 Shape로부터 올바르게 상속받는지 입증하여 모든 것을 하나로 합칩니다.
두 개의 입력을 받게 됩니다:
- 원 데이터: 쉼표로 구분된 색상과 반지름 (예:
blue,5) - 사각형 데이터: 쉼표로 구분된 색상과 변의 길이 (예:
red,4)
메인 파일에서 주어진 값으로 Circle과 Square를 생성하세요. 그런 다음 별도의 줄에 다음 내용을 출력하세요:
- 원의
:describe()호출 - 사각형의
:describe()호출 :getColor()를 사용하여 원의 색상 출력:getColor()를 사용하여 사각형의 색상 출력
Circle의 :describe() 메서드는 다음을 출력해야 합니다:
Circle with radius {radius}Square의 :describe() 메서드는 다음을 출력해야 합니다:
Square with side {side}예를 들어, 입력이 blue,5와 red,4인 경우 출력은 다음과 같아야 합니다:
Circle with radius 5
Square with side 4
blue
red이것은 완전한 상속 패턴을 보여줍니다: 두 도형 모두 Shape로부터 :getColor()를 상속받으며(직접 정의하지 않음), 각자 고유한 속성과 :describe() 메서드를 가집니다!
직접 해보기
-- main.lua: 모든 것을 하나로 합칩니다
local Circle = require('Circle')
local Square = require('Square')
-- 원의 입력값 읽기 (색상, 반지름)
local circleInput = io.read()
local circleColor, circleRadius = circleInput:match("([^,]+),([^,]+)")
circleRadius = tonumber(circleRadius)
-- 사각형의 입력값 읽기 (색상, 변의 길이)
local squareInput = io.read()
local squareColor, squareSide = squareInput:match("([^,]+),([^,]+)")
squareSide = tonumber(squareSide)
-- TODO: 주어진 색상과 반지름으로 Circle 인스턴스 생성
-- TODO: 주어진 색상과 변의 길이로 Square 인스턴스 생성
-- TODO: 원에 대해 :describe() 호출
-- TODO: 사각형에 대해 :describe() 호출
-- TODO: :getColor()를 사용하여 원의 색상 출력
-- TODO: :getColor()를 사용하여 사각형의 색상 출력