C# Dilinde Yapýlandýrýcýlara Aþýrý Yüklenmesi

C# dilinde bulunan ve nesne yönelimli programlama kavramý içinde yeralan güzel bir özelliði yapýlandýrýcýlara aþýrý yüklenme konusunu bu yazýmýzda inceleyelim. Bazen bir nesneyi oluþtururken bu iþi birden farklý þekillerde yapmak zorunda kalýrýz.

Mesela elimizde bir programcý sýnýfý var ve bu sýnýftan oluþturduðumuz her programcý nesnesinin tüm özelliklerini oluþtururken veremeyebiliriz. Programcý nesnelerimizi oluþtururken bir kýsým bilgileri sonradan elde etmek durumda kalabiliriz. Veya baþka bir programda herhangi bir sýnýfýn bir örneðini oluþtururken bu nesneye ait olan n tane özelliðin bir kýsmýna ihitiyaç duymadan girilmeyen parametrelere varsayýlan deðerler atayarak iþimizi halletme þansýmýz da var.

Aþaðýdaki programýmýzda, Programci sýnýfýmýzýn yasi, adi, soyadi ve kullandigiDil olmak üzere 4 tane özelliði bulunmakta. Sýnýfýmýzýn 4 tane yapýlandýrýcýsý var. Bunlarýn isimleri ayný (zaten yapýlandýrýcýnýn ismi sýnýf ismi ile ayný olur). Farklý olan ise aldýklarý parametre sayýlarý ve tipleri olabilir.

Sýrasýyla, birinci yapýlandýrýcý hiç bir deðer almýyor. Ýkinci yapýlandýrýcýmýz iki tane deðiþken alýyor. Bunlardan yas ve adi deðerleridir. Üçüncüsü ise yas, adi ve soyadi parametrelerini alarak nesnemizi oluþturuyor. Son yapýlandýrýcýmýz ise yas, adi, soyadi ve kullandigiDil deðiþkenleridir. Ýlk üç yapýlandýrýcý alýnmayan yas deðiþkenine 0 diðerlerine null deðerleri atýyor.

Sýnýfýmýzýn beþinci ve son metodu ise bu sýnýftan ürettiðimiz bir nesnenin özelliklerini ekrana yazdýrýyor. Eðer nesnenin bir özelliðinin deðeri varsa onu yazdýrýyor, yoksa bu özellik hakkýnda bir malumatýmýz yok gibisinden bir uyarý yazýyor ekrana.

Pogramýmýzýn Main() fonksiyonu içinde önce 4 tane (a, b, c, ve d) programcý nesnesi oluþturuyoruz. Bunlarýn herbirini ayrý yapýlandýrýcýlar ile oluþturuyoruz. showOzellik() metodumuz ile bunlarýn herbirinin özelliklerini ekrana yazdýrýyoruz.

using System;

class OverLoadedFunctions
{
   static void Main(string[] args)
   {
       Programci a = new Programci();
       Programci b = new Programci(23,"Ziya");
       Programci c = new Programci(27,"Kamuran","Kamiloðlu");
       Programci d= new Programci(30,"Hayrettin","Kütükçü","C#");

       a.showOzellikler();
       b.showOzellikler();
       c.showOzellikler();
       d.showOzellikler();

      Console.ReadLine();
    }
}

class Programci
{
       int yasi;
       string adi;
       string soyadi;
       string kullandigiDil;

  
 // Hic parametre almayan bir yapýlandýrýcý..
   public Programci()
   {
       this.adi=null;
       this.yasi=0;
       this.soyadi=null;
       this.kullandigiDil=null;
   }

   // Ýsmini ve yasini alan bir yapýlandýrýcý..
   public Programci(int yasi, string adi)
   {
       this.adi=adi;
       this.yasi=yasi;

       this.soyadi=null;
       this.kullandigiDil=null;
   }

    // Ýsmini, soyismini ve yasini alan bir yapýlandýrýcý..
   public Programci(int yasi, string adi, string soyadi)
   {
      this.adi=adi;
      this.yasi=yasi;
      this.soyadi=soyadi;

    this.kullandigiDil=null;
   }

    // Ýsmini, soyismini kullandýðý dili ve yasini alan bir yapýlandýrýcý..
    public Programci(int yasi, string adi, string soyadi, string kullandigiDil)
    {
       this.adi=adi;
       this.yasi=yasi;
       this.soyadi=soyadi;
       this.kullandigiDil=kullandigiDil;
    }

  public void showOzellikler()
  {
        Console.WriteLine("*****************************************************************\n");
        
        if(this.yasi!=0)
            Console.WriteLine("Yasi : "+this.yasi);
       else Console.WriteLine("Yasi bilgisi elimizde yok þu anda...");

       if(this.adi!=null)
           Console.WriteLine("Adý : "+this.adi);
      else Console.WriteLine("Adi bilgisi elimizde yok þu anda...");

      if(this.soyadi!=null)
           Console.WriteLine("Soyadý : "+this.soyadi);
      else Console.WriteLine("Soyadý bilgisi elimizde yok þu anda...");

      if(this.kullandigiDil!=null)
           Console.WriteLine("Kullandýðý Programlama dili : "+this.kullandigiDil);
      else Console.WriteLine("Hangi Dili kullanýðýný bilmiyoruz be... :-(\n");

     Console.WriteLine("\n*****************************************************************\n");
   }

}