Sınıflar nesneye yönelik programlamanın temelini oluşturmaktadır.Veri üyelerini (sabitler,alanlar),fonksiyon üyelerini (methodlar,özellikler,olaylar,dizinleyiciler,operatörlar,yapıcılar,yıkıcılar ve static yapıcılar) içerebilirler.Nesneye yönelik programlamada temel amaç ilgili problemi parçalara ayırmak ve yazılan kodun tekrar etmesini önlemektir.Sınıflarda temel amaç ortak özelliklteki verilerin bir arada toplnamasıdır. Örneğin bir tofaş marka bir araba aldınız bu arabanın kliması,gps’i,abs gibi çeşitli özellikleri olabilir. Dünyadaki tüm arabalardada 4 lastik ve bir motor kesin vardır :).Yüzlerce araba markasını bir sınıfta benzer özelliklerine göre toplayabiliriz. Daha sonra araba özelliklerinde meydana gelicek herhangi bir değişiklikte bu sınıfı kalıtım yoluyla türeterek (kalıtım konusu ilerde deteylı olarak anlatılıcaktır) istenilen özellikler eklenebilir. C#’ta class tanımı şu şekilde yapılır;

// class tanımı
[access-modifiers] class identifier [:base-class]
    {
		class-body //sınıf gövdesi
	}

Burada access-modifiers sınıf’a erişim belirleyicisi anlamına gelmektedir. C#’ta 5 tür erişim belirleyicisi vardır.

 public

Hiçbir kısıtlma olmaz her method/sınıf bu sınıfa erişebilir istediği düenlemeyi yapabilir.

private

Sadece kend sınıfından erişilebilir. Örneğin bir A class ‘ı private tanımlanırsa A sınıfına sadece A’nın içinde ki method’lar erişebilir. Dışardan başka hiçbir sınıfın erişimi yoktur (bu sınıftan türemiş sınıflarda dahildir ).

protected

private erişim belirleyisinin biraz daha sınırları genişletilmiş şeklidir. Tek farkı bu snınftan türeyen sınıfların bu sınıfa erişim yapabileceğidir.

internal

Bu erişim belirleyicisi ile sadece A sınıfı’nın assembly’sinden erişim yapılabilir. Bir DLL veya Executable dosya.

protected internal

Bu erişim belirleyiciside internal belirleyicisinin biraz genişletilmiş halidir. İnternal erişim belirleyicisine ek olarak bu sınıftan türeyen sınıflarında bu sınıfıa erişimi vardır.

Örnek bir araba sınıfı yazalım ;

public class arabalar //sınıf bildirimi
 
{
    public string marka;
    public string motorGucu;    // sınıf gövdesi
    public string fiyat;            // bu ksımda yapılan bildirimler alanlar
    public int kilometre;         //veya veri üyeleri olarak isimlendirilir
    public string renk;
    }// bildirim sonu

Dikkat ederseniz sınıf bildirimi yaparken erişim belirleyicisi olarak public kullandım. Herhangi bir erişim belirleyicisi kullanmasaydım C# framework’u bunu private olarak algılayacaktı ve hiçbir sııftan erişimi olamacaktı. Ama bu iyi bir kod yazım tekniği değildir !! . Private olarak işlem yapılcaksa bu yazılmalıdır.

Şimdi bu sınıfı kullanalım ;
Öncelikler bu sunufu declare (tanımlamalıyız) etmeliyiz. C#’da bir sınıf şu şekilde declare edilir;

sınıf_ismi yeniSınıf = new sınıf_ismi(); //veya
 sınıf_ismi yeniSınıf;   //  bir değişkene sınıf_ismi 'nin  referansını ata
		// yeniSınıf nesne tipinde değişkenin referansını içerir
yeniSınıf=new sınıf_ismi();    //bir sınıf_ismi için bellekte yer ayır.

new operatorü bellekte run-time (program çalışırken) bellekte yer ayırır ve bu nesnenin referansını döndürür. Bu referans ilgili nesnenin bellekteki adresidir. Daha sonra bu adres bir değişken içinde saklanır. C# ‘da tüm sınıf nesnelerine bellekte dinamik olarak yer ayırılır. Yani programın ilgili sınıfı çağrılmadan bellekte yer tahsisi yapılmaz…

Bir sonraki yazıda referans ve değer tipleri nedir ? sorusunu cevaplayacağiz ;)

Peki yazdığımız sınıf içindeki veri alanlarına nasıl ulaşacağız ? Çok kolay bir nokta ile :) Örneğin;

arabalar araba=new arabalar(); // sınıf nesnesi oluşturulur... ve

araba.fiyat=1000 TL gibi bir değişkene değer atar gibi atama yapabiliriz. Şimdi yazdığımız sınıfı çalışır hale gelen bir program haline getirelim ;)

using System;
 
class arabalar //sınıf bildirimi
 
{
    public string marka;
    public string motorGucu;
    public string fiyat;
    public int kilometre;
    public string renk;
    }// bildirim sonu
 
    class mainRun
{
    static void Main() //main metodu
    {
        arabalar araba=new arabalar(); // sınıf nesnesi oluşturulur...
        araba.marka="tofas";           // veri alanlarına ilgili değerler atanır
        araba.motorGucu="80 BG (59 KW)" ;
        araba.fiyat="6300 TL";
        araba.kilometre=18000;
        araba.renk="kırmızı";
 
        Console.WriteLine("************************************************");
        Console.WriteLine("Arabanın markası:{0}",araba.marka);
        Console.WriteLine("Arabanın motorgucu:{0}",araba.motorGucu);
        Console.WriteLine("Arabanın fiyatı:{0}",araba.fiyat);
        Console.WriteLine("Arabanın kilometre:{0}",araba.kilometre);
        Console.WriteLine("Arabanın renk:{0}",araba.renk);
        Console.WriteLine("************************************************");
        }//main sonu
}//mainRun sonu

Son söz olarak C#’da hersey bir nesnedir ve object sınıfından türemistir. Bunu aklınızda bir yere not edin ilerde lazım olucak. Sınıflar konusu çok geniş bir konu olduğundan bu konuyu parça parça anlatmayı uygun gördüm . Şimdilik bu kadar .
Kodu burdan indirebilirsiniz

Evet derleme işlemini yaptıktan sonra bakalım ne olmuş :).

Sınıflar 1