C# Properties(Ozellikler) Get Set & Overloading - SOFTSAM

Breaking

About Software

17.12.2016

C# Properties(Ozellikler) Get Set & Overloading

Öncelikle nesne tabanlı bir programlama dili olan c# ta oluşturduğumuz bir sınıfın içerisinde bulunan özelliklerimizden bahsedelim...
Özellik dediğimiz yapı aslında değişkenlerdir. Biz sınıfın içersin de oluşturduğumuz değişkenlere özellik adını veriyoruz...


Burada "adi" ve "numarasi" adlı değişkenler birer değişken aynı zamanda Ogrenci sınıfının özellikleridir. Bir öğrencinin adı ve numarası vardır. Eğer dışarıdan bu verilere ulaşmak istiyorsanız bu verileri public yapmanız gerekmektedir.Bu da sizin değişkenlerinize direk erişim sağlar. Ve siz öğrenci numarası 1 ile 100 arasında olması şartı koymak istiyorsunuz. Yada öğrencilere 1 ile 100 arasında sıralı numarayı programınız sağlayacak ve bu sınıfı kullanan kişi sadece öğrenci numarasını görüntüleyebilecek.Öğrenciye isim verilebilecek.Fakat öğrencinin numarası sadece okunabilecek.Bu şartları sağlayacak kodu kendimiz oluşturalım.



İstediklerimizin bazılarını şuanda oluşturmuş bulunuyoruz. Öğrencimize isim verebileceğimiz bir IsımAta metodumuz ismini öğrenebileceğimiz bir IsimOku metodumuz ve birde numarasını öğrenebileceğimiz NumarayiOku metodumuz var.Okula yeni bir öğrenci geldiğinde müdür yeni öğrenci oluşturduğu anda öğrencinin ismini kaydedebilir.ama sistem okul numarasını kendisi atayacak.Numarayı öğrenmek için numarayıOku metodu çağrılacak.

İsteklerimizi karşılamak için bu şekilde bir çözüm ürettik. Ama bunu sağlayan yapı zaten c# yapısında bulunmakta.
 private int degiskenIsmi;

        public int MyProperty
        {
            get { return degiskenIsmi; }
            set { degiskenIsmi = value; }
        }

Şeklinde bir yapısı bulunan Properties(özellikler) bize yukarıda yaptığımız işlemi daha basit hale getirmeye yarıyor. Oluşturduğunuz sınıf içerisine prop yazıp iki kere tab tuşuna basarsanız sizin için bir tane oluşturacaktır visual studio.Yukarıda belirtilen şekilde oluşturmak için propfull yazın.

get: Geriye değişkenimizin değerini döndürür.

set: Dışarıdan gelen değeri sınıfın içerisindeki ilgili değişkenimize değeri taşıyan value sayesinde ataması yapılır. Gerekli kontrol var ise onlar da burada yapılır.




Gördüğünüz üzere tanımladıktan sonra sınıftan bir nesne oluşturup Adi isimli özelliğimize ulaştığımızda bize açıklamalarında get;set; şeklinde bilgilendirme veriyor. Biz öğrenci numarsını sadece okumak istiyorduk bunada bir çözüm üretelim.



sadece get yazmak yeterli oalcaktır.Çünkü ihtiyacımız olan sadece okumak.Üzerine yazmak istemiyoruz.
Bir başka özellik oluşturma şekli de:

public int OzellikAdi { get; set; }

şeklindedir. Gerekli işlemleri arka planda sizin için editor yapacaktır..

Peki Overloading nedir?
Bunu aslında programlamada birçok kez kullandık. Ama farkına varmadık kullanırken.Overloading bir metodun aynı isimle birden çok yazılması demek.Peki bu karmaşıklığa sebebiyet vermiyor mu?
Normalde şu şekilde bir tanımlama hataya sebep olacaktır.




Burda gördüğünüz işlem bir overloading değil bir hatadır. Overloading ise aynı isme sahip metodların farklı parametreler alarak işlem yapmasına denir.Metodların parametreleri kendilerinin imzalarıdır.
Biz aynı imzaya sahip iki aynı metod tanımlarsak elbette karışıklık ortaya çıkacaktır. Overloading işlemi imzaların değiştirilmesi ile ortaya çıkar.

Console sınıfının  WriteLine() Metodu 19 farklı imzaya sahiptir.Yani 19 kere yeniden farklı parametrelerle tanımlanmıştır.
void WriteLine()
{//işlemler}
void WriteLine(string s)
{//işlemler}
void WriteLine(int value)
{//islemler}
.
.
.



19 taneden 8. si int value şeklinde imzaya sahip olan metodmuş.
Bizde mesaj metodumuzun parametrelerinin sayısını artırarak yada azaltarak veya farklı olmasına dikkat ederek kendi Overloading metodumuzu oluşturabiliriz.



Hiç yorum yok:

Yorum Gönder