Özet - Çalışan Rolleri
Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 42 / 70.
Görev
KolayFarklı ç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 olarak50tutarı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:
- Yöneticinin adı
- Yöneticinin maaşı
- Stajyerin adı
- Stajyerin maaşı
- Normal çalışanın adı
- 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: 300Aynı :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
1'Self' Kavramı
Fonksiyonlu TablolarAçık 'self'İki Nokta SözdizimiNokta vs İki NoktaÖzet - Hareket Eden Nokta4Proje: Dijital Banka
Proje KurulumuPara Yatırma Metodu7Çok Biçimlilik ve Geçersiz Kılma
Metotları Geçersiz KılmaÜst Sınıf Metotlarını ÇağırmaDuck TypingOrtak ArayüzTür KontrolüÖzet - Çalışan Rolleri2Sınıf Prototip Kalıbı
Prototip Kavramı__index ile Bağlama:new() KurucusuÖznitelikleri BaşlatmaBağımsız ÖrneklerÖzet - Araba Fabrikası5OOP'de Operatör Aşırı Yükleme
Nesneleri ToplamaNesneleri ÇıkarmaNesneleri BirleştirmeNesneleri Karşılaştırma (<, >)Özet - Cüzdan Matematiği8Kapsülleme
Adlandırma KurallarıGizlilik için Closure'larClosure'lar Aracılığıyla ErişimSalt Okunur TablolarDoğrulama MantığıÖzet - Güvenli Kasa11Tasarım Kalıpları (Lite)
Fabrika FonksiyonlarıSingleton TablosuIterator KalıbıObserver (Dinleyici)Özet - Logger Fabrikası3Nesne Durumu ve Davranışı
Örnek DeğişkenleriGetter MetotlarıSetter MetotlarıHesaplanmış ÖzelliklerString BiçimlendirmeEşitlik KontrolleriÖzet - Öğrenci Notu6Kalıtımın Temelleri
Kalıtım KurulumuMetot KalıtımıConstructor'ı GenişletmeAlt Sınıf Metotları EklemePaylaşılan ve BenzersizÖzet - Şekil Hiyerarşisi