요약 - 로봇 조립
Coddy Lua 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 70개 중 54번째.
챌린지
쉬움개별 구성 부품들로 Robot을 조립해 봅시다! 상속을 사용하는 대신, 각각의 전문화된 동작을 가진 별도의 Arm, Leg, Head 객체들을 조합하여 로봇을 만들 것입니다. 로봇은 위임을 통해 이러한 부품들을 조정하게 됩니다.
코드는 다섯 개의 파일로 구성됩니다:
Arm.lua: 어느 쪽인지(예: "left" 또는 "right")를 저장하는 생성자:new(side)를 가진 Arm 클래스를 만듭니다.{side} arm raised를 출력하는:raise()메서드와{side} arm lowered를 출력하는:lower()메서드를 포함하세요.Leg.lua: 쪽(side)을 저장하는 생성자:new(side)를 가진 Leg 클래스를 만듭니다.{side} leg steps forward를 출력하는:step()메서드를 포함하세요.Head.lua: 생성자:new()를 가진 Head 클래스를 만듭니다.Head nods를 출력하는:nod()메서드와Head shakes를 출력하는:shake()메서드를 포함하세요.Robot.lua: 이름을 저장하고 내부적으로 왼쪽 팔, 오른쪽 팔, 왼쪽 다리, 오른쪽 다리, 머리 등 모든 구성 부품을 생성하는 생성자:new(name)를 가진 Robot 클래스를 만듭니다. 로봇은 부품들에게 동작을 위임하는 다음 메서드들을 가져야 합니다::greet()—{name} says hello!를 출력한 다음, 오른쪽 팔을 올리고 다시 내립니다.:walk()— 왼쪽 다리를 한 걸음 내딛게 한 다음, 오른쪽 다리를 한 걸음 내딛게 합니다.:respond(answer)— answer가"yes"이면 머리를 끄덕이고(nod),"no"이면 머리를 가로저읍니다(shake).
main.lua: 로봇의 이름과 yes/no 응답에 대한 입력을 읽습니다. Robot을 생성하고, 인사를 하고, 걷게 한 다음, 입력에 따라 응답하게 하세요.
두 개의 입력을 받게 됩니다:
- 로봇의 이름 (문자열)
- 응답:
yes또는no
출력은 로봇이 각 부품을 조정하는 모습을 보여주어야 합니다:
{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nods또는 응답이 no인 경우:
{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head shakes예를 들어, 입력이 Robo와 yes라면 출력은 다음과 같아야 합니다:
Robo says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nods로봇이 팔을 어떻게 올리는지 또는 다리가 어떻게 걷는지 알 필요가 없다는 점에 주목하세요. 로봇은 단순히 각 부품에게 무엇을 할지 지시할 뿐입니다. 각 구성 요소는 독립적이고 재사용 가능하며, 로봇은 이들을 하나로 묶어주는 조정자 역할을 합니다!
직접 해보기
-- main.lua: 로봇 구성 챌린지의 진입점
local Robot = require('Robot')
-- 입력 읽기
local name = io.read()
local answer = io.read()
-- TODO: 주어진 이름으로 로봇 생성
-- TODO: 로봇이 인사하도록 하기
-- TODO: 로봇이 걷도록 하기
-- TODO: 답변 입력에 따라 로봇이 응답하도록 하기