Menu
Coddy logo textTech

Özet - Çalışan Rolleri

Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 42 / 70.

challenge icon

Görev

Kolay

Farklı çalışan türlerinin aynı arayüzü paylaşırken bonusları nasıl farklı şekilde hesaplayabildiğini gösteren bir bordro bonus sistemi kuralım!

Dört dosya üzerinde küçük bir çalışan hiyerarşisi oluşturacaksınız:

  • Employee.lua: Genel bir çalışanı temsil eden temel sınıfınız. :new(name, salary) kurucusu (constructor) hem çalışanın adını hem de maaşını saklamalıdır. Maaşın %10'unu döndüren bir :calculateBonus() metodu (normal çalışanlar için varsayılan bonus) ve adı almak için bir :getName() metodu ekleyin.
  • Manager.lua: Employee sınıfından miras alan bir alt sınıf. Yöneticiler çok çalışır ve ödüllendirilirler; :calculateBonus() metodunu, varsayılan %10 yerine maaşlarının %20'sini döndürecek şekilde geçersiz kılın (override).
  • Intern.lua: Employee sınıfından miras alan başka bir alt sınıf. Stajyerler, maaşlarından bağımsız olarak 50 tutarında sabit bir bonus alırlar; :calculateBonus() metodunu her zaman bu tutarı döndürecek şekilde geçersiz kılın.
  • main.lua: Her şeyi bir araya getirin! Çalışan adları için üç giriş ve maaşları için üç giriş okuyun. Bir Manager, bir Intern ve bir normal Employee oluşturun. Üçünü de bir tabloda saklayın, ardından tabloyu döngüye sokarak her kişinin adını ve ardından hesaplanan bonusunu yazdırın.

Altı giriş alacaksınız:

  1. Yöneticinin adı
  2. Yöneticinin maaşı
  3. Stajyerin adı
  4. Stajyerin maaşı
  5. Normal çalışanın adı
  6. Normal çalışanın maaşı

Koleksiyonunuzdaki her çalışan için (sırasıyla: Manager, Intern, Employee), adlarını ve bonuslarını şu formatta yazdırın:

{name}: {bonus}

Örneğin, girişler Alice, 5000, Bob, 2000, Carol ve 3000 ise, çıktı şöyle olmalıdır:

Alice: 1000
Bob: 50
Carol: 300

Aynı :calculateBonus() çağrısının her çalışanın türüne göre nasıl farklı sonuçlar ürettiğine dikkat edin; işte bu iş başındaki polimorfizmdir (çok biçimlilik)! Yönetici 5000'in %20'sini alır, Stajyer sabit 50 alır ve normal Çalışan 3000'in %10'unu alır.

Kendin dene

-- main.lua: Her şeyi bir araya getir

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

-- Girdileri oku
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: Bir Yönetici (Manager), bir Stajyer (Intern) ve bir normal Çalışan (Employee) oluşturun

-- TODO: Üçünü de bir tabloda saklayın (sırasıyla: Manager, Intern, Employee)

-- TODO: Tabloyu döngüye alın ve her kişinin adını ve bonusunu yazdırın
-- Format: {name}: {bonus}

Object Oriented Programming bölümündeki tüm dersler