Ödev 3
Veriliş 13/06/2020 - Teslim 06/07/2020 BBS 515 - Nesne Yönelimli Programlama
Soru 1 - Comparable Sayılar
Kesirli sayılar (Kesir), tam sayılar (TamSayi) ve rasyonel sayılar (RasyonelSayi) gibi Reel sayıları
(ReelSayi) gösteren bir sınıf hiyerarşisi tanımlayın. Bütün gerçek sayıların kendi arasında sıralanabilmesini
sağlayanız (Comparable interface’ini gerçekleştirin).
ReelSayi [] sayilar = new ReelSayi [6];
faturalar [0] = new Kesir (11 , 5) ;
faturalar [1] = new Kesir (4 ,3) ;
faturalar [2] = new TamSayi (3) ;
faturalar [3] = new TamSayi (1) ;
faturalar [4] = new RasyonelSayi (0.1) ;
faturalar [5] = new RasyonelSayi (0.6) ;
Arrays . sort ( sayilar ) ;
Yazdığınız programlar bu farklı tipteki sayıları doğru sıralayıp sıralamadığına göre test edilecektir.
Yukarıdaki kodlardaki gibi constructorlar tanımlamanız gerekmektedir ve sıralama işleminin sayısal
değerlere göre doğru çalışıp çalışmadığına göre test yapılacaktır. Aşağıda UML olarak kısmi olarak
sınıflar verilmiştir, bunlar sadece testte kullanılan metodlar ve özellikleri göstermektedir, ek olarak
istediğiniz gibi tanımlama yapabilirsiniz.
<<abstract>>
ReelSayi
+ compareTo(ReelSayi) int
Kesir TamSayi RasyonelSayi
- pay: double - sayi : int - sayi: double
- payda: double
TamSayi(deger : int) RasyonelSayi(deger: double)
Kesir(pay:double, payda:double)
Soru 2 - Otopark Takip Sistemi
Bir Otopark’ın dolu park yerlerini takip eden bir program gerçekleştirilecektir. Takip edilen otopark
farklı en ve boylara sahip dikdörtgen park yerlerinden oluşabilmektedir. Otoparkın metre karesinin
kira ücreti bilinmektedir, buna göre her park yerinin alanına göre (boy x alan x metre kare fiyatı)
ücretlendirme yapılmaktadır. Araçların da sığabileceği park yerleri dikdörtgen olarak tanımlanmaktadır.
Park yerine bir araç geldiğinde sığabildiği en ucuz park yerine park etmektedir, bir park yerine
1
doğal olarak sadece bir araç park edebilmektedir, eğer uygun park yeri bulunamazsa o araç park
edememektedir. Yazdığınız programın toplam kazancı takip etmesi beklenmektedir.
Programın 3 tane sınıfı olması gerekiyor. Otopark nesnesinin aşağıdaki gibi metodları tanımlanmalıdır,
bunlardan ikisi constructor olacaktır. Birinci constructor bütün park yerlerinin aynı eni ve boyu
olduğunu varsaymaktadır. İkincisi ise farklı en, boy ve adetlerde park yerleri oluşurabilmektedir.
Her park yerinin ücreti kapladığı alan çarpı metrekare kira fiyatıdır.
ParkYeri
- en: double
- boy: double
+ ParkYeri(en: double, boy:
double, ucret:double)
+ getBoy()
+ getEn()
+ getUcret()
parkYerleri
n 0..1
0..1
Otopark Arac
- metrekareUcret - plaka:String
+ Otopark(metreKareKira: - en: double
double, en: double, boy: dou- - boy: double
ble, parkAdeti: int) + Arac(en: double, boy: dou-
+ Otopark(metreKareKira: ble, plaka:String)
double, enler: double[], boylar: + getPlaka()
double[], parkAdetleri: int[]) + getBoy()
+ parkEt(Arac): ParkYeri + getEn()
+ parktanCik(Arac) : ParkYeri
+ parktanCik(ParkYeri) : Arac
+ getKazanc() : double
Aşağıda bu sınıfların kullanımına örnekler oluşturulmuştur.
Otopark otopark = new Otopark (10 , 3 , 6 , 10) ;
Arac arac = new Arac (5 , 2 , " 06 QZ1234 " ) ;
Arac arac2 = new Arac (3 , 1 , " 06 QZ1235 " ) ;
Arac arac3 = new Arac (7 , 2 , " 06 QZ1236 " ) ;
2
Arac arac4 = new Arac (5 , 5 , " 06 QZ1237 " ) ;
ParkYeri park1 = otopark . parkEt ( arac ) ;
otopark . parkEt ( arac2 ) ;
otopark . parkEt ( arac3 ) ;
otopark . parkEt ( arac4 ) ;
ParkYeri park = otopark . parktanCik ( arac2 ) ;
double [] enler = {3 , 6};
double [] boylar = {8 , 10};
int [] adetler = {5 ,5};
Otopark otopark2 = new Otopark (10 , enler , boylar , adetler ) ;
park = otopark2 . parkEt ( arac ) ;
otopark . getKazanc () ;