Java vize sınavına hazırlanırken, nesne yönelimli programlama (OOP) prensiplerini ve Java'nın temel özelliklerini iyi anlamak önemlidir. Aşağıda, sınavda karşılaşabileceğiniz olası soru tipleri ve çözüm yaklaşımları bulunmaktadır.
Aşağıdaki Java kodunu inceleyin:
java class Ogrenci { public String ad; public int yas; } public class Main { public static void main(String[] args) { Ogrenci ogr = new Ogrenci(); ogr.ad = "Ahmet"; ogr.yas = -5; // Geçersiz yaş değeri System.out.println("Öğrenci Adı: " + ogr.ad + ", Yaşı: " + ogr.yas); } }Bu kodda kapsülleme ilkesi ihlal edilmiştir. Nedenini açıklayın ve kapsüllemeyi sağlayacak şekilde düzeltin.
Çözüm:
Kapsülleme, sınıf içindeki verilere doğrudan erişimi engelleyerek, verilere erişimi ve güncellemeyi metotlar aracılığıyla kontrol etmeyi amaçlar. Yukarıdaki kodda ad ve yas değişkenleri public olarak tanımlandığı için, dışarıdan doğrudan erişilebilir ve geçersiz değerler atanabilir. Kapsüllemeyi sağlamak için değişkenler private olarak tanımlanmalı ve erişim için getter ve setter metotları oluşturulmalıdır.
Aşağıdaki sınıf yapısını göz önünde bulundurun:
Bu kodda miras ve metot geçersiz kılma (method overriding) nasıl kullanılmıştır? Hayvan, Kedi ve Kopek sınıflarının nesnelerini oluşturarak sesCikar() metodunu çağırdığınızda ne olur?
Çözüm:
Kedi ve Kopek sınıfları, Hayvan sınıfından miras almıştır. Bu, Kedi ve Kopek sınıflarının Hayvan sınıfının tüm özelliklerine ve metotlarına sahip olduğu anlamına gelir. Ancak, Kedi ve Kopek sınıfları, sesCikar() metodunu kendi ihtiyaçlarına göre yeniden tanımlamışlardır (method overriding). Bu sayede, her sınıfın nesnesi kendi türüne özgü bir ses çıkarır.
Aşağıdaki kodu inceleyin:
java class Sekil { public double alanHesapla() { return 0; } } class Daire extends Sekil { private double yaricap; public Daire(double yaricap) { this.yaricap = yaricap; } @Override public double alanHesapla() { return Math.PI * yaricap * yaricap; } } class Kare extends Sekil { private double kenar; public Kare(double kenar) { this.kenar = kenar; } @Override public double alanHesapla() { return kenar * kenar; } }Bu kodda çok biçimlilik nasıl kullanılmıştır? Sekil sınıfından türetilen Daire ve Kare sınıflarının nesnelerini kullanarak alan hesaplama işlemini gerçekleştirin.
Çözüm:
Çok biçimlilik, Sekil sınıfının alanHesapla() metodunun alt sınıflar (Daire ve Kare) tarafından farklı şekillerde uygulanmasıyla sağlanmıştır. Her sınıf, kendi geometrik şekline göre alanı hesaplar.
Soyut sınıflar ve arayüzler arasındaki farkları açıklayın. Ne zaman soyut sınıf, ne zaman arayüz kullanmak daha uygundur?
Çözüm:
Ne zaman soyut sınıf, ne zaman arayüz kullanılmalı?
Aşağıdaki Java kodunu inceleyin:
java public class Main { public static void main(String[] args) { try { int[] sayilar = {1, 2, 3}; System.out.println(sayilar[5]); // Hata: ArrayIndexOutOfBoundsException } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Dizi sınırları aşıldı!"); } finally { System.out.println("Finally bloğu çalıştı."); } System.out.println("Program devam ediyor."); } }Bu kodda hata yönetimi nasıl yapılmıştır? try, catch ve finally bloklarının işlevlerini açıklayın.
Çözüm:
try bloğunda oluşan hatayı yakalayan ve işleyen bloktur. Hangi tür hatanın yakalanacağını belirtir.try bloğu başarılı olsa da, hata oluşsa da her durumda çalıştırılan bloktur. Genellikle kaynakların serbest bırakılması gibi işlemler için kullanılır.Yukarıdaki kodda, try bloğunda ArrayIndexOutOfBoundsException hatası oluşur çünkü dizi sınırları aşılmıştır. catch bloğu bu hatayı yakalar ve "Dizi sınırları aşıldı!" mesajını yazdırır. finally bloğu her durumda çalışır ve "Finally bloğu çalıştı." mesajını yazdırır. Program normal şekilde devam eder ve "Program devam ediyor." mesajı yazdırılır.
Bu örnekler, Java vize sınavında karşılaşabileceğiniz olası soru tiplerini ve çözüm yaklaşımlarını göstermektedir. Sınava hazırlanırken, OOP prensiplerini ve Java'nın temel özelliklerini iyi anlamak ve bol bol pratik yapmak önemlidir.