Ünite 10: Veri Tabanı Destekli Javafx Uygulamaları — Alıştırmalar
Ders kitabının açık uçlu alıştırmaları. Bunlar çoktan seçmeli sınav sorusu değil — düşünmeni, araştırmanı, kendi cümlelerinle anlatmanı isteyen etkinlikler. Kitabın verdiği örnek yanıtlar kapalı duruyor; önce kendin dene.
Alıştırma 1myders hazırladı
JavaFX mimarisinde yer alan 'Stage', 'Scene' ve 'Scene Graph' kavramlarının rollerini açıklayarak, bu yapıyı bir tiyatro sahnesi analojisiyle karşılaştırınız.
Yanıt / ipucu
Stage (sahne) uygulamanın dış penceresini yani tiyatro binasını/çerçevesini temsil eder. Scene (sahne içeriği) bu pencerenin içindeki dekoru, Scene Graph ise dekordaki nesnelerin hiyerarşik düzenini temsil eder. Bu yapı, görsel bileşenlerin organize edilmesini ve kolayca yönetilmesini sağlar.
Alıştırma 2myders hazırladı
MVC (Model-View-Controller) mimarisini kullanan bir JavaFX projesinde, Scene Builder ile tasarlanmış bir butonun tıklama olayının Controller sınıfına nasıl aktarıldığını araştırıp adımlarıyla açıklayınız.
Yanıt / ipucu
İlk olarak Scene Builder'da buton seçilerek 'On Action' kısmına bir metot adı (örneğin 'handleButtonClick') yazılır. Ardından FXML dosyasındaki bu buton, Controller sınıfında '@FXML' anotasyonu ve aynı metot ismiyle tanımlanarak ilişkilendirilir. Son olarak FXMLLoader bu iki katmanı birbirine bağlar.
Alıştırma 3myders hazırladı
SQL enjeksiyonu (SQL Injection) riskini önlemek amacıyla, 'Statement' yerine neden 'PreparedStatement' kullanılması gerektiğini birer kod örneği tasarlayarak karşılaştırınız.
Yanıt / ipucu
Statement kullanıldığında kullanıcı girdileri doğrudan SQL sorgu metnine eklenir ve bu durum zararlı kodların çalıştırılmasına yol açabilir. PreparedStatement ise parametreleri sorgudan ayırarak önceden derler ve girdileri sadece veri olarak işleyerek SQL enjeksiyonunu kesin olarak engeller.
Alıştırma 4myders hazırladı
Veritabanı bağlantılarında bellek sızıntılarını (memory leak) önlemek için kullanılan 'try-with-resources' yapısının çalışma mantığını araştırıp örnek bir kod bloğu ile açıklayınız.
Yanıt / ipucu
Bu yapı, 'AutoCloseable' arayüzünü uygulayan Connection, Statement ve ResultSet gibi kaynakların parantez içinde tanımlanmasını sağlar. Try bloğu normal veya hatalı şekilde sonlandığında, bu kaynakların 'close()' metotları Java tarafından otomatik olarak çağrılır.
Alıştırma 5myders hazırladı
Bir TableView bileşeninde veritabanından çekilen verilerin dinamik olarak listelenmesi ve güncellenmesi sürecinde 'ObservableList' ve 'setCellValueFactory' yapılarının üstlendiği görevleri açıklayınız.
Yanıt / ipucu
'setCellValueFactory', tablonun her bir sütununun model sınıfındaki hangi özellik (property) ile eşleşeceğini belirler. 'ObservableList' ise veritabanından çekilen verileri tutar ve listede bir eleman eklendiğinde veya silindiğinde TableView arayüzünün otomatik olarak güncellenmesini sağlar.