Son Haberler
Anasayfa / Yazılım / C# / Object ve Constructor Kavramları

Object ve Constructor Kavramları

Bilindiği üzere, nesneler sınıfların canlandırılmış halidir. Yani bir sınıfı ve üyeleri doğrudan kullanmak yerine ondan bir nesne üretip bunu nesne aracılığı ile kullanmayı tercih ediyoruz. Bir sınıftan nesne oluşturulduğunda, nesneyi hazırlayan şekillendiren yordamlar oluşur işte bunlara constructor (yapıcı) adı verilir. Constructor dışarıdan veri alabilir ancak geriye değer döndürmez. Bir sınıftan nesne oluşturduğumuz da yapılmasını istediğimiz işlemleri bu yordamlar yani constructor (yapıcılar) ile gerçekleştiririz. Constructors (yapıcılar) nesneleri oluşturmak için kullanılan new operatörü ile birlikte tetiklenirler.

Yapıcılar (constructors) sınıf ile aynı ismi taşırlar ve dışarıdan erişilebilecekleri için bu yordamın public olarak tanımlanması gerekmektedir. Bazı durumlarda programcının sınıftan bir instance oluşturmasını engellemek amacı ile private olarak tanımlanabilir.

Şimdi yazımda örneğime geçmeden önce eğer incelemedi iseniz alttaki yazıya bir göz atınız.

Bir Sınıfta İçinde Değişken Oluşturma ve Özellik Atama

Burada yer alan örnekte ben deneme sınıfı içinde bir elma adında private bir değişken oluşturmuştum. Daha sonra bu değişkenime public olarak bir _elma adında property verrmiştim. Ben bu elma değişkenimi oluşturduğumda içerisinde yer alan değer varsayılan olarak null bir değerdir. Eğer ben burada bu oluşturduğum nesneyi yani elmayı belirli bir takım şekillere binaen oluşturmak istiyorsam constructorlardan yararlanırım. Aslında zaten ben herhangi bir sınıftan her obje oluşturduğumda constructordan yararlanıyorum. İlk paragrafta belirttiğim üzere aslında new operatörü ile constructor tetikleniyor.

Yani kod olarak gösterirsek;

deneme ornek = new deneme();

kod bloğunda new operatöründen sonra ilgili sınıfımı belirtip, parantez aç kapa yaptığımda herhangi bir parametre içermeyen bir constructor oluşturmuş oluyorum. Bu aslında varsayılan olarak mecburen public türünde oluşturulmuş oluyor. İstesek de istemesek de bu var 🙂 Dolayısı ile yine ilk paragrafta belirttiğim üzere herhangi bir sınıftan bir nesne oluşturduğumuzda mutlaka bir varsayılan olarak parametresiz constructor oluşturuluyor. Bununla birlikte biz kendimize göre de istediğimiz özelliklerde constructorlar oluşturabiliriz.

Şimdi bir örnek yapıyorum :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
    class Program
    {
        //örneğimde Hesap sınıfına ait olarak mesai isminde bir değişken, 
        //Hesap adında bir constructor ve UcretHesapla adında bir metot. 
        public class Hesap
        {
            //değişkenim
            public decimal mesai;
            //Oluşturduğum ve HesapGrupID adında byte tipinde 
            //bir parametreye sahip constructor oluşturdum
            public Hesap(byte HesapGrupID)
            {
                if (HesapGrupID == 1)
                {
                    mesai = 50;
                }
                if (HesapGrupID == 2)
                {
                    mesai = 100;
                }
            }

            public decimal UcretHesapla()
            {
                //burada sabit değerler tanımladım.
                decimal ucret = 3000;
                byte fazlaCalisilanSaat = 10;
                return ((fazlaCalisilanSaat * mesai) + ucret);
            }

        }
        static void Main(string[] args)
        {
            //ben burada standart olarak 2 değerini yolluyorum, detaya çok girmiyorum
            Hesap maas = new Hesap(2);   
            
            Console.WriteLine("Mesai Saati Birim Saat Ücreti: {0}", maas.mesai);
            decimal alinacakUcret = maas.UcretHesapla();
            Console.WriteLine("Toplam Maaş: {0}", alinacakUcret);
            Console.ReadLine();
        }
    }
}

Örnekte görüldüğü gibi Hesap sınıfından bir nesne oluşturduğumda, constructor?a 2 değerini gönderdim, constructorın içindeki değer eğer 2 ise mesai saati 100 ile hesaplanacağı için mesai değişkenin içeriği 100 oldu. Fazla çalışılan saat olarak ben 10 saat tanımlamıştım. Dolayısı ile 1000 lira buradan maaşa ek gelecek. UcretHesapla fonksiyonumda mesai değişkeni fazlaCalisilanSaat ile çarpılıp üstüne de standart ucret miktarı eklenerek maas bulundu ve bu örneğe göre sonucu 4000 olarak döndürdü.

2013040201

Şimdi bir constructor oluşturduğumuzda bunu UML diyagramda nasıl gösteririz buna değinelim. Constructorlarda tıpkı property gibi << ve >> arasında yer alırlar. Eğer public olarak tanımlanmışsa önünde + işareti yer alır.

2013040202

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir