Menu
CoddyTech

Rangkuman: Perakitan Robot

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 54 dari 70.

challenge icon

Tantangan

Mudah

Mari rakit Robot dari komponen-komponen terpisah! Alih-alih menggunakan inheritance, kamu akan membangun robot dengan menyusunnya dari object Arm, Leg, dan Head yang terpisah, masing-masing dengan perilaku khususnya sendiri. Robot akan mengoordinasikan komponen-komponen ini melalui delegasi.

Kamu akan mengatur kodemu dalam lima file:

  • Arm.lua: Buat class Arm dengan constructor :new(side) yang menyimpan sisi tempat arm berada (misalnya, "left" atau "right"). Sertakan method :raise() yang mencetak {side} arm raised dan method :lower() yang mencetak {side} arm lowered.
  • Leg.lua: Buat class Leg dengan constructor :new(side) yang menyimpan sisinya. Sertakan method :step() yang mencetak {side} leg steps forward.
  • Head.lua: Buat class Head dengan constructor :new(). Sertakan method :nod() yang mencetak Head nods dan method :shake() yang mencetak Head shakes.
  • Robot.lua: Buat class Robot yang constructornya :new(name) menyimpan nama dan membuat semua komponen secara internal: arm kiri, arm kanan, leg kiri, leg kanan, dan head. Robot harus memiliki method berikut yang mendelegasikan tugas kepada komponennya:
    • :greet(): mencetak {name} says hello!, lalu mengangkat arm kanan, kemudian menurunkannya
    • :walk(): membuat leg kiri melangkah, lalu leg kanan melangkah
    • :respond(answer): jika jawabannya adalah "yes", head mengangguk; jika "no", head menggeleng
  • main.lua: Baca input berupa nama robot dan jawaban ya/tidak. Buat Robot, minta robot menyapa, berjalan, lalu merespons berdasarkan input.

Kamu akan menerima dua input:

  1. Nama robot (sebuah string)
  2. Jawaban: yes atau no

Outputmu harus menunjukkan robot yang mengoordinasikan komponen-komponennya:

{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nods

Atau jika jawabannya no:

{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head shakes

Misalnya, jika inputnya adalah Robo dan yes, outputnya harus seperti berikut:

Robo says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nods

Perhatikan bahwa Robot tidak tahu bagaimana arm diangkat atau leg melangkah. Robot hanya memberi tahu setiap komponen apa yang harus dilakukan. Setiap komponen bersifat mandiri dan dapat digunakan kembali, sementara robot bertindak sebagai koordinator yang menyatukan semuanya!

Coba sendiri

-- main.lua: Titik awal tantangan komposisi Robot

local Robot = require('Robot')

-- Baca input
local name = io.read()
local answer = io.read()

-- TODO: Buat Robot dengan nama yang diberikan
-- TODO: Buat robot menyapa
-- TODO: Buat robot berjalan
-- TODO: Buat robot merespons berdasarkan input jawaban

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler Lua online