Operatör aşırı yükleme örnek 1

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 .

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ı :

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir