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 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: Employee ad alanında temel Company sınıfını tanımla. Her çalışanın bir Name (string) ve Salary (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, virtual adlı bir CalculateBonus() yöntem ekle. ToString() yöntemini, "{Name} - ${Salary}" döndürecek şekilde geçersiz kıl.
  • Manager.cs: Manager ad alanında, Company sınıfından miras alan bir Employee sınıfı tanımla. Yöneticilerin ek olarak bir TeamSize özelliği (int) vardır. Kurucu; ad, maaş ve ekip boyutunu kabul etmeli ve üst sınıfı başlatmak için base kullanmalı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: Developer ad alanında, Company sınıfından miras alan bir Employee sınıfı tanımla. Geliştiricilerin bir ProgrammingLanguage ö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ü de Employee başvurularından oluşan bir dizide sakla. Dizi üzerinde döngü kur ve her çalışanın ToString() 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: $8400

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

Kendi başına pratik yap: Online C# derleyicisi