Özet - Çalışan Rolleri
Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 42 / 70.
Görev
KolayFarklı ç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 sabit50prim 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:
- Manager'ın adı
- Manager'ın maaşı
- Intern'ın adı
- Intern'ın maaşı
- Normal çalışanın adı
- 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: 300Aynı :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
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şisiKendi başına pratik yap: Online Lua derleyicisi