Sizden bir Garaj sınıfı dizayn etmeniz isteniyor. Garaja “parkEt” ve “parktanAl” şeklinde iki yordam tanımlanmalıdır. Garaj sadece bir araç almaktadır ve doluysa yeni bir araç park edilmemesi sağlanmalıdır.
Garaja kamyon, otomobil, bisiklet, vb. farklı araçlar park edilebilir. Her aracın farklı özellikleri olduğu gibi ortak noktaları da bulunmaktadır. Tasarım bu ortak noktaların tek yerde toplandığı bir yapıyı desteklemelidir. Bu ortak noktalar değişkenler(özellikler) olabileceği gibi yordamlar da olabilecektir. Tüm araçların ortak bir atadan gelen hizlanma() ve ferenleme() yordamlarına sahip olmalıdır. Bu yordamlar her nesilde override edilmesi zorunlu olarak tasarlanmalıdır. Ayrıca bunların tekerlek sayısı da farklı olabilir. Misal, otomobilin 4 tekerleği varken bisikletin 2 tekerleği bulunmaktadır. Üretilen tüm araç nesnelerinde tekerlekSayisi değişkenin saklanması yazılım mimari tarafından zorunlu kılınmalıdır. Garaj sınıfımızın ayrıca park edilmiş olan aracın tekerlek sayısını dönen bir fonksiyon bulundurması istenecektir.
Araç olarak en az 3 farklı (Kamyon, otomobil ve bisiklet) yeni araç sınıfı türetilmelidir. Tüm araçlarda ortak bilgi olarak kullanılacak olan bir aracSayisi değerine ihtiyaç vardır. Bu aracSayisi değeri ata’dan türetilen tüm sınıflardan üretilen tüm nesnelerde ortak olmalıdır ve her türlü yöntemle (new, extends ve implements) üretilen yeni araçta 1 artırılmalıdır. aracSayisi değişken projenin içerisinde üretilen tüm araçların sayısını saklayacaktır. Bu sayı üzerinden her araca bir aracID değeri de atanması istenmektedir. Her yeni araç sınıfı üretilirken mutlaka tekerlekSayisi ve aracID bilgisi otomatik olarak tanımlanmalıdır. Yine her yeni araç üretildiğinde aracSayisi otomatik olarak artırılmalıdır.
Özetle, Garaj sınıfımıza araç sınıf tiplerinden bir aracı park ediyoruz. Garaj boş ise dolduruyoruz ve yeni park etmeye izin vermiyoruz. Garaj’dan Araç’ı alırken, Garaj’da Araç’ı tuttuğumuz değişkeni boşaltıyoruz ve buna göre boş olduğunu anlayıp yeni araç kabulü yapabiliyoruz.
Tekerlek sayısını ise bu içerde tuttuğumuz nesne vasıtasıyla alınacaktır. Tekerlek sayısını dönmeden önce içerde araç var mı kontrolü önemlidir. Garaj sınıfı içerisinde park edilmiş bir araç yok ise tekerlek sayını geri döndürecek olan yordam hata vermemelidir. Zira Garaj boşken de bu fonksiyon çağrılabilir. Garaj sınıfında bulunan parkEt ve parktanAl yordamları her çalıştırıldığında ekran işlem yapılan aracın aracID bilgisi yazdırılmalıdır. (“2 nolu araç park edildi.” , “2 nolu araç parktan alındı.” gibi)
Garaj sınıfına araç park edildiğinde bunun sadece park eden kişi tarafından alınabilmesini istenmektedir. Yani güvenli bir garaj olmalıdır. “parkEt” fonksiyonumuz araç park edildiğinde geriye unique bir şifre dönecek. Bu değeri daha sonradan “parktanAl” fonksiyonuna ile garaja gönderdiğimizde fonksiyona araç nesnesi geri gönderilmelidir.
soruyu çözmeye hiç uğraştın mı bilmiyorum , takıldığın belli bir kısım var mı? (yoksa soruyu çözüp eline verelim mi istiyorsun. İkinci seçenek ise cevap veriyorum C şıkkı 🙂
Soruya uğraştım fakat parçaları birleştiremiyorum yani bütün halinde yapamadım kodu.Final sınavımızda hocamızın sorduğu bir soru.Yapabilirseniz çok minnettar olurum..
Sen yaptıklarını bi incele takıldığın yerde sor. Alın ödevimi yapın tarzı yaklaşım ne senin için ne de buradaki insanlar için güzel.
Takıldığın yerlerde soruların için yardımcı olmaya çalışırız
ParkEt metodu bence araç almalıydı ki hangi aracı park ettiğini anlaman gerekirdi. Anladığın zaman haliyle kaç tekerleği olduğunu da anlayabileceksin. İlk yorumum bu olsun.
Araç sayılarını tutmak için değişkenin normal sınıf bazlı bir değişken olduğu için her new dediğin araçta o sayı 0 dan başlar. O yüzden sayamazsın. Onu static yaparsan daha geniş bir scope içine almış olursun o zaman sayıların düzgün artacaktır.
Başka hangi alanlarda soruların varsa sorabilirsin yorumlardan.
ParkEt metodu bence araç almalıydı ki hangi aracı park ettiğini anlaman gerekirdi. Anladığın zaman haliyle kaç tekerleği olduğunu da anlayabileceksin. İlk yorumum bu olsun.
Araç sayılarını tutmak için değişkenin normal sınıf bazlı bir değişken olduğu için her new dediğin araçta o sayı 0 dan başlar. O yüzden sayamazsın. Onu static yaparsan daha geniş bir scope içine almış olursun o zaman sayıların düzgün artacaktır.
Başka hangi alanlarda soruların varsa sorabilirsin yorumlardan.