Class(Sınıf) Kavramı


Nesneye(object) yönelik programlama dillerinde nesneyi üretmek için class'ları kullanırız. ogrenci class'ından üretilen nesne1 ve nesne2 nesnelerini ürettik, public olarak tanımlanmış özelliklerin tipine göre tanımladık(isim - ogrenciNo).

using System;

namespace gitbook2
{
    class ogrenci //sınıfın ismi ogrenci olarak tanımlanıyor
    {
        /// <summary>
        /// ogrenci sınıfının tanımlanmış 2 tane özeliiği var isim ve ogrenciNo.
        /// ikiside public olrak tanımlanmıs ve main metodunda çağırılabilir
        /// </summary>
        public string isim;    //isim özelliği ekleniyor
        public int ogrenciNo;
    }



    class MainClass
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Class Kavramı");

            ogrenci nesne1 = new ogrenci(); //ogrenci class'ından nesne(object) üretiliyor.
            nesne1.isim = "ali";         //nesne1'in isim ozelliğine değer atıyoruz
            nesne1.ogrenciNo = 916;

            ogrenci nesne2 = new ogrenci();
            nesne2.isim = "veli";
            nesne2.ogrenciNo = 322;

            Console.WriteLine($"nesne1'in ismi ve numarası: {nesne1.isim},{nesne1.ogrenciNo} nesne2'in ismi ve numarası: {nesne2.isim}{nesne2.ogrenciNo}");
        }
    }
}

Kapsülleme(encapsulation)

Nesnenin özelliklerini tanımlarken belli kurallar belirlemek istersek kapsülleme kullanabiliriz. get-set fonksiyonlarını kullanarak özellikleri belirli kalıplar içinde tutabiliriz.

Örnek

kisi class'ının özelliklerinden birisi private diğeri ise public olarak tanımladık. Main metodu private olarak tanımlanmış tcNumarası özelliğine direk erişemiyor bunun yerine public olarak tanmladığımız TcNumarası metoduna erişiyoruz. TcNumarasının içinde get ve set fonksiyonlarını kullanarak bu kuralları belirledik ve private olarak tanımlanan tcNumarasına atama yapabiliyoruz.

using System;

namespace encapsulation
{

    class kisi
    {
        public kisi() // constructor kisi sınıfında ilk olarak çalışacağı için açıklama koyabiliriz.
        {
            Console.WriteLine("yeni bir nesne üretildi");    
        }

        public string isim;
        private int tcNumarası;


        public int TcNumarası
        {
            get
            {
                return tcNumarası;
            }
            /// <summary>
            /// gelen değeri value olarak set fonksiyonunda private olan tcNumarasına atadık.
            /// atama işlemi yaparken if-else kullanarak gelen değerin çift olması koşulunu değerlendirdik.
            /// </summary>

            set
            {
                if (value%2==0)  
                {   
         this.tcNumarası = value;
                }
                else
                {
                    this.tcNumarası = 0;

                }

            }
        }
     }

    class MainClass
    {
        public static void Main(string[] args)
        {
            kisi kisi1 = new kisi();
            Console.WriteLine("üretilen nesne için isim özelliğinin değerini giriniz.");
            kisi1.isim = Console.ReadLine();
            Console.WriteLine("üretilen nesne için tc numarasını giriniz özelliğinin değerini giriniz.");

            kisi1.TcNumarası= int.Parse(Console.ReadLine()); // console'dan TcNumarası özelliğinin değerini alıyor ve tipini(string->int) değiştiriyorum.
           if (kisi1.TcNumarası != 0)
            {
        Console.Write($"tc kimlik numarası :{kisi1.TcNumarası }");
            }
            else
            {
            Console.Write("tc numarası tek olamaz");

         }
        }
    }
}
Örnek

insan class'ının 2 tane constructer'ı bulunuyor. Nesne üretmek istediğimizde parametre alıp almadığına göre kullanması gerektiği

constructor'ı belirliyor. Polymorphism bir nesnenin farklı amaçlar için de kullanılabileceği anlamına geliyor ve constructor'lar içinde kullanılabilir.

using System;

namespace gitbook
{
    class insan
    {
        public insan() {                    
        Console.WriteLine("insan class'ından bir nesne üretildi ve isim olarak mayk verildi");
        }
    /// <summary>
    /// değer alan constructor tanımlarsam objeyi üretirken default olarak tanımlamamız lazım mayk objesini bu şekilde tanımladık.
       /// </summary>
        public insan(int yas)
        {
            this.yas = yas; 
        }
    /// <summary>
        /// polymorphism konusu altında geçen bu özellik constructor'ın yeniden tanımlanması(constructor overloading). 
        /// Bir constructor'ın farklı parametrelerle tekrar tanımlanması.değer alırken veya o classdan obje üretilirken önce o çalışmakta
        /// </summary>


    public string isim;
        private int yas;
        public int Yas
        {       
            get
            {
                return yas;
             }
            set
            {
                this.yas = value; 
            }   
         }
    }

    class MainClass
    {
        public static void Main(string[] args)
        {
            insan mayk = new insan(30); //constructor için int bir parametre alıyor.
            mayk.isim = "mayk";


            insan koray = new insan(); //parametre  almıyor.
            koray.isim = "ali koray ";
            koray.Yas = 25;

            Console.WriteLine($"mayk {mayk.Yas} yaşında  ali koray ise {koray.Yas}  ");
        }
    }
}

results matching ""

    No results matching ""