Ulasan: Hierarki Karyawan
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GDScript di Coddy. Pelajaran 20 dari 65.
Tantangan
SedangBuat hierarki class perusahaan dalam lima file.
Person:person_namedanage, ditetapkan oleh constructor.introduce()mengembalikanHi, I'm NAME, AGE years old.EmployeememperluasPersondan menambahkanemployee_id(String) sertasalary(tahunan, int). Overrideintroduce()untuk menambahkanMy employee ID is ID.setelah teks dari parent.monthly_pay()mengembalikan salary dibagi12.0.ManagermemperluasEmployeedan menambahkandepartment.monthly_pay()-nya adalah gaji employee dikalikan1.2, danmanage_team()mengembalikanManaging the DEPARTMENT department.EngineermemperluasEmployeedan menambahkanlanguage.code()mengembalikanCoding in LANGUAGE.Payrollmemiliki dua fungsi static.role(p)mengembalikanManager,Engineer,Employee, atauPerson, yaitu class paling spesifik darip.total_monthly(people)mengembalikan jumlahmonthly_pay()dari semua orang yang merupakan employee, termasuk manager dan engineer.
Setiap constructor meneruskan nilai milik parent ke super(), dan setiap override yang memperluas hasil dari parent menggunakan super().
Kode yang disediakan membaca jumlah orang yang akan dimasukkan, lalu satu baris untuk setiap orang: person NAME AGE, employee NAME AGE ID SALARY, manager NAME AGE ID SALARY DEPARTMENT atau engineer NAME AGE ID SALARY LANGUAGE. Untuk setiap orang, kode mencetak perannya dalam tanda kurung siku dan introduce(), gaji bulanan untuk employee, manage_team() atau code() jika tersedia, lalu mencetak total di akhir. Untuk employee Alice 35 E123 60000 dan manager Bob 45 M54 85000 Marketing, kode mencetak:
[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.00Tempatkan kodemu di person.gd, employee.gd, manager.gd, engineer.gd, dan payroll.gd. main.gd berisi kode input/output yang disediakan dan tidak dapat diedit.
Coba sendiri
extends Node
func _ready():
# Kode input/output yang disediakan: biarkan apa adanya
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))
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPclass dan objectKata Kunci selfmethodpropertyKonstruktor (_init)Ringkasan: Kalkulator Sederhana4Polimorfisme
Method Overriding Sekali LagiDuck TypingKelas Abstrak dan MethodDesain InterfaceRingkasan: Kalkulator Bentuk7Sinyal
Apa itu Sinyal?Mendeklarasikan dan MemancarkanMenghubungkan ke SinyalSinyal dengan ArgumenRangkuman, Sistem Kesehatan10Pola Desain Bagian 2
Pola CommandPola AdapterPola DecoratorPola Template MethodPola StatePola Composite2Property class
Variabel instance vs. variabel statisFungsi statisSetter propertyGetter propertyPrivat berdasarkan konvensiRangkuman: Pengelola Rekening Bank5Enkapsulasi
Member Publik dan PrivatValidasi dengan SetterPenyembunyian InformasiProperty Hanya-BacaRingkasan: Sistem Catatan Siswa8Konsep OOP Lanjutan
Komposisi vs PewarisanInner ClassNode sebagai KomponenRefCounted vs NodeEnum dalam Class11Proyek: Manajemen Perpustakaan
Gambaran Umum Proyekclass Buku dan Pengguna3Pewarisan
Pewarisan DasarKata Kunci superPenimpaan MethodRantai PewarisanPemeriksaan Tipe dengan isUlasan: Hierarki KaryawanLatihan sendiri: Compiler GDScript online