Mobil Programlama 2024-2025 Bütünleme
Kaynak: https://lolonolo.com/2026/01/23/mobil-programlama-2024-2025-butunleme-sorulari-guz/
📖 Konu özeti (sınav öncesi tekrar)
Mobil Programlama 2024-2025 Bütünleme Soruları (Güz)
Mobil Programlama 2024-2025 Bütünleme Soruları VİDEO ÖZET
Flutter ve Dart Ekosistemine Giriş
Modern mobil uygulama geliştirme süreçlerinde Google tarafından sunulan Flutter çerçevesi, yüksek performanslı ve estetik arayüzler oluşturmak için Dart programlama dilini kullanır. Flutter’ın en büyük avantajı, tek bir kod tabanı üzerinden hem Android hem de iOS için yerel performans sunan uygulamalar derleyebilmesidir. Uygulamanın geliştirme sürecinde pubspec.yaml dosyası hayati bir rol oynar; projenin tüm kütüphane bağımlılıkları ve AssetBundle ile erişilen resim, font gibi varlıklar burada tanımlanır. Paket yönetimi için terminalde kullanılan flutter pub get komutu, tanımlanan bu dış kaynakların projeye dahil edilmesini sağlar.
Dart Dilinde Tür Kontrolü ve Fonksiyonel Yapılar
Dart dili, nesne yönelimli ve tip güvenli (type-safe) bir dildir. Sınıf hiyerarşisinde tür kontrolü yapmak ve bir nesneyi belirli bir türe dönüştürmek (casting) için as operatörü kullanılır. Sınıf özelliklerini yönetirken sadece okunabilir (read-only) alanlar oluşturmak için get (getter) anahtar kelimesi tercih edilir. Bu sayede, hesaplanan değerler (örneğin; sağ kenar = sol + genişlik) dışarıdan değiştirilemeyen ancak dinamik olarak erişilebilen özellikler haline gelir. Mixin yapıları için ‘with’, döngüler için ise ‘in’ anahtar kelimeleri dilin esnekliğini artırır.
Veri Saklama: SQLite ve Dosya Sistemi
Mobil uygulamalarda veriyi cihazda yerel olarak saklamak için farklı yöntemler mevcuttur. SQLite, sunucusuz (serverless) çalışan, ilişkisel bir veritabanı motorudur. Bir servis gerektirmez, veritabanı disk üzerinde basit bir dosya olarak tutulur. İlginç bir özelliği olarak DateTime gibi bir veri türü barındırmaz; zaman verileri metin veya rakam olarak saklanır. Flutter’da dosya sistemine doğrudan erişim de mümkündür; path_provider paketi ile cihazdaki özel klasörlere ulaşılır ve dart:io kütüphanesiyle veri okuma/yazma işlemleri gerçekleştirilir. Basit anahtar-değer çiftleri için ise shared_preferences kullanılır.
Arayüz Yönetimi ve Animasyonlar
Flutter’da “her şey bir widget’tır”. Tasarımda Material Design standartlarını uygulamak için ListTile gibi hazır düzen bileşenleri kullanılırken; tüm widget’ların anlatımına resmi dökümandaki Widget Catalog başlığından ulaşılır. Uygulamanın durumu (state) değiştiğinde, Stateful Widget içindeki arayüzü güncellemek için ilgili kod bloğu sarmalanmalıdır. Performans odaklı yaklaşımlarda, tüm ağacı yeniden çizmek yerine Provider kütüphanesi ve Consumer widget’ı kullanılarak sadece ilgili alanın güncellenmesi sağlanır. Animasyonlarda ise AnimatedContainer; renk, padding, margin gibi özellikleri otomatik olarak canlandırırken, yazı boyutu gibi Container dışı özellikler için AnimatedDefaultTextStyle gibi özel widget’lar gerekir.
Ağ İstekleri ve Firebase Entegrasyonu
Mobil uygulamaların dış dünya ile iletişiminde http paketi kullanılır. Örneğin, http.get() fonksiyonu ağdan bir cevap beklediği için asenkron çalışır ve geriye Future<http.Response> değerini döndürür. Google’ın bulut tabanlı Firebase servislerine erişmek için ise resmi kütüphaneler koleksiyonu olan FlutterFire kullanılır. Bu ekosistem; yetkilendirme, veri depolama ve analiz gibi kritik süreçleri kolaylaştırır.
Performans Analizi ve Test Süreçleri
Uygulamanın akıcılığını korumak için DartDevTools içerisindeki Performance View kullanılır. Bu araç, ekran tazeleme sürelerini ve takılmaların (jank) nedenlerini görselleştirir. Flutter’da 3 derleme modu bulunur: Geliştirme için Debug, analiz için Profile ve dağıtım için Release. Release modu, markete yüklenen en optimize haldir. Test aşamasında ise, dış servisleri taklit etmek ve izole unit testler yazmak için Mockito paketi kullanılır; sonuçlar ise expect fonksiyonu ile doğrulanır.
Mobil Programlama 2024-2025 Bütünleme Soruları (Güz)
Mobil Programlama 2024-2025 Bütünleme Soruları (Güz)
url_launcher: ‘> 5.4.0 <6.0.0’
pubspec.yaml dosyası içerisinde yukarıdaki gibi bir satır varsa bu paket projeye nasıl dahil olacaktır?
Dart Programlama dilinde bir sınıf içerisinde yukarıdaki kodun işlevini hangisi doğru ifade etmektedir?
1. Debug: Geliştirme sırasında kullanılır (Hot Reload aktif).
2. Profile: Performans testleri ve analizi için kullanılır.
3. Release: Uygulamanın markete yüklenmesi ve son kullanıcıya dağıtılması için kullanılır (En optimize halidir).
Dolayısıyla, uygulamanın dağıtımı “Profile” modunda değil, “Release” modunda yapılır. A şıkkı yanlıştır.
http.get() asenkron çalışan bir fonksiyondur ve doğrudan http.Response değil, Future<http.Response> döndürür; sonuca await ile ulaşılır. (Seçeneklerde tür parametreleri görünmediğinden A ve E aynı görünmektedir; anahtar E'yi Future<http.Response> olarak kabul eder.)