Rangkuman: Hierarki Karyawan
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 24 dari 70.
Tantangan
MudahMari kita buat sistem hierarki karyawan yang menggabungkan semua konsep pewarisan dari bab ini. Kamu akan membuat struktur perusahaan dengan berbagai jenis karyawan yang memiliki atribut umum, tetapi menghitung bonusnya dengan cara berbeda.
Kamu akan menyusun kodemu dalam empat file:
Employee.cs: Definisikan class dasarEmployeedi namespaceCompany. Setiap karyawan memilikiName(string) danSalary(decimal). Buat constructor yang menerima kedua nilai tersebut. Tambahkan methodvirtualbernamaCalculateBonus()yang secara default mengembalikan 10% dari gaji. OverrideToString()agar mengembalikan"{Name} - ${Salary}".Manager.cs: Definisikan classManagerdi namespaceCompanyyang mewarisiEmployee. Manager memiliki property tambahan, yaituTeamSize(int). Constructor harus menerima nama, gaji, dan ukuran tim, lalu menggunakanbaseuntuk menginisialisasi induknya. OverrideCalculateBonus()agar mengembalikan 15% dari gaji ditambah $50 untuk setiap anggota tim. OverrideToString()agar mengembalikan"{Name} - ${Salary} (Manager, Team: {TeamSize})".Developer.cs: Definisikan classDeveloperdi namespaceCompanyyang mewarisiEmployee. Developer memiliki propertyProgrammingLanguage(string). Constructor menerima nama, gaji, dan bahasa pemrograman. OverrideCalculateBonus()agar mengembalikan 12% dari gaji. OverrideToString()agar mengembalikan"{Name} - ${Salary} (Developer, {ProgrammingLanguage})".Program.cs: Di file utama, buat satu karyawan untuk setiap jenis menggunakan nilai input. Simpan ketiganya dalam array berisi referensiEmployeeuntuk menunjukkan polimorfisme. Lakukan perulangan pada array dan cetak hasilToString()setiap karyawan, lalu bonusnya.
Kamu akan menerima enam input:
- Nama karyawan dasar
- Gaji karyawan dasar
- Nama manager
- Gaji manager
- Ukuran tim manager
- Nama developer
- Gaji developer
- Bahasa pemrograman developer
Cetak informasi dan bonus setiap karyawan dengan format berikut:
{ToString result}
Bonus: ${CalculateBonus result}Contohnya, jika inputnya adalah John, 50000, Sarah, 80000, 5, Mike, 70000, dan C#, outputnya harus seperti berikut:
John - $50000
Bonus: $5000
Sarah - $80000 (Manager, Team: 5)
Bonus: $12250
Mike - $70000 (Developer, C#)
Bonus: $8400Perhatikan bagaimana setiap jenis karyawan menghitung bonus dengan cara berbeda, tetapi kamu dapat memproses semuanya melalui satu array Employee. Inilah kekuatan menggabungkan pewarisan dengan polimorfisme!
Coba sendiri
using System;
using Company;
class Program
{
public static void Main(string[] args)
{
// Baca input karyawan dasar
string empName = Console.ReadLine();
decimal empSalary = Convert.ToDecimal(Console.ReadLine());
// Baca input manajer
string mgrName = Console.ReadLine();
decimal mgrSalary = Convert.ToDecimal(Console.ReadLine());
int teamSize = Convert.ToInt32(Console.ReadLine());
// Baca input pengembang
string devName = Console.ReadLine();
decimal devSalary = Convert.ToDecimal(Console.ReadLine());
string progLang = Console.ReadLine();
// TODO: Buat satu Employee, satu Manager, dan satu Developer
// TODO: Simpan ketiganya dalam array Employee untuk menunjukkan polimorfisme
// TODO: Lakukan perulangan pada array dan cetak hasil ToString() serta bonus setiap karyawan
// Format:
// {ToString result}
// Bonus: ${CalculateBonus result}
}
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalNamespace & DirektifPengantar class & objectKata Kunci 'this'Method dan ParameterField vs PropertyKonstruktorInisialisasi objectRingkasan: Kalkulator Sederhana4Pewarisan
Sintaks Dasar Pewarisan (:)Kata Kunci 'base'Kata Kunci Virtual & OverrideClass SealedBase Class 'object'Rangkuman: Hierarki Karyawan7Fitur Lanjutan
Overloading OperatorIndexer (this[])Penimpaan ToString()Extension methodRingkasan: Custom list2Property & Anggota Statis
Property yang Diimplementasikan OtomatisProperty Hanya Baca dan Hanya TulisField dan method StatisClass StatisAnggota Berbentuk Ekspresi5Polimorfisme & Antarmuka
Polimorfisme saat kompilasi vs runtimeAntarmuka vs kelas abstrakBeberapa antarmukaAntarmuka eksplisitUpcasting & DowncastingRingkasan, Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi daripada PewarisanGenerics (class dan method)Delegate dan EventAtribut dan ReflectionIDisposable dan Pernyataan usingDasar-Dasar Dependency Injection11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola CompositeLatihan sendiri: Compiler C# online