Menu
Coddy logo textTech

Özet - Çalışan Rolleri

Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama 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 primleri farklı şekillerde nasıl hesaplayabildiğini gösteren bir maaş primi sistemi oluşturalım!

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

  • Employee.lua: Genel bir çalışanı temsil eden temel sınıfın. :new(name, salary) kurucusu çalışanın hem adını hem de maaşını saklamalıdır. Normal çalışanlar için varsayılan prim olan maaşın %10'unu döndüren bir :calculateBonus() yöntemi ve adı almak için bir :getName() yöntemi ekle.
  • Manager.lua: Employee sınıfından miras alan alt sınıf. Yöneticiler çok çalışır ve ödüllendirilir: :calculateBonus() yöntemini geçersiz kılarak varsayılan %10 yerine maaşlarının %20'sini döndür.
  • Intern.lua: Employee sınıfından miras alan başka bir alt sınıf. Stajyerler maaşlarından bağımsız olarak sabit 50 prim alır: :calculateBonus() yöntemini geçersiz kılarak her zaman bu miktarı döndür.
  • main.lua: Her şeyi bir araya getir! Çalışan adları için üç, maaşları için üç girdi oku. Bir Manager, bir Intern ve bir normal Employee oluştur. Üçünü de bir tabloda sakla, ardından döngüyle her birinin adını ve hesaplanan primini yazdır.

Altı girdi alacaksın:

  1. Manager'ın adı
  2. Manager'ın maaşı
  3. Intern'ın adı
  4. Intern'ın maaşı
  5. Normal çalışanın adı
  6. Normal çalışanın maaşı

Derleminizdeki her çalışan için (sırasıyla: Manager, Intern, Employee), adını ve primini şu biçimde yazdır:

{name}: {bonus}

Örneğin girdiler 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 et: iş başındaki çok biçimlilik budur! Manager, 5000'in %20'sini; Intern sabit 50'yi; normal Employee ise 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 Manager, bir Intern ve bir regular Employee oluştur

-- TODO: Üçünü de bir tabloda sakla (sırayla: Manager, Intern, Employee)

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

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Lua derleyicisi