Merhaba arkadaşlar…Bu yazımızda sizlerle yapıcı fonksiyonlara değineceğiz.

Classtan nesne oluştururken otomatik olarak çalışan metotlardır diyebiliriz. Geriye değer döndürmezler ve class ismiyle aynı isimde olmak zorundadırlar. Dilediğimiz kadar oluşturabiliriz fakat parametreleri farklı olmak zorundadır. Hiç tanımlanmasalar bile arka planda çalışırlar. Örneğin değer tiplerindeki değişkenlere sıfır atayan constructor’dır. Bir diğer adı yapıcı metottur bazı kaynaklarda kurucu metot olarak da geçer.
Nesne oluştururken bir takım kurallar belirlemek istiyorsak, constructor tanımlarız.

*** Nesneler belleğin heap bölgesinde oluşturulur.***

Aşağıdaki kod bloğumuza göre; eğer nesne oluştururken herhangi bir parametre yollamadan oluşturuyorsak ilk yazdığımız parametresiz constructor çalışacaktır. String bir ifade ile çağırıyorsak ikinci constructor ve son olarak iki parametre ile çağırıyorsak üçüncü constructor çalışacaktır. İsimlerinin aynı, parametrelerinin farklı olmasına dikkat ediniz. Bu şekilde dilediğimiz kadar yazabiliriz. Değişkenler constructor’ a göre olacaktır.

public class Yazilimci
{
public string adi;
public string soyadi;
public int yasi;
public string dili ;
public Yazilimci()
{

yasi = 23;
}
public Yazilimci(string str)
{

adi = "Melek";
yasi = 30;
}
public Yazilimci(int sayi, string str)
{
soyadi = "Karapınar";
dili = "java";

}
}

Aşağıdaki kod bloğumuza göre yine yukarıdaki yazdıklarım geçerli olacaktır fakat ilk olarak nasıl çağırıyorsak (parametreli parametresiz gibi) o constructor çalışacaktır diyebiliriz. Örneğin kodumuza göre parametresiz nesne oluşturduğumuzda yine aynı mantıkla ilk yazdığımız constructor çalışacak fakat this ile anlıyoruz ki parametresi string olan constructor ondan önce çalışmalıdır. Daha sonrasında yine this ile yönlendiriliyorsak önce yönlendirdiğimiz çalışacak ve nereden yönlendirme aldıysak tekrar geriye doğru döneceğiz. Aslında çağırdığımız constructor çalışacak ve içindeki değişkenler nelerse onları alacağız buradaki mantık bizim oluştururken çağırdığımız constructor’ in içinde olmayan bir değişken veya birden çok değişken varsa onları da alabilmek. Farklı bir örnek vermek gerekirse bir constructorimiz olsun parametresiz ve içerisinde ad,soyad,yas değişkenleri olsun. Yukaridaki örnekteki gibi birden fazla constructor yazmış olalım ve yönlendirmeler yapalım eğer diğer constructor’in içinde cinsiyet diye bir değişken varsa ve yönlendirmeler dahilindeyse bizim oluştururken çağırdığımız constructor içinde cinsiyet olmasa bile cinsiyet değişkenini de almış oluruz.

public class Yazilimci
{
public string adi;
public string soyadi;
public int yasi;
public string dili ;
public Yazilimci():this("yazi")
{

yasi = 23;
}
public Yazilimci(string str):this(12345,"yazi")
{

adi = "Melek";
yasi = 30;
}
public Yazilimci(int sayi, string str)
{
soyadi = "Karapınar";
dili = "java";

}
}

Yazilimci y = new Yazilimci();
MessageBox.Show(y.adi+"------"+y.soyadi+"------"+y.yasi+"-----"+y.dili);

Ekran Alıntısı

Yazilimci y = new Yazilimci("ne yazdiğimizin bir önemi yok sadece string bir ifade");
MessageBox.Show(y.adi+"------"+y.soyadi+"------"+y.yasi+"-----"+y.dili);

Ekran Alıntısı

Yazilimci y = new Yazilimci(12345678,"string");
MessageBox.Show(y.adi+"------"+y.soyadi+"------"+y.yasi+"-----"+y.dili);

Ekran Alıntısı

Dilerseniz daha da karmaşık hale getirebilirsiniz. (Getirmelisiniz! Daha iyi anlaşılacaktır.) Constructors fonksiyonların birbirini çağırma durumu diyebiliriz.Böylece eksik değişkenler fonksiyonların birbirlerinden faydalanması sonucu tamamlanırlar. Görüşmek dileğiyle..

Facebook'dan yorumla