Merhaba arkadaşlar,
Bu örneğimizde operatör overloading, aşırı yükleme örneğini inceleyeceğiz. Operetör aşırı yükleyerek matrislerde işlem yapacacağız.
Öncelikle overloading’den bahsedelim. Operatörü aşırı yüklemek demek istediğimiz bir operatörün işlevinin yeniden yazılması anlamına gelir, örneğin biz bu örneğimizde + operatörünü aşırı yükleyeceğiz.
3×3 boyutunda iki matrisimiz olduğunu varsayalım ve bu iki matrisle işlem yapalım. Operatör aşırı yüklerken dikkat etmemiz gereken bazı noktalar var.
•Operatörü overload edilen method kesinlikle “static” olmalı.
•Operatör overload edilirken aldığı paramtereler içinde bulunduğu sınıf tipinde olmalı.
Bir adet Matris sınıfı oluşturalım ve kodlamaya başlayalım.
class Matris { }
Bu şekilde bir Matris sınıfı oluşturduk.Bir sonraki adımımız overload edilecek olan operatörün metodunu yazmak. İlk olarak + Metodunu yazalım, fakat yazmadan önce Matris sınıfına gereken özellikleri de edindirelim.Geri döndüreceğimiz değer de sınıf tipi ile aynı olacağından gerekli Constructor yapılarımızı da oluşturmayı ihmal etmiyoruz! Parametreli yapılandırıcıyı bozduğumuz için parametresiz yapılandırıcıyı da override etmeyi unutmuyoruz.
class Matris { public int[,] T; public static int[,] sonuc;//İki boyutlu dizilerimizi oluşturduk. public Matris() { }//Boş yapılandırıcı override edildi. public Matris(int[,] g)//Çağırma esnasında gerekli özellikleri kazandırmak için parametreli yapılandırıcı { T = new int[g.GetLength(0),g.GetLength(1)]; sonuc = new int[g.GetLength(0), g.GetLength(1)]; for (int i = 0; i < g.GetLength(0); i++) { for (int j = 0; j < g.GetLength(1); j++) { T[i, j] = g[i, j]; } } } public static Matris operator +(Matris m1, Matris m2)//Aldığı parametreler Class Tipi ile aynı!! { for (int i = 0; i < m1.T.GetLength(0); i++) { for (int j = 0; j < m1.T.GetLength(1); j++) { sonuc[i, j] = m1.T[i, j] + m2.T[i, j];//+ operatörünün yapması gereken işlemleri belirliyoruz. }//Bu örnek için burada matris toplaması yapılıyor. } return new Matris(sonuc);//Geri dönüş tipimiz sınıf ile aynı.Parametreli yapılandırıcı çalışır } }
Bu Adımda Gerekli yapılandırıcıyı oluşturduk ve “+” operatörünü aşırı yükledik. Buna bakarak – , * ve / operatörlerini hatta != ve == operatörlerini de aşırı yükleyebiliriz.
Konu hakkındaki soru ve görüşlerinizi yorum kısmından veya mail atarak bildirebilirsiniz.
Teşekkürler!