İlginizi Çekebilir
C# Operatörler Nedir?
C# Constructor Nedir
  1. Ana Sayfa
  2. C#
  3. C# Constructor Nedir?

C# Constructor Nedir?

Sınıf ve nesne konularında fikir sahibi olduktan sonra sıra bu sınıfların oluşmalarını sağlayan yapıcı metotları tanıtacağımız C# Constructor Nedir başlığı hakkında bazı bilgiler ve örnekler çözmemiz gerektiğini fark ettim. 🤨

Eğer henüz sınıf ve nesne kavramı hakkında bir fikriniz yoksa bir önceki paylaştığım C# Class ve Nesne Kavramları içeriğime emrecelen.com.tr/c-sharp-class-ve-nesne-kavramlari/ bu adresten ulaşabilir ve C# Class Nedir, Nesne Nedir gibi sorulara cevap bulabilirsiniz. 🕵🏻

Sınıf ve nesne kavramları hakkında bir kaç şey daha önceden araştırmış ya da bu konuda bir bilginiz varsa artık C# Constructor Nedir sorumuza cevap arayabiliriz demektir. Bu cevabı ararken uygulayacağımız örnekleri denemeyi sakın unutmayın.

C# Constructor Nedir? (Yapıcı / Kurucu Metot)

C# Constructor, nesne yönelimli programlama kavramı içerisinde bulunan sınıf yapılarının nesne olarak tanımlanmasında alt yapıyı hazırlayan, kurucu rolü üstlenen, sınıf ismi ile aynı isime sahip olan, geriye değer döndürmeyen fonksiyon türleridir.

Programlarımızı bu zamana kadar tanımlarken oluşturmuş olduğumuz sınıf içeriklerinde, biz farkına varmadan kod editörümüz, programı çalıştırmak için kodlarımızı derlediği zaman bizim için gizli, null yapıda bir constructor oluşturuyordu. Buradan çıkartmamız gereken kavram ise her sınıf oluşturduğumuz zaman ister istemez bir constructor yapı da oluşturduğumuzdur.

Yani, programlarımızın temeli, iskelet yapısı olarak bahsettiğimiz kavramın karşılığı constructor (yapıcı/ kurucu) metotlardır. C# Constructor nedir sorusuna temel bir cevap verdiğime göre, isterseniz bu yapıların tanımlanma koşullarına ve bize sağlamış olduğu özelliklere bir göz atalım. 👀

C# Constructor Özellikleri

Constructor yani yapıcı metotların projelerimize sağladığı faydaları ve özellikleri aşağıdaki maddeler üzerinde gözlemleyerek, inceleyebilirsiniz.

  • Projelerimiz içerisinde bazı tanımlamaları, sınıfı çağırırken gerçekleştirmek isteyebiliriz. Bu durumda çeşitli constructor metot tanımlamaları ile projemizin inşa sürecine müdahale edebiliriz.
  • İşlemlerin inşa sürecinde yapılacak aşamaları belirttiğimiz için değişikliklerimizi hızlı ve esnek bir şekilde gerçekleştirmemize olanak sağlar.
  • C# OOP (Nesne Yönelimli Programlama) özelliklerini kullanabildiğinden dolayı nesneye yönelimli programlamanın sağladığı avantajların ve özelliklerin bir çoğunu içerisinde barındırır. Bu C# OOP Özellikleri hakkında bir fikriniz bulunmuyorsa emrecelen.com.tr/c-sharp-oop-nedir/ buradaki adresten ilgili içeriğime göz atabilirsiniz.

C# Constructor Tanımlaması

Oluşturacağımız yapının nasıl tanımlanması gerektiğini iyi bir şekilde bilmemiz gerekiyor. Olası bir hata ile karşılaşmamak için ve projemizin temelini sağlam oluşturmak için bazı tanımlama kurallarımız ve dikkat etmemiz gereken noktalar var. Bu noktalar şu şekildedir:

  • C# Constructor tanımlaması yapacağımız zaman, yapıcı metodumuzun ismi ile sınıfımızın ismi aynı olmak zorundadır.
  • Constructor (Yapıcı / Kurucu) metotlarımız, geriye herhangi bir değer döndüremediklerinden dolayı void yapıda tanımlanmalıdır.
  • Tanımlamayı yaparken erişim belirleyicisini mutlaka public olarak belirtmemiz gerekmektedir. Aksi takdirde sınıf yapımıza erişemeyeceğimiz gibi, daha önce tanımladığımız yerlerde hata ile karşılaşırız.

Mantığı anlamamız için basit bir C# Constructor tanımlamasını gerçekleştirerek, teorik bilgilerimizi kod içerisinde gözlemleyelim.

namespace ConstructorMethod
{
    class EmployeManager
    {
        public EmployeManager()
        {
            //Constructor Metodumuzun Kod İçeriğinin Yer Alacağı Yer.
        }
        public EmployeManager(string name, string surName)
        {
            // Parametre Alan Constructor Metodumuzun Kod İçeriğinin Yer Alacağı Yer.
        }
    }
}

C# Constructor nedir sorumuza teorik olsada cevap vermiş oldum. Nasıl kullanıldığını, kullanılması gerektiğini ve özellikleri konusunda da çeşitli başlıklara yer verdim. Fakat elimizi bu aşamaya kadar kirletmedik. Akılda kalıcılığı uygulayarak, kod yazarak sağlandığını düşünen kesimdenim. Bu yüzden kod editörlerinizi hazırlayın. Artık kod yazma vakti. 💪🏻

C# Constructor Nedir
C# Constructor Metot Nedir

C# Constructor Örnekleri

Bir binanın temelini oluştururken bir kalıp oluşturulur ve bina inşasının yukarıya doğru ilerlemesi için bir iskele kurulur. İnşaat için duyulan bu tarz gereksinimlerin hepsini biz projelerimizde constructor (yapıcı / kurucu) metotlar sayesinde gerçekleştiririz.

Bu yapıyı daha iyi anlayabilmek için bir kayıt formu ekranı düşünelim. Bu kayıt formu esnasında bizlerden bazı doldurulması zorunlu, belirli koşulların sağlanması istenilir. Örnek olarak bu yapıyı ele alalım ve kod içeriğimizi oluşturmaya başlayalım. Bu süreç içerisinde uyguladığım/uygulayacağım aşamalar şu şekilde olacaktır:

  1. İlk işlem olarak projemin içerisine RegisterFormManager isminde bir sınıf oluşturdum.
  2. Sınıf içerisinde kullanıcıdan isteyeceğim bazı parametreleri, hafıza içerisinde tutmak için çeşitli veri tiplerinde değişken tanımlamaları gerçekleştirdim.
  3. Kullanıcıların gün içerisinde ne kadar kayıt gerçekleştirdiğini ya da kullanıcıya üyelik sürecine göre sağlayacağım avantajları takip edebilmek için yine yapıcı metotların sıklıkla kullanıldığı DateTime yapısının tanımlamasını gerçekleştirdim.
  4. Gerekli tanımlamaları gerçekleştirdikten sonra hayali bir form yapısı düşünerek constructor yapılarımı oluşturmaya başladım.
  5. Constructor metot içerisinde kullanmak için kullanıcı bilgilerini kontrol edeceğim ve daha sonra oluşturulan kullanıcıların bilgilerini yazdırmak için kullanacağım iki adet metot tanımlaması gerçekleştirdim. Tanımlama işlemlerimden sonra sınıf içeriğim bu hale geldi:
    namespace ConstructorMethod
    {
        class RegisterFormManager
        {
            ///---> Değişken Tanımlamaları <---\\\
            ///---> Zorunlu Alanlar:
            string userName, userPass, eMail;
            ///---> Tercihen Doldurulabilir Alanlar:
            string name, surName;
            string phoneNumber;
            ///---> Tarih Bilgisinin Tutulacağı Alan:
            DateTime date;
            ///---> Ayraç Tanımlaması:
            string ayrac = new string('-', 20);
            ///---> Constructor Metot Tanımlamaları <---\\\
            public RegisterFormManager(string userName,string userPass, string eMail)
            {
                controlMethod(userName, userPass, eMail, "", "", "");
            }
            public RegisterFormManager(string userName, string userPass, string eMail, string name)
            {
                controlMethod(userName, userPass, eMail, name, "", "");
            }
            public RegisterFormManager(string userName, string userPass, string eMail, string name, string surName)
            {
                controlMethod(userName, userPass, eMail, name, surName, "");
            }
            public RegisterFormManager(string userName, string userPass, string eMail, string name, string surName, string phoneNumber)
            {
                controlMethod(userName, userPass, eMail, name,surName,phoneNumber);
            }
    
            ///---> Kontrol Metot Tanımlaması <---\\\
            void controlMethod(string userName, string userPass, string eMail,string name,string surName, string phoneNumber)
            {
                if (userName.Length >= 5)
                {
                    if (userPass.Length >= 6)
                    {
                        if (eMail.Contains('@') && eMail.Contains('.') && eMail.Length > 13)
                        {
                            if (name.Length > 0)
                                this.name = name;
                            else
                                this.name = null;
                            if (surName.Length > 0)
                                this.surName = surName;
                            else
                                this.surName = null;
                            if (phoneNumber.Length == 11)
                                this.phoneNumber = phoneNumber;
                            this.userName = userName;
                            this.userPass = userPass;
                            this.eMail = eMail;
                            this.date = DateTime.Now;
                            Console.WriteLine("{0}\n<Kullanıcı Bilgileri Sistemimize Kayıt Edildi>\n{1}", ayrac, ayrac);
                        }
                        else
                            Console.WriteLine("{0}\n-> Mail Adresinizi Tanımsız Girdiniz.\n{1}", ayrac, ayrac);
                    }
                    else
                        Console.WriteLine("{0}\n-> Kullanıcı Şifreniz 6 Karakterden Kısa Olamaz.\n{1}", ayrac, ayrac);
                }
                else
                    Console.WriteLine("{0}\n-> Kullanıcı İsminiz 5 Karakterden Kısa Olamaz.\n{1}", ayrac, ayrac);
            }
            ///---> Kullanıcı Bilgilerini Yazdıralım <---\\\
            public void userInfo()
            {
                if (userName != null && userPass != null && eMail != null)
                {
                    Console.WriteLine("-> Kullanıcı Kayıt Tarihi: {0}", date);
                    if(name != null && surName == null)
                        Console.WriteLine("{0}\n<Kullanıcı Bilgileri>\n{1}\n-> Kullanıcı Adı: {2}\n-> Kullanıcı Şifresi: {3}\n-> Kullanıcı Mail Adresi: {4}\n-> Kullanıcının İsmi: {5}\n{6}", ayrac, ayrac, userName, userPass, eMail,name,ayrac);
                    else if(name!= null && surName!= null && phoneNumber == null)
                        Console.WriteLine("{0}\n<Kullanıcı Bilgileri>\n{1}\n-> Kullanıcı Adı: {2}\n-> Kullanıcı Şifresi: {3}\n-> Kullanıcı Mail Adresi: {4}\n-> Kullanıcının İsmi: {5}\n-> Kullanıcı Soyismi: {6}\n{7}", ayrac, ayrac, userName, userPass, eMail, name,surName, ayrac);
                    else if(name!=null && surName != null && phoneNumber != null)
                        Console.WriteLine("{0}\n<Kullanıcı Bilgileri>\n{1}\n-> Kullanıcı Adı: {2}\n-> Kullanıcı Şifresi: {3}\n-> Kullanıcı Mail Adresi: {4}\n-> Kullanıcının İsmi: {5}\n-> Kullanıcı Soyismi: {6}\n-> Telefon Numarası: {7}\n{8}", ayrac, ayrac, userName, userPass, eMail, name,surName,phoneNumber, ayrac);
                    else
                    Console.WriteLine("{0}\n<Kullanıcı Bilgileri>\n{1}\n-> Kullanıcı Adı: {2}\n-> Kullanıcı Şifresi: {3}\n-> Kullanıcı Mail Adresi: {4}\n{5}", ayrac, ayrac, userName, userPass, eMail,ayrac);
                } 
                else
                    Console.WriteLine("\n{0}\n<Kullanıcı Bilgileri Sistemde Bulunamadı>\n{1}", ayrac, ayrac);
            }
        }
    }

Temel yapımızı oluşturduktan sonra geriye tek bir adım kaldı, main sınıf içeriğimizi oluşturmak ve programımızı çalıştırmak. Programı test etmek için oluşturmuş olduğum Main sınıf içeriği ise şu şekildedir:

namespace ConstructorMethod
{
    class Program
    {
        static void Main(string[] args)
        {
            RegisterFormManager omer = new RegisterFormManager("omer5858", "omrfrk58", "[email protected]");
            omer.userInfo();
            RegisterFormManager kerem = new RegisterFormManager("kero334", "kemik344", "[email protected]","Kerem");
            kerem.userInfo();
            RegisterFormManager mert = new RegisterFormManager("mert55", "ibMertb", "[email protected]","Mert","Çağlayan");
            mert.userInfo();
            RegisterFormManager emre = new RegisterFormManager("admin", "root123", "[email protected]", "Emre", "Çelen", "05003300860");
            emre.userInfo();
        }
    }
}

Kod Çıktısı:

C# Constructor Nedir
C# Constructor Örnekleri

Örnek çalışmamızın sonuna geldiğimize göre artık klasikleşen kapanışımı yapma vaktim de geldi demektir. C# Constructor nedir sorusuna cevap aradığımız ve öğrenmeyi amaçladığımız konumuzda aklınıza takılan bir soru işareti veya konu işleyişi hakkında bir öneriniz var ise aşağıda bulunan yorum yap kısmından benimle iletişime geçmeyi unutmayın. Eğer başlangıç temelini oluşturdum, daha detaylı ve kapsamlı bir kaynak arıyorum diyorsan Microsoft tarafından hazırlanan tutorial kaynağına buradan ulaşabilir ve kendini geliştirmeye devam edebilirsin. 👋🏻

Yorum Yap

Yazar Hakkında

Yazmayı, öğrenmeyi, öğrendiklerini paylaşmayı , kodlamayı ve günün birinde Yönetim Bilişim Sistemleri Uzmanı olmanın hayalini kuran birisiyim.

Yorum Yap