Yazan : Şadi Evren ŞEKER
Programlama dillerinde, özellikle de nesne yönelimli (object oriented) programala dillerinde bir işlemin (operator) farklı amaçlar için ve farklı veri tipleri ile kullanılması mümkündür.
Örneğin C++ dilinde aşağıdaki yapı ile bu işlem yapılabilir:
operator([parametreler]) {
İşlemler
}
Örneğin bu yapıda yeniden tanımlanmış (üzerine yüklenmiş, overload) aşağıdaki kodu inceleyelim:
int operator+(int a, int b)
{
return a+b;
}
Yukarıdaki kodda + işlemi iki parametre (a ve b) için yazılmış ve sonuçta bu iki değerin toplamını döndürmek üzere kodlanmıştır.
Örneğin C++ dilinde, kesirli sayılar (rational numbers) için kodlanmış olan aşağıdaki programı inceleyelim:
#include<iostream> using namespace std; class Kesirli { private: double pay, payda; public: void get(); void goster(); Kesirli add(Kesirli); Kesirli operator+(Kesirli); }; void Kesirli::get() { cout << endl << "Payi giriniz : "; cin >> pay; cout << endl << "Paydayi giriniz :"; payda=0; while(payda == 0) { cin >> payda; if(payda==0) { cout << endl << "Tekrar giriniz (payda 0 olamaz)"; } } } void Kesirli::goster() { cout << pay << "/" << payda; } Kesirli Kesirli::add(Kesirli arg) { Kesirli temp; temp.pay = pay * arg.payda + payda * arg.pay; temp.payda = payda * arg.payda; return temp; } Kesirli Kesirli::operator+(Kesirli arg) { Kesirli temp; temp.pay = pay * arg.payda + payda * arg.pay; temp.payda = payda * arg.payda; return temp; }
Yukarıdaki kodda pay ve paydadan oluşan bir kesirli sayı için toplama işlemi tanımlanmıştır. Basitçe iki kesirli sayının toplanması işlemi için iki kesirli sayının paydaları çarpılarak eklenmiştir.
Dikkat edilirse yukarıdaki + işleminin üzerine yüklenmesi sırasında tek parametre alınmıştır. Bunun sebebi yazılmış olan sınıfın zaten bir kesirli sayı tutuyor olduğudur. Yani yukarıdaki toplama işlemi sayının kendisi ve parametre olarak verilen ikinci sayı arasına yapılmaktadır.