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:
Sınıfımızı oluşturduktan sonra ekranda şu şekilde bir C# sınıfı oluşuyor:
Ş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:
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:
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:
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:
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:
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:
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:
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
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:
Sınıfımızı oluşturduktan sonra ekranda şu şekilde bir C# sınıfı oluşuyor:
Ş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:
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:
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:
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:
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:
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:
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:
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
Çok açıklayıcı olmuş teşekkürler :)
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?
Merhaba ahyelüz, Sorunu serkan@kodadiyazilimci.com e-posta adresime detaylı olarak gönderebilirsen daha rahat yardımcı olabilirim.
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.
Merhaba, classlar hakkında biraz daha örnekler verebilir misiniz.. O zaman bu işi daha iyi kavrayabilirim.
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...
Emeğinize sağlık çok teşekkürler
Emeğinize sağlık çok teşekkürler
Emeğinize sağlık çok teşekkürler
Merhaba, classlar hakkında biraz daha örnekler verebilir misiniz.. O zaman bu işi daha iyi kavrayabilirim