Bir üniversite’nin ders bilgilerini içerecek bir uygulama geliştirilecektir.
Fizik, kimya, matematik ve ders isminde 4 sınıf oluşturunuz.
ders sınıfında;
protected olarak
* string dersAdi
* int kayitliOgrenciSayisi
değişkenleri bulunacaktır.
Fizik, kimya ve matematik sınıfları, ders sınıfından kalıtım yapılacaktır.
Bu sınıfların constructor’unda ders adı ve kayitliOgrenciSayisi parametresi alarak dersAdı ve kayitliOgrenciSayisi değişkenlerine yazacaktır.
Bu sınıfların içine yazılacak, kimyaDeneyiYap, fizikDeneyiYap, matematikDeneyiYap fonksiyonları ile ekrana “Fizik deneyi yapıldı”, “Kimya deneyi yapıldı”, “Matematik deneyi yapıldı” metinlerini bastırınız (Örn kimya sınıfı için sadece kimyaDeneyiYap fonksiyonu olacak).
Fizik, kimya ve matematik sınıflarından birer obje yaratıp, alma fonksiyonları ile ders isim ve kayıtlı öğrenci sayısını ekrana bastıran bir test uygulaması geliştiriniz.
dikdortgen ve dikdortgenAlan isimli iki sınıf oluşturulacaktır.
dikdortgen sınıfında;
protected olarak
* int en
* int boy
değişkenleri ve public olarak
* int enAl()
* int boyAl()
* int enAyarla(int)
* int boyAyarla(int)
fonksiyonları bulunmaktadır. Al fonksiyonları değeri geri döndürmekte, ayarla fonksiyonları ise aldığıa argümanı değişkenlere atamaktadır. Ayarla fonksiyonları girilen sayının 0’dan büyük, 1000’den küçük olmasını kontrol etmekte, doğru giriş alındıysa geriye 0, yanlış ise 1 döndürmektedirler.
dikdortgenAlan sınıfında
public olarak
* int alanHesapla()
fonksiyonu bulunmaktadır. Bu fonksiyon aldığı argümanları çarparak geri döndürmektedir.
dikdörtgenAlan sınıfı dikdortgen sınıfından türetilmiştir.
dikdortgenAlan sınıfından bir obje türetip, en ve boy değerlerini kullanıcıdan alarak sınıf değişkenlerine yazınız. En ve boy değişkenleri istenen aralıkta değilse, tekrar giriş yapmasını fonksiyondan dönen değere göre sağlayınız.
alanHesapla fonksiyonunu çağırarak, hesaplanmış alanı ekrana bastırınız.
Aşağıda birbirleri ile olan ilişkisi UML diyagramı olarak verilen sınıfları geliştiriniz.
vadesizHesap ve vadeliHesap sınıfları, hesapBilgileri sınıfından türetilmiştir.hesapBilgileri sınıfındaki;
paraYatir fonksiyonu, bakiye değişkeninin değerinin üzerine eklenerek güncellemektedir. Aldığı argüman 0’dan küçük ise kullanıcıya hata mesajı göstermelidir.
vadesizHesap sınıfındaki;
Constructor aldığı iki parametreyi, eksiBakiyeUcreti ve eksiBakiyeLimiti değişkenlerine yazmaktadır.
paraCek fonksiyonu, bakiye değişkeninin değerinden eksilterek güncellemektedir. Aldığı argüman 0’dan küçük ise kullanıcıya hata mesajı göstermelidir. Ayrıca güncellenecek değer en fazla -eksiBakiyeLimiti kadar olabilir. -eksiBakiyeLimiti’den fazla olduğu durumda kullanıcıya hata mesajı göstermelidir.
Örn. eksikBakiyeLimiti 2000 ise, kullanıcının bakiyesi -2000’den daha az olamaz.
Eğer kullanıcının yapılan paraCek fonksiyonu ile bakiyesi 0’ın altına düşüyorsa, bakiyeden ayrıca eksiBakiyeUcreti’de çıkartılır.
vadeliHesap sınıfındaki;
Constructor aldığı parametreyi, yillikFaizOrani değişkenine yazmaktadır.
faizOdemesiHesapla fonksiyonu çağrıldığında, faizOranına göre bakiye değişkenini artırmaktadır. Örn faiz oranı 11 ise, bakiye+= bakiye * 11 /100 yapılacaktır.
Mantık kapılarını simule eden bir yazılım geliştirilecektir.
Mantık kapıları genellikle bir veya birden çok giriş alarak, iç mekanizmalarına göre bir çıkış üretirler.
Ve (And), Veya (Or) ve Değil (Not) kapıları tasarlanacaktır. Aşağıda mantık kapılarının doğruluk tabloları verilmektedir.
Aşağıdaki şekilde mantık kapıları için yaratılacak sınıfların hiyerarşisi verilmektedir.
Bütün mantık kapılarında (Ve, Veya, Değil için) tek bir çıkış vardır. Ayrıca programda her bir mantık kapısından bir obje oluşturulduğunda bunlara özel adlar verilebilir. Bu genel özellikler mantikKapisi sınıfında barındırılacaktır.
mantikKapisi sınıfı;
protected olarak,
* string isim
* int cikis
public olarak,
* mantikKapisi (string)
* string isimAl()
* int cikisAl()
değişken ve fonksiyonlarını barındırmaktadır. Constructor’a verilen string argüman, isim değişkenine yazılmaktadır.
isimAl fonksiyonu isim değişkenini döndürmekte,
cikisAl fonksiyonu ise cikis değişkenini dondurmektedir.
ikiGirisliKapilar sınıfı;
private olarak,
* int pinA
* int pinAGirildi
* int pinB
* int pinBGirildi
public olarak,
* ikiGirisliKapilar(string)
* int pinA_Al()
* int pinB_Al()
değişken ve fonksiyonlarından oluşmaktadır.
Constructor’da alınan string değişken, kalıtım yapılmış mantikKapisi sınıfının constructor’una verilecektir.
Örn. ikiGirisliKapilar(string n) { … } yazmak yerine ikiGirisliKapilar(string n) : mantikKapisi(n) { … } yazılabilir.
Constructor aynı zamanda, pinAGirildi ve pinBGirildi değerleri 0 olarak atanacaktır.
pinA_Al fonksiyonunda, eğer pinAGirildi değeri 0 ise, yani daha önceden giriş yapılmadı ise, kullanıcıdan klavyeden giriş alınarak pinA değişekenine yazılmalı ve pinAGirildi değeri 1 yapılmalıdır. Ardından fonksiyon pinA değişkenini döndürmeldir. Eğer daha önceden giriş yapıldıysa (pinAGirildi == 1 ise) fonksiyon sadece pinA değişkeninin değerini döndürmelidir.
pinB_Al fonksiyonu’da pinA_Al fonksiyonu ile aynı görevdedir. İşlemleri pinB için yapmaktadır.
tekGirisliKapilar sınıfı;
private olarak,
*int pin
*int pinGirildi
public olarak,
* tekGirisliKapilar(string)
* int pin_Al()
değişken ve fonksiyonlarından oluşmaktadır.
Constructor, ikiGirisliKapilar sınıfında olduğu gibi, mantikKapisi sınıfının constructor’una aldığı argümanı vermektedir.
pin_Al() fonksiyonu, ikiGirisliKapilar sınıfındaki pinA_Al fonksiyonunda olduğu gibi çalışmaktadır. İşlemleri pin değişkeni için yapmaktadır.
veKapisi sınıfı;
public olarak,
* veKapisi(string)
* islemYap()
fonksiyonlarına sahiptir.
Constructor’da aldığı string argümanı, türetildiği ikiGirisliKapilar sınıfının constructor’una vermektedir.
islemYap fonksiyonu ise, pinA_Al ve pinB_Al fonksiyonlarını çağırarak iki integer değişken alır. Bu değişkenlerin ikiside 1 ise geriye 1, değilse 0 döndürür.
veyaKapisi sınıfı;
public olarak,
* veyaKapisi(string)
* islemYap()
fonksiyonlarına sahiptir.
Constructor’da aldığı string argümanı, türetildiği ikiGirisliKapilar sınıfının constructor’una vermektedir.
islemYap fonksiyonu ise, pinA_Al ve pinB_Al fonksiyonlarını çağırarak iki integer değişken alır. Bu değişkenlerin en az birisi 1 ise geriye 1, değilse 0 döndürür.
degilKapisi sınıfı;
public olarak,
* degilKapisi(string)
* islemYap()
fonksiyonlarına sahiptir.
Constructor’da aldığı string argümanı, türetildiği tekGirisliKapilar sınıfının constructor’una vermektedir.
islemYap fonksiyonu ise, pin_Al fonksiyonunu çağırarak bir integer değişken alır. Geriye bu değişkenin değilini alarak döndürür.
Main’de veKapisi, veyaKapisi, degilKapisi sınıflarından birer obje türerek çalıştırınız. Geri döndürdükleri değerleri ekrana bastırınız.