Serdar YILMAZ / Software Developer
Bizimkisi Bir “Bug” Hikayesi...
Akbank Bankacılık Merkezi
Serdar Yılmaz C# – Yapıcı Metotlar

C# – Yapıcı Metotlar

dotnet

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ı Metotlar Nasıl Tanımlanır ? 

  1. Yapıcı metotların isimleri sınıf isimleri ile aynı olmak zorundadır.
  2. Public olarak bildirilmeleri gerekir.
  3. 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("Serdar Yılmaz", 134, 4);
        Ogrenci ogr2 = new Ogrenci("Ümit Özkan", 118, 3);

        // Öğrencilere ait bilgiler ekrana yazdırıldı. 
        ogr1.Bilgi();
        ogr2.Bilgi();
    }
}

Bir önceki yazımızda Sınıfları anlatırken yukarıdaki programı yapıcı metot kullanmadan hazırlamıştık (Bkz:C# – Sınıflar). Her iki kaynak kodu karşılaştırıldığında, yapıcı metodun Main()‘de ki kod kalabalığını azalttığı ve özelliklere olan erişimi daha kontrollü bir şekilde sağladığı görülecektir.

Yapıcı Metotların Aşırı Yüklenmesi

Tıpkı sıradan metotlar gibi yapıcı metotlarda aşırı yüklenebilir. Metotları anlatırken imza kavramına ve metotların aşırı yüklenmesine değinmiştik (Bkz: C# – Metotların Aşırı Yüklenmesi). Yinede kısaca bahsetmek gerekirse; parametre sayısı ve parametrelerin tipinden en az birisinin farklı olması şartıyla birden fazla yapıcı metot tanımlanabilir.

class Silindir
{
    private double r;
    private double h;
    private double PI = 3.1415;

    // Nesne oluşturulurken double tipinde 2 parametre girildiğinde çalışacak olan yapıcı metot. 
    public Silindir(double yaricap, double yukseklik)
    {
        r = yaricap;
        h = yukseklik;
    }

    // Nesne oluşturulurken double tipinde 3 parametre girildiğinde çalışacak olan yapıcı metot. 
    public Silindir(double yaricap, double yukseklik, double piSayisi)
    {
        r = yaricap;
        h = yukseklik;
        PI = piSayisi;
    }

    public double Hacim()
    {
        return (PI * r * r * h);
    }

    public double YuzeyAlani()
    {
        return (2 * PI * r * h);
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 3.Parametre girilmediği için PI başlangıç değerini(3.1415) alacaktır. 
        Silindir s1 = new Silindir(4, 6);
        Console.WriteLine("Silindirin Hacmi:{0} - Silindirin Yüzey Alanı:{1}", s1.Hacim(), s1.YuzeyAlani());

        // 3.Parametreye girilen değer PI'ye atanacaktır. 
        Silindir s2 = new Silindir(4, 6, 3);
        Console.WriteLine("Silindirin Hacmi:{0} - Silindirin Yüzey Alanı:{1}", s2.Hacim(), s2.YuzeyAlani());
    }
}

Varsayılan Yapıcı Metot

Her sınıfın biz tanımlasak da tanımlamasak da bir yapıcı metodu vardır. Bu yapıcı metoda varsayılan yapıcı metot denilmektedir. Default olarak sınıf içerisinde yer alan bu yapıcı metodun görevi; sınıf içerisindeki özelliklere(değişkenlere) herhangi bir ilk değer vermediğimizde, bu özelliklerden numerik olanlara “0”, bool tipinde olanlara “false ” ve string gibi referans tipli olanlara da “null” değerini atamaktadır.

Serdar YILMAZ


Bu İçeriği Arkadaşlarınızla Paylaşmak İster misiniz?

8 Yorum

  1. Coder
    28 Ağustos 2020 de 19:20 · Cevapla

    Başarılı.

  2. Doğan
    1 Nisan 2020 de 16:53 · Cevapla

    Hocam kalemine sağlık vallahi, koca koca derslerden sonra hap gibi, açıklayıcı, çok güzel oldu bu bilgiler.

  3. ebru
    28 Şubat 2020 de 11:46 · Cevapla

    Verdiğiniz bilgiler için gerçekten çok teşekkürler .Anladığımı sandığım şeyleri de meğerse bilmiyormuşum bunu farketmiş oldum.

  4. Huseyin
    31 Ocak 2020 de 10:59 · Cevapla

    Serdar bey kısa ve öz anlatımınız için teşekkür ederiz

  5. Oğuz
    31 Ağustos 2019 de 14:48 · Cevapla

    Sayfanızın çok yardımı dokundu. Çalışmalarınızın devamını dilerim.

  6. Murat
    9 Temmuz 2019 de 15:53 · Cevapla

    Mukemmel, kafa karistirmadan cok temiz anlatim. Buda bir yetenek olsa gerek. Muhtesem bir ornek.

    • Serdar Yılmaz
      11 Temmuz 2019 de 21:12 · Cevapla

      Değerli yorumunuz için teşekkür ederim.

Bir Yorum Yapın