Ö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 kuralım. Farklı çalışan türlerinin ortak özellikleri paylaştığı ancak ikramiyelerini farklı şekilde hesapladığı bir şirket yapısı oluşturacaksınız.
Kodunuzu dört dosya halinde düzenleyeceksiniz:
Employee.cs:Companyad alanı (namespace) içinde temelEmployeesınıfını tanımlayın. Her çalışanın birName(string) veSalary(decimal) özelliği vardır. Her iki değeri de kabul eden bir yapıcı (constructor) oluşturun. Varsayılan olarak maaşın %10'unu döndürenCalculateBonus()adındavirtualbir metot ekleyin.ToString()metodunu"{Name} - ${Salary}"döndürecek şekilde geçersiz kılın (override).Manager.cs:Companyad alanı içindeEmployeesınıfından miras alan birManagersınıfı tanımlayın. Yöneticilerin ek birTeamSizeözelliği (int) vardır. Yapıcı; isim, maaş ve ekip boyutunu kabul etmeli ve üst sınıfı başlatmak içinbaseanahtar kelimesini kullanmalıdır.CalculateBonus()metodunu maaşın %15'i artı her ekip üyesi için $50 döndürecek şekilde geçersiz kılın.ToString()metodunu"{Name} - ${Salary} (Manager, Team: {TeamSize})"döndürecek şekilde geçersiz kılın.Developer.cs:Companyad alanı içindeEmployeesınıfından miras alan birDevelopersınıfı tanımlayın. Geliştiricilerin birProgrammingLanguageözelliği (string) vardır. Yapıcı; isim, maaş ve programlama dilini kabul eder.CalculateBonus()metodunu maaşın %12'sini döndürecek şekilde geçersiz kılın.ToString()metodunu"{Name} - ${Salary} (Developer, {ProgrammingLanguage})"döndürecek şekilde geçersiz kılın.Program.cs: Ana dosyanızda, giriş değerlerini kullanarak her çalışan türünden birer tane oluşturun. Çok biçimliliği (polymorphism) göstermek için üçünü de birEmployeereferans dizisinde saklayın. Dizide döngü kurun ve her çalışanınToString()sonucunu ve ardından ikramiyesini yazdırın.
Sekiz giriş alacaksınız:
- Temel çalışan adı
- Temel çalışan maaşı
- Yönetici adı
- Yönetici maaşı
- Yönetici ekip boyutu
- Geliştirici adı
- Geliştirici maaşı
- Geliştirici programlama dili
Her çalışanın bilgisini ve ikramiyesini şu formatta yazdırın:
{ToString result}
Bonus: ${CalculateBonus result}Örneğin, girişler 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 ikramiyeleri nasıl farklı hesapladığına, ancak hepsini tek bir Employee dizisi üzerinden nasıl işleyebildiğinize dikkat edin. İşte kalıtımı çok biçimlilikle 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ı