Ağustos 5th, 2009Sınıflar (Class) 1
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.
publicHiçbir kısıtlma olmaz her method/sınıf bu sınıfa erişebilir istediği düenlemeyi yapabilir.
privateSadece 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 ).
protectedprivate 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.
internalBu 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ş :).
