Bu yazımızda C# ile Class kullanımını gösteren basit bir sinema örneği gerçekleştireceğiz. Örneğimizde bir sinema salonuna ait Sınıf(Class) yapısı oluşturacağız ve bu salona ait bazı metotlar oluşturacağız.
Öncelikle Form tasarımını görelim.
Formumuzun çalışmasını kısaca açıklayalım. OLUŞTUR Butonunu kullanarak oluşturacağımız Sinema sınıfından yeni bir nesne oluşturacağız. Sınıf yapısında BiletSat, BiletIptal, BoskoltukOgren ve BakiyeOgren metotlarını oluşturarak gerekli işlemlerin yapılmasını sağlayacak ve bu işlemlerle ilgili label3 kontrolünde kullanıcı bilgilendirmesi yapacağız.
Örneğimizi oluştururken daha detaylı açıklamaları bulabilirsiniz. Öncelikle Sinema isimli Class‘ ı oluşturarak projemize başlayalım. Bunun için Solution Explorer penceresinde proje üzerinde sağ tuş ve Add – Class adımlarını izleyebilirsiniz.
Class’ ımıza Sinema ismi veriyoruz.Sinema adlı sınıfımız aşağıdaki gibi oluşacaktır.
1 2 3 4 5 6 |
class Sinema { } |
Daha sonra Class için gerekli özelliklerimizi yazıyoruz.
1 2 3 4 5 6 7 8 9 |
int toplamKoltukSayisi; int bosKoltukSayisi; double bakiye; string salonNo; const double TAM = 15.0; const double INDIRIMLI = 10.0; |
Burada bizim örneğimiz için gerekli özellikleri oluşturmuş olduk.Şimdi metotlarımızı oluşturalım. Öncelikle kurucu metodumuzu okluşturarak başlayalım.
1 2 3 4 5 6 7 8 9 10 |
public Sinema(string salonn,int koltuksayi) //Kurucu Metot { toplamKoltukSayisi = koltuksayi; salonNo = salonn; bosKoltukSayisi = toplamKoltukSayisi; bakiye = 0; } |
Bilindiği gibi kurucu metotlar sınıf ismiyle aynı olmak zorundadır. Yukarıdaki kurucu metodu incelediğimizde 2 adet parametre aldığını görüyoruz. Ana programda Class üzerinden nesne oluşturduğumuz zaman gerekli ayarlamaların yapılmasını sağlıyoruz.
Bir sonraki adımda BiletSat isimli metodu oluşturacağız.
1 2 3 4 5 6 7 8 9 10 |
public void BiletSat(bool indirimli) //Bilet Satış { bosKoltukSayisi--; if (indirimli) bakiye += INDIRIMLI; else bakiye += TAM; } |
Metodu incelediğimizde bilet satışı gerçekleştiğinde boş koltuk sayısının azaltılması sağlanıyor. ayrıca indirimli veya tam bilet olması durumuna göre bakiyenin arttırılması sağlanıyor. Burada metodumuzun bool tipinde bir parametre aldığına dikkat edelim.
Şimdi de BiletIPtal isimli metodumuzu oluşturalım. Bu metodumuzda yine bool tipinde bir parametre alacak. Gelen parametre ile biletin indirimli ya da tam bilet olduğunun kontrolünü yapacağız. Para iadesi olacağı için bakiye azaltılacak ve boş koltuk sayısının arttırılması sağlanacak.
1 2 3 4 5 6 7 8 9 10 |
public void BiletIptal(bool indirimli) //Bilet İade { bosKoltukSayisi++; if (indirimli) bakiye -= INDIRIMLI; else bakiye -= TAM; } |
Daha sonra ise boş koltuk sayısını öğrenebileceğimiz BosKoltukOgren isimli metodumuzu aşağıdaki gibi oluşturuyoruz. Burada sadece boş koltuk sayısının geri döndürüldüğünü görmekteyiz.
1 2 3 4 5 6 |
public int BosKoltukOgren() //Boş koltuk Sayısı { return bosKoltukSayisi; } |
Son olarak BakiyeOgren isimli metodumuzu oluşturalım. Bu metodumuzda yukarıdaki BosKoltukOgren metodu gibi çalışacak ve geriye bakiye bilgisini döndürecektir.
public double BakiyeOgren() //Bakiye Öğren
{
return bakiye;
}
Sınıf yapımızı tamamlamış olduk. Class’ ımızın tam hali aşağıdaki gibi olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SinemaClassOrnek { class Sinema { int toplamKoltukSayisi; int bosKoltukSayisi; double bakiye; string salonNo; const double TAM = 15.0; const double INDIRIMLI = 10.0; public Sinema(string salonn,int koltuksayi) //Kurucu Metot { toplamKoltukSayisi = koltuksayi; salonNo = salonn; bosKoltukSayisi = toplamKoltukSayisi; bakiye = 0; } public void BiletSat(bool indirimli) //Bilet Satış { bosKoltukSayisi--; if (indirimli) bakiye += INDIRIMLI; else bakiye += TAM; } public void BiletIptal(bool indirimli) //Bilet İade { bosKoltukSayisi++; if (indirimli) bakiye -= INDIRIMLI; else bakiye -= TAM; } public int BosKoltukOgren() //Boş koltuk Sayısı { return bosKoltukSayisi; } public double BakiyeOgren() //Bakiye Öğren { return bakiye; } } } |
Şimdi form tarafına geçiyoruz. Açıklamamızı kodlarımızın tamamını verdikten sonra yapalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SinemaClassOrnek { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Sinema salon; private void button1_Click(object sender, EventArgs e) { try { salon = new Sinema(textBox1.Text, Convert.ToInt32(textBox2.Text)); label3.Text = "Salon Oluşturuldu. Koltuk sayısı : " + salon.BosKoltukOgren(); } catch { label3.Text = "Salon Oluşturulamadı. Bilgileri kontrol edin."; } } private void button2_Click(object sender, EventArgs e) { salon.BiletSat(checkBox1.Checked); label3.Text = "Bilet satıldı. Kalan koltuk sayısı : " + salon.BosKoltukOgren(); } private void button3_Click(object sender, EventArgs e) { salon.BiletIptal(checkBox1.Checked); label3.Text = "Bilet iptal edildi. Kalan koltuk sayısı : " + salon.BosKoltukOgren(); } private void button5_Click(object sender, EventArgs e) { label3.Text = "Şu anki bakiye " + salon.BakiyeOgren() +" TL"; } private void button4_Click(object sender, EventArgs e) { label3.Text = "Boş koltuk sayısı " + salon.BosKoltukOgren(); } } } |
Burada Oluştur butonuna yazdığımız kodlarla Sinema sınıfı üzerinden salon isimli bir nesne oluşturulduğunu görüyoruz. Oluştur butonuna basıldığında textbox kontrollerine girilen değerler parametre olarak gönderilerek kurucu metodun çalışması sağlanmaktadır. Ayrıca label3 üzerinde kullanıcıya bilgi verilmektedir.
Bilet Sat ve Bilet İptal butonlarına basıldığında İndirimli checkBox seçili olması durumuna göre metotlarımızın çalışması ve sonuca ait bilginin yine label3 üzerinde görüntülenmesi sağlanmaktadır.
Rapor bölümündeki butonlarımız ise sırasıyla BakiyeOgren ve BosKoltukOgren metotlarını çalıştıracak ve bu metotlardan gelen veriyi yine label3 üzerinde görüntüleyecektir.
hocam eğer birden fazla salon oluşturuyorsak boş koltuk kodları nasıl yazmalıyız?
cevabınızı bekliyorum.
Merhaba Hocam bu örnek farklı bir yolla codları
Yazabilirmiyiz? Class yazmadan olmaz mı?
[text* first-name class:form-control placeholder “Adınız”]
[text* last-name class:form-control placeholder “Soyadınız”]
[email* email class:form-control placeholder “E-Posta”]
bu çalışan bir kod ama kutucuğun içinde adınız soayadınız ya a e-posta yazıyor. kutunun üstünde nasıl yapabiliriz?
örnek:
şu anki:
—————
adınız
—————
İstenilen:
adınız
—————
—————
ya şimdi ben şeyi anlamadım bilet sat ve bilet iptal metotlarında checkBox ile bir badaştırma yapmadan nası oluyo yani bir şart bloğu yokken nası çalışıyor anlamadım ben
Button2 ve Button3 te yapılmış.
.Net ile yapınca program çalışmıyor
Çalışıyor bende .NET ile yaptım.
çalıştı
program farklı salonlar için örnek oluşturmuyor. farklı salon oluşturan hale nasıl getirebiliriz.
nesne dizisi (object array) ile yapabilirsiniz.
hocam sinema otomasyonun kodlarını paylamşma şansınız varmı acaba
hocam aynı programı class kullanmadan yapmamız mümkün müdür?
Mümkün.degiskenleri global olarak tanımlayarak buttonlar icin kodları yazabiliriz.
+= ve -= operatörlerini bool ve double ile kullanamazsın gibi bir hata aldım hocam nerde yanlış yaptığımı bulamadım yardımcı olabirmisiniz hata kodu cs0019
Merhaba Hocam. Bilet Sat’a bastığımda system.NullreferenceException hatası alıyorum.Ne yapmam gerekiyor?
Sorunu Çözdüm Hocam
Nasil çözdüğünüzü yazarsanız ayni sorunu yaşayan olursa yol göstermiş olursunuz. Kolay gelsin.
Tabii hocam. salon = new Sinema(txtSalon.Text, Convert.ToInt32(txtKoltukSayısı)); şu kodda “.Text” koymayı unutmuşum.
salon = new Sinema(txtSalon.Text, Convert.ToInt32(txtKoltukSayısı.Text)); olacak. O zaman hata çözülüyor
Iki defa degisken tanimlanip o degiskene atama yapilmis olabilir
public int a=5;
a=int.Parse(txtdeger.Text);
olmasi gerek mesela
sizinki de property
public int degisken{ get;set;} olup ,asagida disaridan deger alan metotta int degisken=int.Parse(txtdeger.Text) olursa varsayilan 0 olunca okurken 0 yazar string ise null yazar .Degerin Null geldiginden sebep bu hata aliniyor
for(int i =0 ;i<=100000;i++)
{
tesekküler.Text="Bu verimli örnek için teşekkürler ";
}
orada textbox1 label1 vb gibi yazım biraz hatalı kullanıma giriyor lütfen sonraki örneklerde karışıklığı sıfıra indirgemek adına mantıklı isimler verin
Karışıklığa neden olacak kadar çok sayıda kontrol bulunmayan örneklerde genellikle isim değiştirmiyorum. Buradaki örnekler genellikle projelere ait küçük parçalar şeklinde. Karışıklığa neden olabilecek projelerde değiştirmek tabi ki fayda sağlayacaktır. Katkınız için teşekkürler.
Hocam bakarmısınız ya bizim bi konu var da bi yardım etseniz bakkal defteri ni yapabilirmisiniz
cevab alamadım hocam
Yapmak istediğiniz şeyi tam olarak anlamadım. Daha detaylı anlatabilirseniz ve takıldığınız yeri söylerseniz fırsat buldukça yardımcı olmaya çalışırım.
Acces le bağlantılı c# bakkal defteri olacak hocam baştan sona kadar yardım etseniz yani yapsanız hocam lütfen duşük alıp okulda kalıcam bundan bari yuksek alıyım
hocam siz benim anlatmak istedigimi anlamadınız bi saniye benim odevimin konusu bakkal defteri aynı bu mantık ama farklı biraz bi yardım edin son gunlere giriyoruz lütfen
yok hocam bu örnekle alakalı değil. şöyle anlatayım 1den 100 e kadar raf var ve bu raflar sırayla doluyor diyelim aradan 1 tane raf boşalıyor ve yeni gelen ürüne o rafı vereceğiz. ama bunun için o boş rafı bulmak gerekiyor. Bu konuda yardımcı olabilir misiniz?
İlgilenmeye çalışacağım.
çok teşekkür ederim
Aşağıda verdiğim linkteki projeyi incelersiniz. 2 farklı yöntemle yapıldı. 1. yöntemde veritabanından kontrol edilerek, 2. yöntemde
Dataview üzerinden yani veritabanı bağlantısı olmadan. Sizin projenizin durumunu tam olarak bilmiyorum ama fikir verecektir.
Konuyla ilgili bir yazı da ekleyeceğim.
Kolay gelsin.
https://yadi.sk/d/wOv2Cd6P38GBq7
teşekkür ederim yardımlarınız için yeni başlayan birinin ilham kaynağı oldunuz 🙂
Hocam merhabalar; veritabanında 1,2,3,4,5,7,8,9,10 diye her satırda bir rakam var ve gördüğünüz gibi 6 rakamı hiç bir satırda yok bu olmayan rakamı nasıl buluruz ?
Merhaba.Bu örnekle ilgili değil sanırım sorunuz. Sütunu tek tek kontrol ederek bulunabilir. Tam olarak yapmak istediğiniz şeyi bilmiyorum.