Menu
CoddyTech

Ringkasan: Peran Karyawan

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

challenge icon

Tantangan

Mudah

Mari kita buat sistem bonus penggajian yang menunjukkan bagaimana berbagai jenis karyawan dapat menggunakan antarmuka yang sama sambil menghitung bonus dengan cara berbeda!

Kamu akan membuat hierarki karyawan sederhana dalam empat file:

  • Employee.lua: class dasar yang mewakili karyawan umum. Konstruktor :new(name, salary) harus menyimpan nama dan gaji karyawan. Sertakan method :calculateBonus() yang mengembalikan 10% dari gaji (bonus default untuk karyawan biasa), dan method :getName() untuk mengambil nama.
  • Manager.lua: class turunan yang mewarisi dari Employee. Manager bekerja keras dan mendapat imbalan: override :calculateBonus() agar mengembalikan 20% dari gajinya, bukan nilai default 10%.
  • Intern.lua: class turunan lain yang mewarisi dari Employee. Intern menerima bonus tetap sebesar 50, berapa pun gajinya: override :calculateBonus() agar selalu mengembalikan jumlah ini.
  • main.lua: Satukan semuanya! Baca tiga input untuk nama karyawan dan tiga input untuk gaji mereka. Buat satu Manager, satu Intern, dan satu Employee biasa. Simpan ketiganya dalam sebuah tabel, lalu lakukan perulangan dan cetak nama setiap orang diikuti bonus yang dihitung.

Kamu akan menerima enam input:

  1. Nama Manager
  2. Gaji Manager
  3. Nama Intern
  4. Gaji Intern
  5. Nama karyawan biasa
  6. Gaji karyawan biasa

Untuk setiap karyawan dalam kumpulanmu (dengan urutan: Manager, Intern, Employee), cetak nama dan bonusnya dengan format berikut:

{name}: {bonus}

Misalnya, jika inputnya adalah Alice, 5000, Bob, 2000, Carol, dan 3000, outputnya seharusnya:

Alice: 1000
Bob: 50
Carol: 300

Perhatikan bagaimana pemanggilan :calculateBonus() yang sama menghasilkan nilai berbeda berdasarkan tipe setiap karyawan: inilah polymorphism! Manager mendapat 20% dari 5000, Intern mendapat 50 tetap, dan Employee biasa mendapat 10% dari 3000.

Coba sendiri

-- main.lua: Gabungkan semuanya

local Employee = require('Employee')
local Manager = require('Manager')
local Intern = require('Intern')

-- Baca input
local managerName = io.read()
local managerSalary = tonumber(io.read())
local internName = io.read()
local internSalary = tonumber(io.read())
local employeeName = io.read()
local employeeSalary = tonumber(io.read())

-- TODO: Buat satu Manager, satu Intern, dan satu Employee biasa

-- TODO: Simpan ketiganya dalam tabel (dengan urutan: Manager, Intern, Employee)

-- TODO: Ulangi setiap entri dalam tabel dan cetak nama serta bonus masing-masing orang
-- Format: {name}: {bonus}

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler Lua online