Özet - Çalışan Hiyerarşisi
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 24 / 70.
Görev
KolayBu bölümdeki tüm kalıtım kavramlarını bir araya getiren bir çalışan hiyerarşisi sistemi oluşturalım. Farklı çalışan türlerinin ortak öznitelikleri paylaştığı, ancak primlerini farklı şekilde hesapladığı bir şirket yapısı oluşturacaksın.
Kodunu dört dosyaya ayıracaksın:
Employee.cs:Employeead alanında temelCompanysınıfını tanımla. Her çalışanın birName(string) veSalary(decimal) değeri vardır. Her iki değeri kabul eden bir kurucu oluştur. Varsayılan olarak maaşın %10'unu döndüren,virtualadlı birCalculateBonus()yöntem ekle.ToString()yöntemini,"{Name} - ${Salary}"döndürecek şekilde geçersiz kıl.Manager.cs:Managerad alanında,Companysınıfından miras alan birEmployeesınıfı tanımla. Yöneticilerin ek olarak birTeamSizeözelliği (int) vardır. Kurucu; ad, maaş ve ekip boyutunu kabul etmeli ve üst sınıfı başlatmak içinbasekullanmalıdır.CalculateBonus()yöntemini, maaşın %15'i artı her ekip üyesi için $50 döndürecek şekilde geçersiz kıl.ToString()yöntemini,"{Name} - ${Salary} (Manager, Team: {TeamSize})"döndürecek şekilde geçersiz kıl.Developer.cs:Developerad alanında,Companysınıfından miras alan birEmployeesınıfı tanımla. Geliştiricilerin birProgrammingLanguageözelliği (string) vardır. Kurucu; adı, maaşı ve programlama dilini kabul eder.CalculateBonus()yöntemini, maaşın %12'sini döndürecek şekilde geçersiz kıl.ToString()yöntemini,"{Name} - ${Salary} (Developer, {ProgrammingLanguage})"döndürecek şekilde geçersiz kıl.Program.cs: Ana dosyanda, girdi değerlerini kullanarak her çalışan türünden bir tane oluştur. Polimorfizmi göstermek için üçünü deEmployeebaşvurularından oluşan bir dizide sakla. Dizi üzerinde döngü kur ve her çalışanınToString()sonucunu, ardından primini yazdır.
Altı girdi alacaksın:
- Temel çalışanın adı
- Temel çalışanın maaşı
- Yöneticinin adı
- Yöneticinin maaşı
- Yöneticinin ekip boyutu
- Geliştiricinin adı
- Geliştiricinin maaşı
- Geliştiricinin programlama dili
Her çalışanın bilgilerini ve primini şu biçimde yazdır:
{ToString result}
Bonus: ${CalculateBonus result}Örneğin girdiler John, 50000, Sarah, 80000, 5, Mike, 70000 ve C# ise çıktı şöyle olmalıdır:
John - $50000
Bonus: $5000
Sarah - $80000 (Manager, Team: 5)
Bonus: $12250
Mike - $70000 (Developer, C#)
Bonus: $8400Her çalışan türünün primleri farklı şekilde hesapladığına, ancak hepsini tek bir Employee dizisi üzerinden işleyebildiğine dikkat et. Kalıtım ile polimorfizmi birleştirmenin gücü budur!
Kendin dene
using System;
using Company;
class Program
{
public static void Main(string[] args)
{
// Temel çalışan girdilerini oku
string empName = Console.ReadLine();
decimal empSalary = Convert.ToDecimal(Console.ReadLine());
// Yönetici girdilerini oku
string mgrName = Console.ReadLine();
decimal mgrSalary = Convert.ToDecimal(Console.ReadLine());
int teamSize = Convert.ToInt32(Console.ReadLine());
// Geliştirici girdilerini oku
string devName = Console.ReadLine();
decimal devSalary = Convert.ToDecimal(Console.ReadLine());
string progLang = Console.ReadLine();
// TODO: Bir Employee, bir Manager ve bir Developer oluşturun
// TODO: Polimorfizmi göstermek için üçünü de bir Employee dizisinde saklayın
// TODO: Dizi boyunca döngü kurun ve her çalışanın ToString() sonucunu ve bonusunu yazdırın
// Format:
// {ToString result}
// Bonus: ${CalculateBonus result}
}
}
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci KayıtlarıKendi başına pratik yap: Online C# derleyicisi