Serkan Ayyıldız

Meraklı bir yazılım uzmanı...

C# Sınıf(Class) Oluşturma

C#.Net'ci yazılımcılara selamlar olsun :)

Bir önceki makalemizde C# metot kavramını öğrenmiş ve konuyla ilgili örnek projeler uygulamıştık ancak bu makalemizde ise daha profesyonel kodlama sistemi olan ve aynı zamanda object orianted programming (nesne yönelimli programlama) konusunun temel yapı taşı olan class (sınıf) kavramına giriyoruz.
Konu olarak sınıflara hiçte yabancı değiliz aslında çünkü şimdiye kadar öğrendiklerimiz birçok konuda sınıfları kullanmıştık,örneğin önceki C# konumuzda metotlarımızı sınıflar içerisine yazıyor ve kullanabiliyorduk.

Sınıflar programlama hiyerarşisinde (namespace,class,method) orta seviye bir yapıdır ve içeriğinde programın çalışmasını sağlayan metotların yanı sıra propery dediğimiz özellikleri barındırırlar.Sınıflar polimorfizm (polymorphism) konusunu esas alırlar ve polymorphism kelime anlamıyla çok biçimlilik anlamına gelirler.Aralarındaki bağ ise sınıfların kendilerinden örnek kopya (instance) alarak içeriğindeki metot ve özellikleri kullanarak daha etkin bir programalama
yapmamıza olanak sağlamalıdırlar.

Tabi buraya kadar anlattıklarım havada kalacağı için biraz daha somut örneklerle gidelim istiyorum :)
Programlamanın temelleri çok eskilere dayanıyor ve ilk bilgisayar yazılımları oldukça karmaşık ve zor bir süreç sonunda ortaya çıkıyordu ve günün birinde artık programcılar bu tek düze ve zor koşullar altında kod yazmaktan bıkarak nesne yönelimli programlama konusuna adım attılar.Tarihi gelişimi size
buradan okumaya devam edebilirsiniz ama benim bu makalede durmaya niyetim yok :)

Nesne yönelimli programlama sayesinde yazdığımız bütün kodlar hatta her şey gerçek dünyadaki nesneleri temsil ettiği varsayılır.Örneğin; gerçek bir otomobile ait bildiğimiz tüm fonksiyon ve özellikler sınıflar yardımıyla birebir modellenerek yazılımı kodlanabilir,bunun için de sınıflardan faydalanılır. 

Şimdi biraz beyin fırtınası yapalım; bir otomobilin neyi olur?
Markası,model,üretim yılı,motor hacmi,rengi,vites tipi... gibi birçok özelliği olabilir.

Peki bir otomobil ne yapabilir?
Hızlanabilir,yavaşlayabilir,fren yapabilir,patinaj çekebilir :) gibi gibi birçok fonksiyonu olabilir.

İşte bu özelliklere programlama olarak property,fonksiyonlarına ise metotlar diyoruz.Bu kadar laftan sonra haydi Visual Studio'yu açalım ve şu otomobili kodladıktan sonra binip gezmeye gidelim :)
Visual Studio ile yeni bir Windows Form projesi oluşturduktan sonra aşağıdaki gibi projemize bir class (sınıf) ekliyoruz:

c-sharp-sinif

c#-class

Sınıfımızı oluşturduktan sonra ekranda şu şekilde bir C# sınıfı oluşuyor:

C#-sınıf-kavramı

Şu an da karşımızda boş bir sınıf var ve biz bu sınıftan yep yeni bir programlama tekniğine geçiyoruz,bunun adı
object orianted programming!
İlk yapmamız gereken bu sınıfı daha sonra form uygulamamızda kullanabilmek için "class" sözcüğünün soluna "public"
deyimini yazmak,bu konuyu ilerleyen makalelerde daha detaylı öğreneceğiz.
Ardından sınıfımızın içine bir otomobile dair hangi özellikler varsa yazmak olsun:

c#-sınıf-property

Bu yazdığımız kodlar bir otomobile ait olabilecek özellikleri temsil etmektedir ve dikkat ederseniz her property'nin tipi bildiğimiz ilkel değişken tiplerinden olan string,int,decimal gibi ifadelerle temsil edilmektedir.
Propertylerin her birine baktığımızda sonlarında get ve set sözcükleri yer almaktadır,bunların açılımı ise bu sınıftan
oluşturulacak bir instance (örnek kopya) ile değer atanıp okunmasıyla ilgili bir konudur.(Bunu da ilerleyen makalelerde
öğreneceğiz)
Buraya kadar yazdığımız kodlar otomobilin özelliklerini barındırıyorken henüz fonksiyonlarını yazmadık,o halde yazalım:

c#-sınıf-metot

Metotlar konusunu önceki makalemizde gördüğümüz için zaten kolaylıkla hatırlamışsınızdır :)
Şimdiye kadar yazdığımız kodlar bir otomobilin yazılım dilinde modellenmiş halidir ama bunlar ne işimize yarayacak?
Nesne yönelimli programlama konusu;

string degisken="değer";

kod satırından çok daha fazlasını sunuyor ve bu şekilde tek tek düz bir programlama ile bir otomobile ait metot ve özellikleri yazıp değerlerini atamak oldukça zahmetli kod yazmanın yanı sıra oldukça vakit kaybı yaratmaktadır.O yüzden şimdi öğrenecekleriniz ile yazılım dünyasının ufak bir parçasını daha göreceksiniz...

Peki bu sınıfı oluşturduysak nasıl kullanacağız?
C# ile oluşturulan sınıfları (sadece C# ile sınırlı kalmıyor aslında) kullanmanın yolu ikiye ayrılmaktadır: dinamik sınıfları
kullanmak için instance denilen sınıftan örnek alarak ya da statik sınıfları kullanmak için sadece sınıf adını yazarak kullanabiliriz.
Bu yazdığımız örnek dinamik bir sınıf olduğu için diğer yolu sonraki makalelerimizde öğreneceğiz.
Şimdi sınıfımızı formumuzun Form1_Load event içerisinde kullanalım:

c#-sınıf-instance

Dinamik bir sınıfı kasten erişime engellemediğimiz sürece "new" (yeni) anahtar kelimesiyle yukarıdaki gibi çağırabiliriz.Bu basit ve tek satır olan kod bize otomobil sınıfına yazdığımız tüm özellik ve metotları çok kolay bir biçimde şu şekilde getiriyor:

c#-sınıf-özellikler

Gördüğünüz gibi sınıfı oluştururken yazdığımız metotlar ve özellikler sadece 1-2 satırda ve yeniden yazmaya gerek kalmadan rahatlıkla kullanılabiliyor,o halde otomobil sınıfımız bir harita "new" sözcüğüyle aldığımız instance ise otomobilin kendisidir diyebiliriz.Şimdi otomobil sınıfına ait bilgileri dolduruyor ve üretime başlıyoruz:

c#-instance-sınıf

Bu otomobil instance ile otomobil sınıfına yazdığımı int,string gibi propertylerin değerlerini atadık ve bu sınıfa ait metotları çağırmış bulunuyoruz,özellikle metotları bu şekilde yazarak çok daha rahat kod yazabiliyor ve metotları ilgi alanlarına göre sınıflar altında yazarak daha düzenli bir kodlama sistemi kuruyoruz.

Hazır sınıf altındaki metotlardan bahsetmişken önceki makalemizde adından çok söz ettiğimiz değer döndüren metotları bu sınıf altında da yazabiliyoruz,örneğin otomobilin marka adını getiren bir metot yazalım:

c#-sınıf-metod

Bu metodumuz string tipinde değer döndüren bir metotdur ve return deyimiyle bu sınıftan alınan örnek kopyanın Marka isimli özelliğini geri döndürecektir.
Nasıl çalıştığına bakalım:

c#-değer-döndüren-sınıf-metot

Böylece bir sınıfa ait değer döndüren metodun nasıl kullanıldığınıda öğrenmiş olduk :)
C# sınıflar hakkında şimdilik bu kadarını bilmemiz yeterli diye düşünüyorum çünkü classlar hakkında öğreneceğimiz daha birçok konu olduğu için hafiften ve sıkılmadan öğrenmenizi öneririm.Ayrıca sınıf kavramı ile Windows Form projelerinde sınıfların faydalarını çok daha iyi anlayacağınızı umuyorum.
Bu makalemde konuyla ilgili anlatmayı unutmuş olabileceğim için bu aynı konuda olan ancak Java dili için yazmış olduğum bu java class makalemi okumanızı da öneririm.

Şimdilik bir sonraki makalemizde görüşmek üzere hoşçakalın :)

Projeyi İndir

10 Yorum:

  1. Berna
    4/4/2014

    Çok açıklayıcı olmuş teşekkürler :)

  2. ahyelüz
    4/19/2014

    merhaba, yazınız için çok teşekkür ediyorum. benim bu konu hakkında bir sorum olacaktı. ben class yapısı kullanarak yeni bir type oluşturdum. sonrasında form ekranında bu tipte bir matris tanımladım fakat hat verdi acaba bunun nedeni ne olabilir? yardımcı olur musunuz?

  3. Serkan Çamur
    4/20/2014

    Merhaba ahyelüz, Sorunu serkan@kodadiyazilimci.com e-posta adresime detaylı olarak gönderebilirsen daha rahat yardımcı olabilirim.

  4. Ferhat
    11/25/2014

    Güzel anlatım olmuş ama bende hata verdi. büyük bir ihtimalle yanlış şeyler yaptım. ( yinede bu dalı seçtiğime pişman değilim :)) en azından birkaç şeyi pekiştirdim, teşekkürler.

  5. Tahir Güngör
    12/10/2014

    Merhaba, classlar hakkında biraz daha örnekler verebilir misiniz.. O zaman bu işi daha iyi kavrayabilirim.

  6. YILDIRIM
    2/7/2015

    BÖYLESİNE ÖZVERİ İLE HAZIRLANMIŞ MAKALENİZ İÇİN SİZ VE SİZİN GİBİ PAYLAŞIMCI RUHLU GÜZEL İNSANLARA SONSUZ TEŞEKKÜRLER...

  7. Burc
    4/16/2015

    Emeğinize sağlık çok teşekkürler

  8. Burc
    4/16/2015

    Emeğinize sağlık çok teşekkürler

  9. Burc
    4/16/2015

    Emeğinize sağlık çok teşekkürler

  10. dedecan
    2/15/2016

    Merhaba, classlar hakkında biraz daha örnekler verebilir misiniz.. O zaman bu işi daha iyi kavrayabilirim

Bir yorum bırak E-posta adresiniz yayınlanmayacaktır.

Menu