Mobil Programlama 2025-2026 Final
Kaynak: https://lolonolo.com/2026/01/25/mobil-programlama-2025-2026-final-sorulari-guz/
📖 Konu özeti (sınav öncesi tekrar)
Mobil Programlama 2025-2026 Final Soruları (Güz)
Dart Programlama Dilinin Temelleri ve Kapsülleme
Mobil uygulama geliştirme ekosisteminde Dart, sunduğu modern sözdizimi ve performans yetenekleriyle öne çıkar. Geleneksel dillerden farklı olarak Dart’ta public veya private gibi anahtar kelimeler bulunmaz. Bunun yerine kapsülleme (encapsulation), tanımlayıcıların önüne getirilen alt çizgi (_) ile sağlanır. Bu kural, ilgili değişkenin veya sınıfın sadece tanımlandığı kütüphane içinden erişilebilir olmasını garanti eder. Ayrıca Dart 2.3 ile gelen Yayılma Operatörü (…?), koleksiyonları birleştirirken null güvenliği sağlayarak kodun daha temiz ve hatasız yazılmasına imkan tanır.
Flutter’ın Bildirimsel (Declarative) UI Yaklaşımı
Flutter, arayüz çiziminde “Bildirimsel” (Declarative) bir felsefeyi benimser. Geliştiricinin arayüzün nasıl değişeceğini adım adım tarif ettiği emirsel (imperative) yapının aksine, Flutter’da arayüz mevcut durumun (State) bir fonksiyonudur ($UI = f(State)$). Durum değiştiğinde framework, arayüzün yeni halini otomatik olarak yeniden çizer. Bu süreçte widget’ların tanıtımı ve hiyerarşisi için resmi dokümantasyondaki Widget Catalog en temel başvuru kaynağıdır. Karmaşık navigasyon süreçlerinde ise onGenerateRoute parametresi, geçiş bilgilerini taşıyan RouteSettings nesnesiyle birlikte dinamik rota yönetimi sağlar.
Eşzamanlılık, Isolate ve Performans Yönetimi
Dart dili “Single Thread” (tek iş parçacıklı) bir yapıya sahip olsa da, işlemciyi yoran ağır operasyonlar için Isolate yapısını kullanır. Isolate’ler, geleneksel “Thread”lerden farklı olarak belleği paylaşmazlar ve birbirleriyle mesajlaşma yoluyla haberleşirler. Bu mimari, bellek sızıntılarını ve kilitlenmeleri (deadlock) önleyerek uygulamanın akıcı kalmasını sağlar. Uygulama yayınlanma aşamasına geldiğinde ise, kodların tersine mühendislikle deşifre edilmesini engellemek için derleme sırasında –obfuscate (kod karartma) etiketi kullanılarak güvenlik artırılır.
Veri Depolama ve Platform Entegrasyonu
Kalıcı veri saklama süreçlerinde Flutter iki temel yapı sunar: Küçük veriler (anahtar-değer çiftleri) için asenkron bir erişim sunan SharedPreferences ve dosya sistemi erişimi için path_provider kütüphanesi. Uygulamanın kendine ait kalıcı klasörüne erişmek için getApplicationDocumentsDirectory() fonksiyonu kullanılır. Platformlar arası geçişte ise Package (Paket) sadece Dart kodlarını içerirken, Plugin (Eklenti) cihaz donanımına (kamera, GPS vb.) erişmek için platforma özel (Kotlin/Swift) kodlarla köprü kurar.
Test Odaklı Geliştirme ve Firebase Entegrasyonu
Uygulama kalitesini artırmak için Birim Testleri (Unit Test) hayati önem taşır. Test senaryolarında beklenen sonuçları doğrulamak için expect fonksiyonu kullanılır. Veritabanı gibi dış kaynakları simüle etmek için ise Mockito paketiyle “mocking” işlemleri gerçekleştirilir. Modern uygulamaların vazgeçilmezi olan Firebase servislerini kullanmadan önce ise mutlaka initializeApp() fonksiyonu çağrılarak çekirdek yapı yapılandırılmalıdır. Veri alışverişinde ise dart:convert kütüphanesi içindeki jsonDecode() fonksiyonu, gelen JSON metinlerini Dart nesnelerine dönüştürerek işleme sürecini kolaylaştırır.
Mobil Programlama 2025-2026 Final Soruları (Güz)
Mobil Programlama Final Soruları 2025
___ (value, 1); // value değerinin 1 ’e eşit olup olmadığını doğrular.Flutter’daki test paketi ile unit test işlemi yapıldığında yukarıdaki gibi bir test koşulunun sağlanması için boş bırakılan yere ne gelecektir?
pubspec.yaml'da sürüm numarasının önüne konan ^ (caret) işareti, ana sürüm değişmeden uyumlu en güncel sürümün kullanılmasını sağlar; örneğin ^1.2.0, 1.2.0 ile 2.0.0 arasındaki en yeni sürümü kabul eder.
18.
setState(() {
_active = !_active;
});Hal böyle iken, setState metodu arayüz bileşenlerinin oluşturduğu ağaçta güncellenecek arayüz bileşeninden daha dış seviyede bulunuyorsa, arayüz güncellenmesinde değişen veri içteki arayüz bileşenlerine (widget) aktarılma yöntemi aşağıdakilerden hangisidir?
Flutter'da veri, widget ağacında yukarıdan aşağıya yapıcı (constructor) parametreleriyle aktarılır. setState dış widget'ta çağrıldığında dış widget yeniden oluşturulur ve güncel active değeri içteki widget'a yapıcı fonksiyonu aracılığıyla parametre olarak verilir.