Etiketler

6 Haziran 2014 Cuma

C# Yapılandırıcılar - Constructors

Herkese merhaba, geçen yazılarımda sınıflar 'a ve metotlara değinmiştik. Dikkatinizi çekti mi bilmiyorum, ama bu yazılarımın içindeki örneklerde; bir sınıf oluşturup çeşitli değişkenler tanımladıktan sonra bu değişkenlere, kullandığımız nesnelerle farklı değerler atıyorduk tek tek. İşte sıkıntımız burada başlıyor. Neden amele gibi uğraşıp tek tek yazalım ki?


İşte imdadımıza yapılandırıcılar yetişiyor. Daha önceki örneklerden hatırlayacak olursanız;

    class Kayit
    {
        public int yas;
        public int boy;
    }

      class Program
    {
        static void Main()
        {
           //nesne tanımlama kısımlarını atladım
           ogrenci1.yas = 17;
           ogrenci2.yas = 18;
           ogrenci2.boy = 180;
        }
    }

Gördüğünüz gibi iki farklı nesnemiz var ogrenci1 ve ogrenci2 olmak üzere. Ancak gördüğünüz gibi tek tek ogrenci2' in yaşı 18 olsun, boyu 180 olsun gibi girmem gerekiyor. İşte bu yöntem hem kafamızı karıştırabileceğinden, hem fazladan satır yazacağımızdan, düzensizlik olabileceğinden, hem tek tek uğraşmamız gerekeceğinden dolayı, iyi değildir. Bu yüzden yapılandırıcıları kullanırız.

Peki yapılandırıcıları nasıl tanımlıyoruz?

ulaşılabilirlik sınıfının_ismi(varsa-parametreler)
{
          //yapılandırıcımızın içi
}

Burada genelde başka sınıflardan çağıracağımız için erişilebilirlik kısmı genelde public yapılır. İkinci dikkat etmemiz gereken bir nokta ise yapılandırıcılar sınıflarının isimlerini alırlar.

    class Kayit
    {
        public int yas;
        public int boy;

        public Kayit(int y, int b)
        {
            yas = y;
            boy = b;
        }
    }

    class Program
    {
        static void Main()
        {
            Kayit ogrenci1 = new Kayit(17, 170);
            Kayit ogrenci2 = new Kayit(18, 180);

            Console.WriteLine(ogrenci1.yas);
        }

    }

Görüldüğü gibi public Kayit(int y, int b) bizim yapılandırıcımızdır. Ve bunu kullandığımız için artık nesnelerimizi oluştururken parametreli olarak rahatça girebiliyoruz değerlerimizi.

Son olarak dikkat edilmesi gereken noktalar;

  1. Yapılındırıcımız sınıfla aynı isimide olmalıdır. 
  2. Yapılandırıcımızın içinde return kullanılamaz