Sınıflar

       Şimdiye kadar yaptığımız uygulamalarda ve öğrendiğimiz temel bilgilerde aynı türde birden fazla veriyi bir arada tutabiliyor ve bu veri grubuyla (örneğin diziler) işlemlerimizi gerçekleştirebiliyorduk. 

       Öğrencilerin ortalamasını hesaplayan bir uygulama yaptığımızı düşünelim. Bu uygulamada öğrencilerin notlarınızı bir diziye atarak işlemlerimizi yapabiliriz. Fakat bir öğrencinin sadece ortalaması bulunmaz aynı zamanda ismi, numarası, hatta aldığı dersler ve o derslerin ortalaması da bulunmaktadır. Böyle bir durumda bizim öğrenciyi içeren sınıfı kendimizin oluşturması ve öğrenciye ait bilgileri bu sınıf içerisinde tutmamız gerekir. Oluşturduğumuz bir sınıfa o sınıfla ilgili fonksiyonlar da yazabiliriz.

Sınıf Nedir?

       Temel olarak sınıf; bir nesnenin ( öğrenci, araba, kitap, kalem) özelliklerini, şeklini ve işlevini tanımlayabileceğimiz bir şablondur.

Nesne Nedir?

       Oluşturduğumuz sınıftan türettiğimiz veri yapısına nesne denir. Sınıflar nesneleri oluşturabileceğimiz ana şablonu belirtir. Bir sınıftan birden fazla nesne türetebiliriz. Örneğin biz bir öğrenci sınıfı oluşturduysak eğer, öğrencileri içeren bir liste tanımlayabilir, yada sadece bir öğrenciyi oluşturabiliriz.

C# Dilinde Sınıf Oluşturma

      Yeni bir sınıf oluştururken aşağıdaki yapıyı kullanarak oluşturmanız gerekmektedir.

class SinifAdi
{
      erişimBelirleyici veriTürü degiskenAdi1;
      erişimBelirleyici veriTürü degiskenAdi2;
 
     erişimBelirleyici geriDönüşTipi metotunDegiskenAdi1 (Parametreler(istege bagli)
     {
       //Islemler
     }
 }

Erişim Belirleyicileri Nedir?

       Sınıflar konusunda erişim belirleyicilerini de biliyor olmamız gerekmektedir. Kullandığımız C# dilinde sınıflarda tanımlayabileceğimiz 5 tane erişim belirleyici vardır bunlar;

       public: Bu erişim belirleyicisi ile tanımlanmış sınıf üyelerine her yerden erişim izni verilmiş olur.

       private: Bu erişim belirleyicisi türünde tanımlanmış üyelere sadece aynı sınıf içerisinde tanımlanmış diğer üyeler tarafından erişim izni verilmiş olur.

       protected: Bu erişim belirleyicisi türünde tanımlanmış üyelere tanımlandık sınıf ve bu sınıftan türetilmiş diğer sınıflardan erişim izni verilmiş olur.

       İnternal: Bu erişim belirleyicisi türünde tanımlanmış üyelere aynı assembly içinden erişim izni verilmiş olur.

       protected internal: Bu erişim belirleyicisi türü protected ve internal erişim türlerinin veya işlemiyle birleştirilmiş halidir.

       Oluşturduğumuz sınıf içerisinde herhangi bir erişim belirleyicisi kullanmazsak, bu  değerler varsayılan olarak private özelliğini alacaklardır.

 

Sınıf Oluşturulması

       Öğrencinin genel özelliklerini içeren bir sınıf oluşturalım;

public class Ogrenci
{
    public string Adi { get; set; }
    public string Soyadi { get; set; }
    public int Numara { get; set; }
    public double Ortalama { get; set; }
    public bool GectiMi { get; set; }
}

Nesne Türetme

       Öğrenci sınıfımızı tanımladık. Şimdi oluşturduğumuz bu sınıfı kullanarak bir tane öğrenci nesnesi oluşturulım.

       Oluşturduğumuz sınıfları nesne olarak türetmemiz gerekmektedir. Bunun için aşağıdaki gibi oluşturmamız gerekmektedir.

Ogrenci yeniOgrenci = new Ogrenci();

       Nesnemizi oluşturduktan sonra aşağıdaki gibi öğrencimize ait değerleri girebiliriz.

yeniOgrenci.Adi = "Yiğit";
yeniOgrenci.Soyadi = "Nuhuz";
yeniOgrenci.Numara = 320;
yeniOgrenci.Ortalama = 85;
yeniOgrenci.GectiMi = true;

       Bir sınıftan nesne türetmenin farklı yolları bulunmaktadır. Bir diğer yöntem olarak aşağıdaki gibi sınıftan nesne türetebiliriz.

Ogrenci yeniOgrenci = new Ogrenci
{
     Adi = "Yiğit",
     Soyadi = "Nuhuz",
     Numara = 320,
     Ortalama = 85,
     GectiMi = true
};

       Her iki yöntem sonunda elimizde bir öğrenciye ait nesne oluşturmuş oluruz.

 

Nesnedeki değerlere erişim

        Bir nesnenin içerisindeki değere ulaşabilmek için sinifAdi.OzellikAdi şeklinde çağırmamız yeterlidir. Nesne bize çağırdığımız parametrenin türünde dönüş yapacaktır.

        Örneğin string türünde oluşturduğumuz ad ve soyad özelliklerimizi string bir değişkene aşağıdaki gibi aktarabiliriz.

string ogrencininIsmi = yeniOgrenci.Adi + " " + yeniOgrenci.Soyadi;

Nesnedeki değerlerin ekranda gösterimi

Console.WriteLine("Öğrenci: " + ogrencininIsmi);
Console.WriteLine("Numarası: " + yeniOgrenci.Numara);
Console.WriteLine("Ortalama: " + yeniOgrenci.Ortalama);

       Oluşturduğumuz örneğin son hali aşağıdaki gibidir. Oluşturduğumuz sınıfı main fonksiyonu ile aynı class içerisinde oluşturabileceğiniz gibi, farklı bir klasörde de tanımlayabilirsiniz.

        public class Ogrenci
        {
            public string Adi { get; set; }
            public string Soyadi { get; set; }
            public int Numara { get; set; }
            public double Ortalama { get; set; }
            public bool GectiMi { get; set; }
        }
        static void Main(string[] args)
        {
            //Ogrenci yeniOgrenci = new Ogrenci();
            //yeniOgrenci.Adi = "Yiğit";
            //yeniOgrenci.Soyadi = "Nuhuz";
            //yeniOgrenci.Numara = 320;
            //yeniOgrenci.Ortalama = 85;
            //yeniOgrenci.GectiMi = true;

            Ogrenci yeniOgrenci = new Ogrenci
            {
                Adi = "Yiğit",
                Soyadi = "Nuhuz",
                Numara = 320,
                Ortalama = 85,
                GectiMi = true
            };

            string ogrencininIsmi = yeniOgrenci.Adi + " " + yeniOgrenci.Soyadi;
            Console.WriteLine("Öğrenci: " + ogrencininIsmi);
            Console.WriteLine("Numarası: " + yeniOgrenci.Numara);
            Console.WriteLine("Numarası: " + yeniOgrenci.Numara);
            Console.WriteLine("Ortalama: " + yeniOgrenci.Ortalama);
        }

Sınıf içinde fonksiyon oluşturmak

       Oluşturduğumuz sınıf içerisinde kendi fonksiyonlarımızı da yazabiliriz.

       Daha önceki örnekte oluşturduğumuz öğrenciyi şimdi yazacağımız fonksiyon ile oluşturalım.

       Ogrenci sınıfmız;

public class Ogrenci
    {
        public string Adi { get; set; }
        public string Soyadi { get; set; }
        public int Numara { get; set; }
        public double Ortalama { get; set; }
        
        public void OgrenciOlustur(string adi , string soyad, int numara, double ortalama)
        {
            this.Adi = adi;
            this.Soyadi = soyad;
            this.Numara = numara;
            this.Ortalama = ortalama;
        }
    }

       Fonksiyonun çağrılması;

Ogrenci yeniOgrenci = new Ogrenci();

yeniOgrenci.OgrenciOlustur("Yiğit","Nuhuz",320,85);

string ogrencininIsmi = yeniOgrenci.Adi + " " + yeniOgrenci.Soyadi;
Console.WriteLine("Öğrenci: " + ogrencininIsmi);
Console.WriteLine("Numarası: " + yeniOgrenci.Numara);
Console.WriteLine("Ortalama: " + yeniOgrenci.Ortalama);

       Bir başka fonksiyonu da öğrencinin ortalamasına göre geçip geçmediğini öğrenmek için yazacak olursak Ogrenci sınıfımızın son hali aşağıdaki gibi olacaktır;

 public class Ogrenci
    {
        public string Adi { get; set; }
        public string Soyadi { get; set; }
        public int Numara { get; set; }
        public double Ortalama { get; set; }
        
        public void OgrenciOlustur(string adi , string soyad, int numara, double ortalama)
        {
            this.Adi = adi;
            this.Soyadi = soyad;
            this.Numara = numara;
            this.Ortalama = ortalama;
        }

        public bool OgrenciGectiMi()
        {
            if (this.Ortalama < 50)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }

       Uygulamayı aşağıdaki gibi güncelleyip çalıştırdığımızda 7 olan öğrenci ortalaması “false” sonucu verecektir bize.

Ogrenci yeniOgrenci = new Ogrenci();
yeniOgrenci.OgrenciOlustur("Yiğit","Nuhuz",320,7);
            
Console.WriteLine("Durumu: " + yeniOgrenci.OgrenciGectiMi());


Sınıflar ile ilgili sorularınızı yorum alanından sorabilirsiniz.



 

 

Add comment