C# Dersleri 60 - Maaş Hesaplama


C# Employee Sınıfı: Çalışanların Maaş Hesaplaması

Bu eğitimde, C# dilinde bir fabrika çalışanını temsil eden ve çalışanların maaşlarını hesaplayan bir "Employee" sınıfı geliştireceğiz. Sınıf, çalışanlara ait bilgileri tutar ve çeşitli metotlar aracılığıyla maaş, vergi, bonus ve zam hesaplamaları yapar. Bu çözüm, Nesne Yönelimli Programlama (OOP) ilkelerine dayanır ve aşağıdaki özellikleri içerir.

Sınıfın İsterleri

Nitelikler

"Employee" sınıfı, aşağıdaki dört temel niteliği içerir:

  • name: Çalışanın adı ve soyadı.
  • salary: Çalışanın maaşı.
  • workHours: Haftalık çalışma saati.
  • hireYear: İşe başlangıç yılı.

Metotlar

"Employee" sınıfı, aşağıdaki beş temel metodu içerir:

  1. Employee(name, salary, workHours, hireYear): Sınıfın kurucu metodu olup, çalışan bilgilerini başlatmak için dört parametre alır.
  2. tax(): Çalışanın maaşına uygulanan vergiyi hesaplar.
    • Maaş 1000 TL’den az ise vergi uygulanmaz.
    • Maaş 1000 TL’den fazla ise maaşın %3’ü kadar vergi uygulanır.
  3. bonus(): Çalışanın haftalık 40 saati aşan fazla çalışmaları için bonus hesaplar. Fazla her saat için 30 TL eklenir.
  4. raiseSalary(): Çalışanın işe başlangıç yılına göre maaş artışını hesaplar.
    • Çalışma süresi 10 yıldan az ise %5 zam uygulanır.
    • Çalışma süresi 10-19 yıl arasında ise %10 zam uygulanır.
    • Çalışma süresi 20 yıl veya daha fazla ise %15 zam uygulanır.
  5. toString(): Çalışanın tüm bilgilerini ve hesaplanan sonuçları ekrana yazdırır.

Sınıfın Kodları

using System;

class Employee
{
    // Sınıf Nitelikleri
    public string Name; // Çalışanın adı ve soyadı
    public double Salary; // Çalışanın maaşı
    public int WorkHours; // Haftalık çalışma saati
    public int HireYear; // İşe başlangıç yılı

    // Kurucu Metot
    public Employee(string name, double salary, int workHours, int hireYear)
    {
        Name = name;
        Salary = salary;
        WorkHours = workHours;
        HireYear = hireYear;
    }

    // Vergi Hesaplama Metodu
    public double Tax()
    {
        if (Salary > 1000)
        {
            return Salary * 0.03; // Maaşın %3'ü kadar vergi
        }
        return 0; // 1000 TL'den az maaş için vergi yok
    }

    // Bonus Hesaplama Metodu
    public double Bonus()
    {
        if (WorkHours > 40)
        {
            return (WorkHours - 40) * 30; // Fazla her saat için 30 TL
        }
        return 0; // 40 saatten az çalışmada bonus yok
    }

    // Maaş Artışı Hesaplama Metodu
    public double RaiseSalary()
    {
        int yearsWorked = 2021 - HireYear; // Çalışma yılı
        if (yearsWorked < 10)
        {
            return Salary * 0.05; // %5 zam
        }
        else if (yearsWorked >= 10 && yearsWorked < 20)
        {
            return Salary * 0.10; // %10 zam
        }
        else
        {
            return Salary * 0.15; // %15 zam
        }
    }

    // Çalışan Bilgilerini Yazdıran Metot
    public override string ToString()
    {
        double tax = Tax();
        double bonus = Bonus();
        double raise = RaiseSalary();
        double totalSalary = Salary - tax + bonus + raise;

        return $"Çalışanın Adı: {Name}\n" +
               $"Maaşı: {Salary} TL\n" +
               $"Haftalık Çalışma Saati: {WorkHours}\n" +
               $"İşe Başlangıç Yılı: {HireYear}\n" +
               $"Vergi: {tax} TL\n" +
               $"Bonus: {bonus} TL\n" +
               $"Maaş Zammı: {raise} TL\n" +
               $"Vergi ve Bonuslar Dahil Maaş: {totalSalary} TL";
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Bir çalışan nesnesi oluştur
        Employee emp = new Employee("Ali Veli", 1200, 45, 2010);

        // Çalışan bilgilerini ekrana yazdır
        Console.WriteLine(emp.ToString());
    }
}

Programın Çıktısı

Çalışanın Adı: Ali Veli
Maaşı: 1200 TL
Haftalık Çalışma Saati: 45
İşe Başlangıç Yılı: 2010
Vergi: 36 TL
Bonus: 150 TL
Maaş Zammı: 120 TL
Vergi ve Bonuslar Dahil Maaş: 1434 TL

Kodun Açıklaması

  • Kurucu Metot: Çalışanın bilgilerini başlatmak için kullanılır.
  • Vergi Hesaplama: Maaş üzerinden belirlenen kriterlere göre vergi hesaplar.
  • Bonus Hesaplama: Haftalık fazla çalışma saatine bağlı olarak bonus ücretini hesaplar.
  • Maaş Artışı: Çalışanın işe başlangıç yılına göre zam oranını belirler.
  • Bilgilerin Yazdırılması: Tüm nitelik ve hesaplama sonuçları bir format içinde ekrana yazdırılır.

Sonuç

Bu "Employee" sınıfı, çalışan maaşlarının hesaplanması için gerekli tüm işlevleri sağlar. Niteliklerin ve metotların net bir şekilde ayrılması, sınıfın modüler ve genişletilebilir olmasını sağlar. İster küçük bir uygulama olsun, isterse büyük bir projede kullanılsın, bu tür sınıf tasarımı, işlevselliği artırır ve kodun bakımını kolaylaştırır.