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:
- Employee(name, salary, workHours, hireYear): Sınıfın kurucu metodu olup, çalışan bilgilerini başlatmak için dört parametre alır.
- 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.
- 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.
- 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.
- 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.