Bu yazımızda C#’ta Class yapısından bahsedeceğim.Sınıflar nesne yönelimli programlamanın en önemli öğesidir.Sınıflar sayesinde programımızı parçalara bölüp daha rahat çalışabiliriz.Class yapıları içinde metodlar,özellikler,field değişkenler vs vs gibi yapılar bulunabilir.
Genel olarak bir class yapısı sunmak istiyorum.
Aşağıda,içinde 4 özellik ve 3 tanede metod bulunan bir örnek class yapısını inceleyiniz.Ondan sonra derinlemesine mevzuya girelim.
class ClassCalisma { string adi; private string soyadi; public int yasi; public DateTime dogumtarihi; int Sayi() { return 3; } private int topla() { return 3 + 5; } public void merhaba() { System.Windows.Forms.MessageBox.Show("Merhaba"); } }
Class içinde özellikler bu şekilde tanımlanırsa eğer dışardan her türlü müdahaleye maruz kalabiliyorlar.Bunun önlemini Propertyler sayesinde alabilir.Classlarda kullandığımız değişkenlere field denir.Şimdi bu konuyu inceleyelim.
FIELD
Classlar içinde kullandığımız değişkenlerdir.Class içindeki fieldlar,class ın kullanacağı değerleri tutarlar.Genellikle private olarak tanımlanırlar(Bunun sebebi dışardan direk müdahale olmasını engellemektir.Private olan bir değişkene dısardan ulaşmanın mümkün olmadığını biliyoruz.Fielddaki değeri hem kontrollü bir şekilde kullanabilmek için hemde dışarıya açabilmek için Propertyler kullanılır.)Propertylerdeki set bloğu ile field a değer aktarılır,get bloğu ile fielddaki değer dışarıya gönderilebilir.
Şimdi class içinde bir değişken(Field) oluşturalım.
string adi;
Şimdi bu field üzerinden propertyler oluşturacağız.
1.Property tipi,
Eğer property içindeki field ı çeşitli komutlar eşliğinde kontrol altında tutacaksanız bu property tipini kullanınız.
public string Adi { get { return adi; } set { adi = value; } }
Yukarıdaki yapıda adi fieldımıza property yazmış olduk.Property’mizin adı “Adi” dır.Artık bu classtan nesne oluşturduğumuz zaman bu adi fieldını değil,Adi propertysini kullanacağız.set bloğu sayesinde adi fieldına verilen değer gönderilecektir.get bloğu sayesinde adi fieldına gönderilen değer dışarıdan okunabilecektir.Get ve Set bloklarının scopeları arasına if,for,metod vs. gibisinden her türlü şeyi yazabilirsiniz.
Not:Bu propertyi isterseniz elinizlede yazabilirsiniz.Kolaylık olması açısından yazdığınız fieldın yanına imleci yerleştirerek “CTRL+R+E” kombinasyonunu kullanırsanız eğer field otomatik olarak oluşacaktır.
Bu propertyi write only(sadece yazılır) ya da read only(sadece okunur) yapmak için istediğimiz bloğu iki taksim işaretiyle kapatmamız yeterli olacaktır.
public string Adi { // get { return adi; } set { adi = value; } }
Eğer get bloğunu kapatırsak sadece yazılır olur.
public string Adi { get { return adi; } // set { adi = value; } }
Eğer set bloğunu kapatırsak sadece okunur olur.
2.Property tipi,
Eğer fieldınız içindeki veriyi belirli kontrol altında tutmayacaksanız,dışarıdan gelen veriyi olduğu gibi fielda set edecekseniz ve olduğu gibi return edecekseniz aşağıdaki property tipini kullanınız.
Bu propertyde kullanmak için fieldı önceden yazıp sonra property i yazmamıza gerek yok.
public string soyadi{ get; set; } /*Bu property bir nevi field üzerine yazılıyor.*/
Yukardaki yapıda fieldımızı dısarıya hiç bir kontrol altında tutmadan açıyoruz.Bu tipteki propertydeki get ve set blokları içerisine hiç bir şey yazma hakkımız yok.
Bu propertyi ellede yazabiliriz.Kolaylık olması açısından “prop” yazıp iki kere taba basarsak kapa taslak şablonu oluşacaktır.
Bu property tipinde sadece okunur ya da yazılır yapmak için iki taksimle blokları kapatmamalıyız.Hangi bloğu kapatmak istiyorsak başına private yazmamız yeterli olacaktır.