Menu
Coddy logo textTech

Ö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.

challenge icon

Görev

Kolay

Bu 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: Company ad alanı (namespace) içinde temel Employee sınıfını tanımlayın. Her çalışanın bir Name (string) ve Salary (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üren CalculateBonus() adında virtual bir metot ekleyin. ToString() metodunu "{Name} - ${Salary}" döndürecek şekilde geçersiz kılın (override).
  • Manager.cs: Company ad alanı içinde Employee sınıfından miras alan bir Manager sınıfı tanımlayın. Yöneticilerin ek bir TeamSize özelliği (int) vardır. Yapıcı; isim, maaş ve ekip boyutunu kabul etmeli ve üst sınıfı başlatmak için base anahtar 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: Company ad alanı içinde Employee sınıfından miras alan bir Developer sınıfı tanımlayın. Geliştiricilerin bir ProgrammingLanguage ö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 bir Employee referans dizisinde saklayın. Dizide döngü kurun ve her çalışanın ToString() 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: $8400

Her ç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