avatar
Kodlama_Dili
30 puan • 548 soru • 617 cevap
✔️ Cevaplandı • Doğrulandı

nesne yönelimli programlama java vize sınavı soruları

Nesne yönelimli programlama dersinde Java vize sınavına hazırlanıyorum. Sınavda ne tür sorular çıkacağını kestiremiyorum.
WhatsApp'ta Paylaş
1 CEVAPLARI GÖR
✔️ Doğrulandı
0 kişi beğendi.
avatar
Test_Coz
35 puan • 567 soru • 593 cevap

📚 Nesne Yönelimli Programlama Java Vize Sınavı Soruları ve Çözüm Önerileri

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.

🔑 Temel Kavramlar

  • 💡 Nesne (Object): Bir sınıfın (class) örneğidir. Bellekte belirli bir alanı kaplar ve kendine ait özellikleri (attributes) ve davranışları (methods) vardır.
  • ⚙️ Sınıf (Class): Nesnelerin şablonudur. Nesnelerin hangi özelliklere ve davranışlara sahip olacağını tanımlar.
  • 📦 Kapsülleme (Encapsulation): Verileri ve bu verilere erişimi sağlayan metotları bir araya getirerek, verilerin dışarıdan doğrudan erişimini engellemektir. Erişim belirleyiciler (private, public, protected) ile sağlanır.
  • 🌿 Miras (Inheritance): Bir sınıfın (alt sınıf/subclass) başka bir sınıfın (üst sınıf/superclass) özelliklerini ve davranışlarını devralmasıdır. Kodun tekrar kullanılabilirliğini artırır.
  • 🎭 Çok Biçimlilik (Polymorphism): Bir nesnenin farklı durumlarda farklı şekillerde davranabilmesidir. Metotların aşırı yüklenmesi (method overloading) ve metotların geçersiz kılınması (method overriding) ile sağlanır.
  • 抽象 Soyutlama (Abstraction): Karmaşık sistemlerin temel özelliklerini ortaya çıkararak, gereksiz detayları gizlemektir. Soyut sınıflar (abstract classes) ve arayüzler (interfaces) ile sağlanır.

✍️ Olası Soru Tipleri ve Çözüm Yaklaşımları

❓ Soru 1: Kapsülleme (Encapsulation)

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.

java class Ogrenci { private String ad; private int yas; public String getAd() { return ad; } public void setAd(String ad) { this.ad = ad; } public int getYas() { return yas; } public void setYas(int yas) { if (yas > 0) { this.yas = yas; } else { System.out.println("Geçersiz yaş değeri!"); } } } public class Main { public static void main(String[] args) { Ogrenci ogr = new Ogrenci(); ogr.setAd("Ahmet"); ogr.setYas(20); System.out.println("Öğrenci Adı: " + ogr.getAd() + ", Yaşı: " + ogr.getYas()); } }

❓ Soru 2: Miras (Inheritance)

Aşağıdaki sınıf yapısını göz önünde bulundurun:

java class Hayvan { public void sesCikar() { System.out.println("Hayvan sesi"); } } class Kedi extends Hayvan { @Override public void sesCikar() { System.out.println("Miyav"); } } class Kopek extends Hayvan { @Override public void sesCikar() { System.out.println("Hav Hav"); } }

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.

java public class Main { public static void main(String[] args) { Hayvan hayvan = new Hayvan(); Kedi kedi = new Kedi(); Kopek kopek = new Kopek(); hayvan.sesCikar(); // Çıktı: Hayvan sesi kedi.sesCikar(); // Çıktı: Miyav kopek.sesCikar(); // Çıktı: Hav Hav } }

❓ Soru 3: Çok Biçimlilik (Polymorphism)

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.

java public class Main { public static void main(String[] args) { Sekil sekil = new Sekil(); Daire daire = new Daire(5); Kare kare = new Kare(4); System.out.println("Şekil Alanı: " + sekil.alanHesapla()); // Çıktı: Şekil Alanı: 0.0 System.out.println("Daire Alanı: " + daire.alanHesapla()); // Çıktı: Daire Alanı: 78.53981633974483 System.out.println("Kare Alanı: " + kare.alanHesapla()); // Çıktı: Kare Alanı: 16.0 } }

❓ Soru 4: Soyut Sınıflar (Abstract Classes) ve Arayüzler (Interfaces)

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:

  • 🍎 Soyut Sınıflar: İçinde soyut (abstract) metotlar bulundurabilen sınıflardır. Soyut metotlar, alt sınıflar tarafından uygulanması zorunlu olan metotlardır. Soyut sınıflar, ortak davranışları ve özellikleri tanımlamak için kullanılır. Bir sınıf sadece bir soyut sınıftan miras alabilir.
  • 🍏 Arayüzler: Tamamen soyut metotlardan oluşan yapılardır. Bir sınıf birden fazla arayüzü uygulayabilir (implements). Arayüzler, sınıfların belirli bir davranışı sergilemesini sağlamak için kullanılır. Java 8 ile birlikte arayüzlere default metotlar eklenmiştir.

Ne zaman soyut sınıf, ne zaman arayüz kullanılmalı?

  • 🍋 Soyut Sınıf: Eğer sınıflar arasında "is-a" (bir türüdür) ilişkisi varsa ve ortak davranışlar ve özellikler tanımlanması gerekiyorsa soyut sınıf kullanmak daha uygundur.
  • 🍊 Arayüz: Eğer sınıflar arasında "can-do" (yapabilir) ilişkisi varsa ve sınıfların belirli bir davranışı sergilemesi gerekiyorsa arayüz kullanmak daha uygundur.

❓ Soru 5: Hata Yönetimi (Exception Handling)

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: Hata oluşması muhtemel olan kod bloğudur.
  • 🥝 catch: try bloğunda oluşan hatayı yakalayan ve işleyen bloktur. Hangi tür hatanın yakalanacağını belirtir.
  • 🍇 finally: 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.

Yorumlar