Yazan : Şadi Evren ŞEKER

Programlama dilinde bir değişkenin (variable) tipinin değiştirilmesi anlamındadır. Temel olarak değişkenlerin tanımlandığı andan itibaren bir tipi bulunur. Bunun her ne kadar bazı dillerde istisnası olsa da (php, visual basic, perl gibi) bu dillerde de değişkenin tipi yine de tipsiz olarak belirtilmektedir.

İşte tanımlama sırasında sahip olunan tipin daha sonradan değiştirilmesi tip inkılâbı (typecasting) olarak adlandırılır. Örneğin aşağıdaki C dilindeki kodu ele alalım:

int a;
a=10;
float f;
f = a;

Yukarıdaki örnekte bir int tipinde değişken olan a’nın değeri float tipindeki f değişkeninin içerisine atanmıştır (Assignment). Bu satırdan sonra f değişkeninin içinde 10.0 değeri float olarak bulunacaktır.

Tersi olarak aşağıdaki kodu incleyelim:

float f;
f=3.14;
int a;
a = f;

Yukarıdaki kodda ise float olan değişkenin değeri int olan a değişkeninin içerisine atanmak istenmiştir. Çoğu derleyici (compiler) tarafından hatalı bir satır olarak görülen ve derleme sırasında hata veren yukarıdaki kodun son satırnı aşağıdaki şekilde düzeltmeniz gerekebilir:

a = (int) f;

Bu satırın anlamı f değişkeninin içerisinde değeri al tipini int yap ve a değişkeninin içerisine koy demektir. İşte burada yapılan işlem tip değiştirmektir ve (int) olarka geçen komut bir tip inkılabı operatörüdür (type casting operator). Bu işlemden sonra dikkat edilecek bir  husus da a değişkeninin içerisinde artık 3 sayısal değeri olduğu ve .14 küsuratının artık kaybedildiğidir. ( örneğin 3.90 değeri konulsaydı yine 3 değeri alınacaktı, burada bir yuvarlama yapılmaz sığdığı kadarı alınır, yani float değişkendeki ondalıklı kısım atılarak tam sayı kısmı int değişkenin içerisine konulur)

Nesne yönelimli programlama dillerinde tip dönüştürmek için özel fonksiyonlar da yazılabilir. Örneğin JAVA’da kullanılna toString() (String (Dizgi, metin) dönüştür) fonksiyonu buna güzel bir örnektir:

class insan{
   String isim;
   int boy;
   public String toString(){
      return " isim : " + isim + " boy : " + boy;
   }
}
class deneme{
   public static void main(String args[]){
      insan ali = new insan();
      ali.isim = "Ali Baba";
      ali.boy = 180;
      System.out.println(ali);
   }
}

Yukarıdaki kod parçasında iki farklı sınıf (class) bulunmaktadır. İlk sınıfta insan tipi tanımlanmış ve bu sınıfın içerisine bir toString() fonkisyonu yerleştirilmiştir. İkinci sınıf’ın içerisinde ise main fonksiyonu bulunmakta ve çalıştığında ali isminde bir insan nesnesi tanımlamakta artından bu nesnenin ismine “Ali Baba” boyuna ise 180 değerlerini koymaktadır.

Son satırda olan işlem ise oldukça ilginçgir. Bu satırda System.out.println fonksiyonu ile ali nesnesi ekrana basılmıştır. Ancak ali nesnesi bilindiği üzere insan sınıfındandır ve bilindiği üzere println fonksiyonu ekrana dizgi (string) basmaktadır ve println’in insan basan bir üzerine yüklemesi (overload) bulunmamaktadır.

Bu durumda JAVA otomatik olarak insan sınıfından türetilmiş olan ali nesnesini dizgiye (string) çevirmeye çalışır. Bunun ise tek yolu bu sınıftaki toString() fonksiyonunu çağırmaktır. Ve sonuç olarak ekrana aşağıdaki satır basılır:

isim : Ali Baba boy : 180

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir