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.