Operatörlerin aşırı yüklenmesi, bir operatörün bir nesne için bizim istediğimiz şekliyle çalışabilecek hale getirilmesidir. Örneğin bir (+) operatöründe ilk aklımıza gelen iki sayının toplamı ya da iki metnin birleştirilmesidir. Bazen yazdığımız sınıflara ait nesnelerin üzerinde bazı özel işlemler yapmak isteriz . Bu durumda sınıfımızda bir takım değişiklikler yapmak zorundayız.
Mesela bu örneğimizde ,
Uzunluğu , genişliği ve yüksekliği verilen bir kutunun hacmi hesaplanmaktadır . Buraya kadar her şey aslında normal . İki adet kutu nesnesi oluşturduğumuzu varsayalım . Birinci ve ikinci kutunun uzunluğu , genişliği ve yüksekleri girilsin . Bu iki kutu nesnesinin hangisinin büyük olduğunu bulmak istediğimizde operatör aşırı yüklemesi devreye girecektir .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | class Kutu: def __init__(self,uzunluk,genislik,yukseklik): #yapıcı method self.uzunluk=uzunluk self.genislik=genislik self.yukseklik=yukseklik def __str__(self): #nesnelerin toString edilmiş hali return " [ uzunluk = " + str(self.uzunluk) + " genislik = " + str(self.genislik) + " yukseklik = " + str(self.yukseklik)\ +" hacim = "+str(self.hacim())+ " ]" def hacim(self): return self.uzunluk*self.genislik*self.yukseklik def __lt__(self,other): #nesnelerin karşılaştırılması if (self.hacim() < other.hacim()): return "Sonuç \n1.Parametredeki Kutu Büyüktür" elif(self.hacim() > other.hacim()): return "Sonuç \n2.Parametredeki Kutu Büyüktür" else: return "Sonuç \nKutular Eşittir!" kutu1=Kutu(3,4,5) kutu2=Kutu(4,5,6) kutu3=Kutu(4,5,6) print("\nkutu1=", kutu1) #toString burada çalışır print("kutu2=", kutu2) #toString burada çalışır print(kutu1>kutu2) #nesneler burada karşılaştırılır print("\n********************************************************************\n") print("kutu2=", kutu2) #toString burada çalışır print("kutu3=", kutu3) #toString burada çalışır print(kutu2>kutu3) #nesneler burada karşılaştırılır |
Sonuç olarak bu örneğimizde Kutu sınıfına ait nesnelerin “operator overloading” yardımı ile karşılaştırılması yapılmıştır .
Program Çıktısı :