1 Kasım 2011 Salı

Constructor(Yapıcı) Metot

Önceki yazımda bir Futbolcu sınıfı yaratıp, Futbolcu sınıfına ait gerekli alanlar(field) ve metotlar tanımlamıştık, sonra Form1_Load kısmında Futbolcu sınıfına ait bir nesne üretip, tüm alanlara gerekli değerleri girmiştik.

Bu seferki senaryomuz da şöyle olsun, Form1_Load kısmına yine bir futbolcu nesnesi tanımlayalım, fakat oynamış olduğu maç sayısı alanına ulaşmayı unutalım. Peki, bu unutma bize pahalıya mal olabilir mi?

Evet olur, görüldüğü gibi maç başı istatistikleri hesaplanamadı. Çünkü maç sayısı alanına sıfır değeri yüklenmiş. Fakat biz o alana değer girmemiştik, nasıl sıfır alabildi ki? Sebep “Default Constructor”.

Default Constructor Nedir?

Biz bir sınıfa ait bir nesne ürettiğimizde kod tarafında yazmasak da otomatik olarak bir metot çalışır. Bu metotlara Default Constructor denmekte.

Constructor metotların ismi; sınıf ismi ile aynı, erişim düzenleyicisi de “public” olmalıdır. Eğer erişim düzenleyicisi “private” olursa, yaratacağımız nesne sınıfa erişemez ve hata oluşur.

Yukarıdaki gibi bir Default Constructor tanımlanırsa, her Futbolcu sınıfına ait bir nesne oluştuğunda, maç sayısı alanına otomatik olarak 10000 değeri yüklenmekte.

Constructor metotlar da “return” olmaz. Yukarıdaki gibi parametresi olmayan Constructor metotlara: Default Constructor Metot denmekte. Default Constructor sayesinde Herhangi bir sınıfa ait bir nesne oluştuğu anda, o sınıfa ait alanlara otomatik olarak bir takım değerler yüklenmekte. Örnek olarak Int tipindeki alanlara Constructor metot içerisinde bir değer atamadıysanız; otomatik olarak sıfır, bool tipindeki alanlara bir değer tanımlamadıysanız, otomatik olarak false değeri yüklenmekte.

Constructor metotlar “overloading” yapısını desteklemekte. Bu şekilde birçok Constructor yaratılabilmekte.

Bu Constructor metotlardan birine şu şekilde ulaşabiliriz:

Yukarıdaki resimde de görüldüğü gibi, Default Constructor ile birlikte 3 tip Constructor metot yapısının mevcut olduğunu görünmekte. Ben üçüncü Constructor metodu seçip, Futbolcu sınıfına ait nesne oluştururken, futbolcu sınıfa ait bir takım alanlara değeler girdim.

Constructor metot kullanımının en önemli sebeplerden biride, kullanıcıya zorunlu bir takım değerlere girmeyi zorlamak. Mesela tek bir Constructor Metot oluşturalım:

Futbolcu sınıfına ait bir nesne üretmeye çalışalım:

Görüldüğü gibi, nesneyi yaratırken bizden bazı değerleri girmeyi zorlamakta, bu şekilde unutulabilecek alanları Constructor içinde tanımlayabilmekteyiz.

Umarım faydalı bir yazı olmuştur. Diğer yazımda görüşmek üzere.

0 yorum:

Yorum Gönder

 
;