Merhabalar arkadaşlar, C# Operator Overload ve Metot Override İşlemi yazım ile C# eğitim setime devam ediyorum. Dünkü duyuru yazımda da bahsettiğim gibi her gün bir yazı yayınlama kararıma uymaya devam etmeye çalışacağım. Bu yazımıda +-*/ operatörlerini overload ederek onlara yeni işlemler eklemeyi göreceğiz. Overload metotlar hakkında daha önce bir yazı yazmıştım. Bağlantıya tıklayarak yazıya ulaşabilirsiniz. Override hakkında direk bir yazım olmasa da sadece sayı girişi yapılabilen textbox yapalım yazımızda metotları override etme işlemine değinmiştik. O yazıya da bağlantıya tıklayarak ulaşabilirsiniz.
C# Operator Overload ve Metot Override İşlemi
Öncelikle Overload ve Override nedir onlara bir tekrar bakalım.
Overload Metot Nedir?
Overload metot aşağıdaki görselde görebileceğiniz gibi metodu, kullanmak için çağırdığımızda, farklı parametreler ile farklı işlemler yapabildiğini görebiliyoruz. Aşağı ve Yukarı oklar Topla metodunun Overload Metotlarıdır.
Override Metot Nedir?
Translate’ten override’ın anlamına baktığımızda, geçersiz kılmak, üzerinden geçmek, çiğnemek gibi anlamlara geliyor. Bizim için de aynı anlamlarda kullanılmaktadır. Giriş kısmında verdiğim özel textbox yazısına baktığınızda Textbox nesnelerinin mevcutta var olan ve kodlarına ulaşmamızın mümkün olmadığı Text özelliğini override ederek yani hükümsüz kılarak yeni bir Text özelliği hazırlamıştık. İşte bu işleme override etmek denmektedir. Bunu her metot için yapabiliriz. Yani her metot override edilebilir.
Şimdi kodlarımıza geçelim.
C# Operator Overload ve Metot Override İşlemi Projemizi Tanıyalım
Projemizde Kasiyer adında bir sınıfımız var. Bizim yapmak istediğimiz şey +-*/ operatörlerini kullanarak Kasiyer sınıfından türettiğimiz nesneler üzerinde işlemler yapmak. Örneğin kasiyer1 + kasiyer2 gibi bir işlem yapmak istiyoruz. Ancak bunlar int veya string değiller. Bunlar kasiyer… + operatörünün iki kasiyeri nasıl toplayacağını bizim ona öğretmemiz gerekiyor. Bu sebeple de + operatörünü override etmek zorundayız. Çünkü standart toplama işlemi bizim işimize yaramıyor.
Şimdi size kodları, ilgili videoyu ve github proje linkini vereceğim.
Kodlar…
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace opertor_overloaded_app { class Kasiyer { int _satis_adet; string _calisan_adi; public Kasiyer(string calisan_adi, int satis_adet) { _calisan_adi = calisan_adi; _satis_adet = satis_adet; } public override string ToString() { return string.Format("{0}, {1} Adet Satış", _calisan_adi, _satis_adet); } public static Kasiyer operator +(Kasiyer Kasiyer1, Kasiyer Kasiyer2) { int toplam_Satis = Kasiyer1._satis_adet + Kasiyer2._satis_adet; return new Kasiyer("Toplam", toplam_Satis); } public static Kasiyer operator -(Kasiyer Kasiyer1, Kasiyer Kasiyer2) { int toplam_Satis = Kasiyer1._satis_adet - Kasiyer2._satis_adet; return new Kasiyer("Toplam", toplam_Satis); } public static Kasiyer operator *(Kasiyer Kasiyer1, Kasiyer Kasiyer2) { int toplam_Satis = Kasiyer1._satis_adet - Kasiyer2._satis_adet; return new Kasiyer("Toplam", toplam_Satis); } public static Kasiyer operator /(Kasiyer Kasiyer1, Kasiyer Kasiyer2) { int toplam_Satis = Kasiyer1._satis_adet - Kasiyer2._satis_adet; return new Kasiyer("Toplam", toplam_Satis); } } }
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace opertor_overloaded_app { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Kasiyer kasiyer_Mustafa = new Kasiyer("Mustafa", 500); Kasiyer kasiyer_Ahmet = new Kasiyer("Ahmet", 800); Kasiyer kasiyer_Ayşe = new Kasiyer("Ayşe", 1200); MessageBox.Show(kasiyer_Mustafa.ToString()); //MessageBox.Show(kasiyer_Ahmet); //MessageBox.Show(kasiyer_Ayşe); Kasiyer ksyr_toplam_Satis = kasiyer_Mustafa + kasiyer_Ahmet + kasiyer_Ayşe; MessageBox.Show(ksyr_toplam_Satis.ToString()); } } }
Kodlarımız bu kadardı arkadaşlar. Aşağıda videosunu görebilirsiniz.
C# Operator Overload ve Metot Override İşlemi yazımda bu kadar arkadaşlar. Diğer yazılarımda görüşmek üzere. Umarım faydalı olmuştur. Aşağıdaki linklerden eğitim seti sayfasına ve github projesine ulaşabilirsiniz.
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız. Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz… Bu projenin Github sayfasına buradan ulaşabilirsiniz.
Sağlıcakla ve kodla kalın….