27 Oca 2016

Sınıf Özellikleri (GET-SET Kullanımı)

Bir sınıfın içinde 3 farklı özellik tanımlanabilir. Bunu aşağıdaki örnek ile açıklayabiliriz;
public class AA
        {
            public int x;
            public int y { get; set; }
            private int _z;
            public int z
            {
                get
                {
                    return _z;
                }
                set
                {
                    _z = value;
                }
            }
        }

Yukarıda AA sınıfı içinde tanımlı x, y ve z public sınıf elemanlarıdır. 3'ü de aynı işi yapar. Fakat aralarında ufak farklar vardır.

  • z değişkeni, _z isimli private değişkenin dış dünya ile arasındaki bağlantı gibi çalışır. get, set ifadeleri dışarıdan erişilemeyen _z değişkenine erişebilmemize ve üzerinde işlem yapabilmemize olanak sağlar.
  • y, AutoProperty ismini alır. z'deki kod bunun gibi sadece bir değişkeni dışarı açmak için kullanılacaksa bunun yerine C# 3.5'dan itibaren AutoProperty özelliği getirilerek kullanılmaya başlanmıştır. Eğer dışarı açılan değerde bir modifikasyon yapılacaksa AutoProperty, Property'e kolayca çevrilebilir.
  • x, sınıf içi ya da dışından erişilebilen global değişkenler kullanmak için tasarlanmıştır. Sınıf içindeki her metodun sürekli birbirine referans vermeden erişebileceği ortak bir değişkendir.

-Reflection: Çalışma zamanında dinamik obje kopyaları almak ve alınmış kopyalarla işlem yapmak için .NET Framework'ün yardımcı kütüphanesidir. Sınıf değişkenleri ve özellikleri için farklı çalışır.
-DataBind: Veritabanı kullanan uygulamalarda kolaylık getirmek üzere geliştirilmiş .NET Framework kütüphanesidir. Sınıf değişkenlerine ön yüzden DataBind(veri bağlama) yapılamaz.

Örnek:
 public class araba
        {
            public int kapasite { get; set; }
            public double litreKm { get; set; }
            public double ucret { get; set; }

            public double Mesafe
            {
                get
                {
                    return kapasite * litreKm;
                }
            }
            public double ucretMesafe(double km)
            {
                return litreKm* km * ucret;
            }
        }
Mesafe özelliği herhangi bir iç değişkeni dışarı açmıyor. set metodu da tanımlanmamış. Tıpkı bir metot gibi çalışıyor. Hatta mesafe özelliği yerine mesafe() diye bir metot da tanımlayabilirdik. Fakat uygulamamızda bir grid içine DataBind(veri bağlama) yapılmak isteniyorsa o zaman metot olarak kullanmak yerine özellik olarak kullanmak daha doğru olacaktır. Bu özelliğin içinde bir metot ya da bir web service çağrısı da yapılabilirdi.
ucretMesafe metodu ise bir parametre ve daha önceden tanımlanan özelliklerden faydalanarak çalışan bir metottur. Bu özelliklere herhangi bir değer verilmezse sonuç 0 çıkacaktır. Yukarıda tanımlanan araba sınıfı aşağıdaki gibi kullanılabilir;
static void Main(string[] args)
        {
            araba eski = new araba();
            eski.kapasite = 50;
            eski.litreKm = 5.5;
            Console.WriteLine("Eski arabanızın dolu deposu ile " + eski.Mesafe + " yol yapabilirsiniz");

            eski.ucret = 4.2;
            Console.WriteLine("Eski arabanız ile 100 KM'de " + eski.ucretMesafe(100.0) + " liralık benzin yakarsınız");
            Console.ReadKey();
        }
Ekran Çıktısı:

Hiç yorum yok:

Yorum Gönder