c# Sınıflar

C# CLASS(SINIFLAR)

Nesne tabanlı programlamadan önceki tek yaklaşım olan yordamsal programlamada programlar sadece bir komut dizisi veya birer işlev (fonksiyon) kümesi olarak görülmekteydi. Bu yaklaşımla çok karmaşık problemlerin üstesinden gelmek oldukça zordu. Ancak nesne tabanlı programlama yaklaşımının benimsemiş olduğu ve insan oğlunun düşünme şekline daha yakın olan c# class(sınıf) yöntemi ile daha karmaşık problemleri kolayca çözmek mümkün olmuştur.

C# Class (Sınıf) Mantığı

Yukarıdaki resimde bulunan arama kutusu işletim sistemini yazan yazılımcılar tarafından sınıf ( class ) olarak kodlanmış ve işletim sistemi içerisine entegre edilmiştir. İşletim sistemi içerisinde yer alan bu kontrole ihtiyaç duyulduğunda var olan sınıf kodundan nesne oluşturularak kullanılmıştır.

Yukarıdaki resim bilgisayarım penceresinde yer alan arama filtreleme çubuğu burada yer alan kontrol de aslında ilk resimde yer alan kontrolün birebir aynısıdır. Burada aynı kontrol tekrar kodlanmamış var olan sınıfın(class) bir nesnesi daha oluşturularak pratik bir şekilde eklenmiştir.

Sınıfların hangi özelliklere sahip olacağını yani hangi bilgileri saklayacağını sınıflar içerisinde tanımlanan alanlar ( üye değişkenleri ) yardımıyla belirlenebilir. Sınıfların hangi davranışlara sahip olduğu yada hangi işlevleri yerine getireceğini ise sınıf tanımı içerisinde yazılan metotlar ile belirlenir.

Örneğin, bir arabayı yazılım nesnesi olarak modellersek araba sınıfında hız, vites, jant büyüklüğü gibi kavramlar tanımlanabilir. Ayrıca vites değiştirmek, fren yapmak yapmak, hızı arttırmak için metotlar tanımlamak gerekir.

Araba nesnesi yukarıdaki şekilde gösterildiği gibi modellendiğinde dış dünyanın onu nasıl kullanılacağı da belirlenir.

Kapsüllemenin Amacı

Kapsülleme sayesinde bir sınıfı kullanırken o sınıfın nasıl çalıştığını bilmek zorunda kalınmaz. Sınıfın bir örneği oluşturulur ve ihtiyaç duyulan metotlar çağrılır. Metotlar yerine getirmeleri gereken işlevleri gerçekleştirdikleri sürece metotların nasıl çalıştığı ile ilgilenmez ve böylece karışıklıktan uzak durmuş olunur.

Sınıf Tanımlama

Nesne tabanlı programlamada gereken nesneler sınıf(class) yardımıyla oluşturulacaktır. İlk olarak programlama dilinde “Araba” sınıfının(class) nasıl oluşturulduğu görülsün;

class Araba

{

int hiz = 0; // int tipinde bir alan tanımlanıyor

int vites = 1; // int tipinde bir alan tanımlanıyor

public void VitesDegistir( int yeniVites)

{

vites = yeniVites;

}

public void Hizlan( int gaz)

{

hiz = hiz + gaz;

}

public void FrenYap( int fren)

{

hiz = hiz – fren;

}

public void EkranaYazdir( )

{

Console.WriteLine( “Vites:{0}”,vites );

Console.WriteLine( “Vites:{0}”,hiz );

 

}

}

Görüldüğü gibi Sraba sınıfımım hiz ve vites adında iki alanı, ayrıca VitesDegistir, Hizlan, FrenYap ve EkranaYazdir adında dört metodu bulunmaktadır.

C# Class( Sınıf ) Kullanma

Bir sınıf tanımlandığında aslında yeni bir değişken türü tanımlanmış olunur. Daha önce oluşturulan “Araba” türünden aşağıdaki gibi bir değişken tanımlansı:

Araba a;

Bunun daha önce tanımlanan değişkenlerden hiçbir farkı yoktur. Örneğin daha önce string türünde bir değişken söyle tanımlanır::

string isim;

Sınıf tanımlamalarında farklı olan durum, değişkene new( yeni ) anahtar sözcüğü ile geçerli bir başlangıç verisinin atanması gerektiğidir.

Araba a;

a = new Araba():

Tam sayı türünde tanımlanan değişken için böyle bir şeye gerek yoktu.

int sayi;

sayi = 10;

Görüldüğü gibi new anahtar sözcüğü bir sınıfın yeni bir örneğini yani yeni bir nesneyi oluşturmak için kullanılmaktadır. Araba sınıfından iki araba nesnesi oluşturan ve bunların metotlarını kullanan aşağıdaki örnek dikkatlice incelenmelidir ve ekran çıktısı anlamaya çalışılmalıdır.

Sınıf:

Sınıfa yeni bir nesne oluşturma:

Ekran Çıktısı:

Erişilebilirlik

Bir sınıf(class) içindeki üyelere dışarıdan erişim sağlamak veya sınırlandırmak için erişim türleri belirlenmiştir. c# da beş tane erişim türü bulunmaktadır.

  • public
  • private
  • protected
  • internal
  • protected internal

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

Private: Bu erişim 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 türünde tanımlanmış üyelere tanımlanan sınıf ve bu sınıftan türetilmiş diğer sınıflardan erişim izni verilmiş olur.

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

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

class veya struct’lar public ya da internal olabilir, varsayılan olarak internal erişim türüne sahiptir.

Erişim türü belirlenmediğinde sınıf üyeleri varsayılan olarak private olarak kabul edilir.

Kurucular (Constructors)

Kurucu bir sınıfın örneği oluşturulduğunda kendiliğinden çalışan özel bir metottur. Sınıf ile aynı ada sahip olmak zorundadır. Parametreler alabilir ama geri değer döndüremez. Tüm sınıfların bir kurucusu olmak zorundadır.

Varsayılan Kurucu

Programlama dilinde varsayılan ( default ) kurucu herhangi bir parametre almayan kurucudur. Araba sınıfını tanımlarken  kurucu yazılmasa bile derleyici, kişinin yerine hiçbir şey yapmayan bir varsayılan kurucu üretir.

Diğer Konulara Bakmak İçin Tıklayın

 

2 Comments

Leave a Reply