Tekrar: Çalışan Hiyerarşisi
Coddy'nin GDScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 20 / 65.
Görev
OrtaBir şirketin sınıf hiyerarşisini beş dosyada oluşturun.
Person: Kurucu tarafından ayarlananperson_nameveage.introduce(),Hi, I'm NAME, AGE years old.döndürür.Employee,Personsınıfını genişletir veemployee_id(String) ilesalary(yıllık, int) ekler. Ebeveyn sınıfın metninden sonraMy employee ID is ID.eklemek içinintroduce()metodunu geçersiz kılar.monthly_pay(), maaşın12.0'a bölünmüş hâlini döndürür.Manager,Employeesınıfını genişletir vedepartmentekler.monthly_pay(), çalışan maaşının1.2ile çarpılmış hâlidir vemanage_team(),Managing the DEPARTMENT department.döndürür.Engineer,Employeesınıfını genişletir velanguageekler.code(),Coding in LANGUAGE.döndürür.Payrolliki statik fonksiyona sahiptir.role(p),pnesnesinin en özel sınıfı olanManager,Engineer,EmployeeveyaPersondeğerini döndürür.total_monthly(people), çalışan olan kişiler içinmonthly_pay()değerlerinin toplamını döndürür (yöneticiler ve mühendisler dâhil).
Her kurucu, ebeveynin değerlerini super()'a aktarır ve ebeveynin sonucunu genişleten her geçersiz kılma super() kullanır.
Sağlanan kod, ardından kaç kişinin geleceğini okur; sonrasında her kişi için bir satır okur: person NAME AGE, employee NAME AGE ID SALARY, manager NAME AGE ID SALARY DEPARTMENT veya engineer NAME AGE ID SALARY LANGUAGE. Her kişi için rolü köşeli parantez içinde ve introduce() sonucunu, çalışanlar için aylık maaşı, varsa manage_team() veya code() sonucunu yazdırır; en sonda toplamı yazdırır. employee Alice 35 E123 60000 ve manager Bob 45 M54 85000 Marketing için şu çıktıyı verir:
[Employee] Hi, I'm Alice, 35 years old. My employee ID is E123.
Monthly pay: 5000.00
[Manager] Hi, I'm Bob, 45 years old. My employee ID is M54.
Monthly pay: 8500.00
Managing the Marketing department.
Total monthly payroll: 13500.00Kodunuzu person.gd, employee.gd, manager.gd, engineer.gd ve payroll.gd dosyalarına yazın. main.gd, sağlanan giriş/çıkış kodunu içerir ve düzenlenemez.
Kendin dene
extends Node
func _ready():
# Sağlanan giriş/çıkış kodu: olduğu gibi bırakın
var count := int(OS.read_string_from_stdin())
var people: Array[Person] = []
for i in count:
var p := OS.read_string_from_stdin().split(" ")
if p[0] == "manager":
people.append(Manager.new(p[1], int(p[2]), p[3], int(p[4]), p[5]))
elif p[0] == "engineer":
people.append(Engineer.new(p[1], int(p[2]), p[3], int(p[4]), p[5]))
elif p[0] == "employee":
people.append(Employee.new(p[1], int(p[2]), p[3], int(p[4])))
else:
people.append(Person.new(p[1], int(p[2])))
for person in people:
print("[%s] %s" % [Payroll.role(person), person.introduce()])
if person is Employee:
print("Monthly pay: %.2f" % (person as Employee).monthly_pay())
if person is Manager:
print((person as Manager).manage_team())
elif person is Engineer:
print((person as Engineer).code())
print("Total monthly payroll: %.2f" % Payroll.total_monthly(people))
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Nesne Yönelimli Programlamanın Temelleri
Harici DosyalarNesne Yönelimli Programlamaya GirişSınıflar ve Nesnelerself Anahtar KelimesiMetotlarÖzelliklerKurucu (_init)Tekrar - Basit Hesap Makinesi4Çok Biçimlilik
Metot Ezme Konusuna Yeniden BakışÖrdek TiplemesiSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı7Sinyaller
Sinyal Nedir?Tanımlama ve Sinyal GöndermeSinyallere BağlanmaArgümanlı SinyallerTekrar - Sağlık Sistemi10Tasarım Kalıpları 2. Bölüm
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıBileşik Kalıp2Sınıf Özellikleri
Örnek ve Statik DeğişkenlerStatik FonksiyonlarÖzellik AyarlayıcılarıÖzellik AlıcılarıGeleneksel Olarak ÖzelTekrar - Banka Hesabı Yöneticisi5Kapsülleme
Public ve Private ÜyelerSetter'larla DoğrulamaBilgi GizlemeSalt Okunur ÖzelliklerTekrar - Öğrenci Kayıt Sistemi3Kalıtım
Temel Kalıtımsuper Anahtar SözcüğüMetot Geçersiz KılmaKalıtım Zincirleriis ile Tür KontrolleriTekrar: Çalışan Hiyerarşisi9Tasarım Desenleri Bölüm 1
Tasarım Desenlerine GirişSingleton DeseniFactory DeseniObserver DeseniStrategy DeseniKendi başına pratik yap: Online GDScript derleyicisi