Constructor (Yapıcı) Metot Nedir?
Bir sınıftan nesne oluşturulduğu an arkaplanda otomatik olarak çalıştırılan metotlara yapıcı metotlar denilmektedir. Bu yüzden nesne oluşturulduğunda otomatik olarak yapılmasını istediğimiz işlemleri yapıcı metotların içerisine yazarız.
Yapıcı metodu kısaca tanımlamak için klavyede ctor+tab+tab tuşları işimizi görecektir.
Yapıcı Metotlar Nasıl Tanımlanır?
Yapıcı metotların isimleri sınıf isimleri ile aynı olmak zorundadır.
Public olarak bildirilmeleri gerekir.
Geri dönüş değerleri yoktur.
class Matematik
{
private double PiSayisi;
private double EulerSayisi;
public Matematik()
{
PiSayisi = 3.1415;
EulerSayisi = 2.7182;
}
}“new Matematik()” ifadesi ile Matematik sınıfından bir nesne oluşturulduğu an yapıcı metot otomatik olarak çalışacak ve PiSayisi özelliğine 3.1415 değerini, EulerSayisi özelliğine 2.7182 değerini atayacaktır.
Sıradan metotlar gibi yapıcı metotlarda parametre alabilmektedir. Ancak yapıcı metotlar nesne oluşturulduğu an çalıştığı için parametreler nesne oluşturulurken girilmelidir.
class Ogrenci
{
// Özelliklere diğer sınıflardan erişilemez. (Private)
private string AdSoyad;
private int Numara;
private int Sinif;
// Nesne oluşturulurken girilen parametreler ilgili özelliklere atanacaktır.
public Ogrenci(string ogrAdi,int ogrNo,int ogrSinif)
{
AdSoyad = ogrAdi;
Numara = ogrNo;
Sinif = ogrSinif;
}
// Öğrenciye ait bilgiler ekrana yazdırılacaktır.
public void Bilgi()
{
Console.WriteLine("Öğrencinin Adı:{0}", AdSoyad);
Console.WriteLine("Öğrencinin Numarası:{0}", Numara);
Console.WriteLine("Öğrencinin Sınıfı:{0}", Sinif);
}
}
class Program
{
static void Main(string[] args)
{
// Yapıcı metoda parametreler nesne oluşturulurken gönderildi.
Ogrenci ogr1 = new Ogrenci("Mehmet Özdemir", 134, 4);
Ogrenci ogr2 = new Ogrenci("İrem Kesici", 118, 3);
// Öğrencilere ait bilgiler ekrana yazdırıldı.
ogr1.Bilgi();
ogr2.Bilgi();
}
}Yapıcı Metotların Aşırı Yüklenmesi(Overload)
Tıpkı sıradan metotlar gibi yapıcı metotlarda aşırı yüklenebilir.Parametre sayısı ve parametrelerin tipinden en az birisinin farklı olması şartıyla birden fazla yapıcı metot tanımlanabilir.
!!-------------------ÇALIŞMA SIRASI ÖRNEK----------------!
Öncelikle yapıcı metodu olan bir Öğrenci sınıfı oluşturalım.
Uygulamamızın main metodunu aşağıdaki gibi düzenleyelim;
ÇIKTI

<---------------------------!ÖRNEK!------------------------>
Class içinde tanımladığımız yapıcı metot içerisinde parametreli kullanımı gösterelim. Console ekranınada ad, soyad, yaş ve meslek bilgisi girilsin. Öncelikle sınıfımı oluşturalım.
Görüleceği üzere burada sınıfımla aynı ismi taşıyan bir constructor oluşturdum. Metoduma ait parametreleri de tanımladım. Akabinde yapılacak işlemleri belirttim.
Program.cs’ye dönüp kodlarımı yazıyorum:
Öncelikle değişkenlerimi oluşturdum. Mateatiksel işlem vb yapmayacağım için tüm değişkenlerim string tipinde. Daha sonra kullanıcıdan veri girişi yapmasını istiyorum. Her bir girilen veriyi ilgili değişkenime Console.ReadLine() ile atadım. Daha sonra Personel sınıfımdan prsnl nesnesi oluşturdum ve daha önce tanımladığım değişkenleri parametre olarak belirttim.
!---------------------ÖRNEK--------------------!
Bu örnekte de ilk değer ataması yapılmış bir constructor metot yapalım.Örneğimde yine personel isminde bir class oluşturacağım. Bu classımda yine personelin adı, soyadı, doğum yılı, doğum yeri ve ünvanı yer alacak. Doğum yılını bu sefer int tipinde yapalım.Şimdi benim bu örneğimde amacım yapıcı metodumun her halükarda ilk değerlerinin olması. Şöyle bir senaryo düşünün, bir form doldurtuyorsunuz ancak bu formda boş geçilmesini istemediğiniz alanlar var veya boş geçilse bile sabit kabul edeceğiniz değerlerin yazmasını istiyorsunuz İşte burada yapıcı metot içinde ilk değer ataması kullanma yöntemine başvurabilirsiniz.
Program.cs e dönüş;
Öncelikle Personel sınıfından prsnl adında bir nesne tanımladım. Daha sonra yazdırma komutlarımı yazdım. Eğer bu şekilde çalıştırırsam aşağıdaki gibi ilk değer atamalarını görebilirim.

Örnek olarak birkaç değer ataması yaparak örneğimizi bitirelim.Kodlarımı aşağıdaki gibi düzenliyorum.
Bu sefer ad bilgisine, soyad bilgisine ve unvan bilgisine veri girişi yaptım. Ancak ad bilgisindeki, soyad bilgisindeki ve unvan bilgisindeki yazı yazma şeklime özelilkle dikkat edin. Sınıf içindeki encapsulation işlemlerim ile bunların hepsi büyük harfe dönecek. Doğum yılı bilgisini girmediğim için varsayılan olarak 1900 yazacak. Doğum yeri bilgisi de girmediğim için varsayılan olarak N/A yazacak. Böylelikle hem encapsulation işlemlerimin hem de yapıcı metodumum çalıştığını görebileceğim. Ekran çıktısı aşağıdaki şekilde
MEHMET
ÖZDEMİR
1900
N/A
MÜHENDİS
Last updated