Bütünleme 2024-2025 20 soru

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)

20 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
DartDevTools içerisindeki “Performance View” aracı aşağıdaki işlevlerden hangisini yerine getirmek için vardır?
ADoğru cevap
Açıklama
Flutter DevTools içerisindeki Performance View, uygulamanın kare hızını (FPS) ve her karenin (frame) oluşturulma süresini görselleştirir. Özellikle UI thread ve Raster thread’in ne kadar meşgul olduğunu göstererek takılmaların (jank) nedenini bulmaya yardımcı olur. Bu araç, uygulamanın akıcılığını test etmek ve performans darboğazlarını tespit etmek için kullanılır.
Soru 2
Aşağıdakilerden hangisi sınıfların hangi türden miras aldığını bulmak adına kullanılan tür kontrol operatörüdür?
BDoğru cevap
Açıklama
Dart programlama dilinde tür kontrolü ve dönüşümü için is ve as operatörleri kullanılır. is operatörü bir nesnenin belirli bir türde olup olmadığını (kontrol) ederken, as operatörü bir nesneyi belirli bir türe dönüştürmek (cast) için kullanılır. Soruda şıklar arasında is bulunmadığı için, türle ilgili işlem yapan ve tür hiyerarşisinde dönüşüm sağlayan as operatörü doğru cevaptır. (with mixin’ler için, in döngüler için kullanılır).
Soru 3
Flutter kod içerisinde projeye dahil edilmiş varlıklara(assets) erişmek için……….. kullanılır. Yukarıdaki cümlede boş bırakılan alana aşağıdaki ifadelerden hangisi yazılmalıdır?
CDoğru cevap
Açıklama
Flutter’da resim, font, JSON dosyası gibi statik kaynaklara (assets) erişmek için AssetBundle sınıfı kullanılır. Genellikle uygulamanın ana kaynaklarına erişmek için rootBundle nesnesi üzerinden işlem yapılır. Bu sınıf, uygulamanın derlenmiş paketinin içine gömülen dosyalara erişim yolunu sağlar.
Soru 4
Sqlite ile ilgili olarak aşağıdaki ifadelerden hangisi yanlıştır?
BDoğru cevap
Açıklama
SQLite, sunucusuz (serverless) bir veritabanı motorudur. MySQL veya PostgreSQL gibi arka planda sürekli çalışan bir “servis” veya “daemon” işlemine ihtiyaç duymaz. SQLite kütüphanesi doğrudan uygulamanın içine entegre edilir ve veritabanı, disk üzerinde duran basit bir dosyadan ibarettir. Bu nedenle B şıkkındaki “sürekli açık bir servis çalışmak zorundadır” ifadesi yanlıştır.
Soru 5
Eğer bir web servisi veya veritabanı verisi ile test işlemi yapılacaksa, taklit veri kaynağı oluşturmak için kullanılan paketin adı aşağıdakilerden hangisidir?
DDoğru cevap
Açıklama
Yazılım testlerinde (özellikle Unit Test), dış bağımlılıkları (API, veritabanı vb.) taklit etmek için “Mock” nesneler kullanılır. Dart ve Flutter ekosisteminde bu iş için en yaygın kullanılan paket mockito paketidir. Bu paket sayesinde sahte sınıflar oluşturulur ve “bu metod çağrıldığında şu cevabı dön” şeklinde senaryolar yazılarak testler izole edilir.
Soru 6
dependencies:
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?
BDoğru cevap
Açıklama
pubspec.yaml dosyasındaki sürüm kısıtlamaları, hangi paket sürümünün indirileceğini belirler. ‘> 5.4.0 <6.0.0’ ifadesi, sürümün 5.4.0’dan büyük VE 6.0.0’dan küçük olması gerektiğini belirtir. Dart paket yöneticisi (Pub), bu aralıktaki en güncel kararlı sürümü bulup projeye dahil eder.
Soru 7
double get right => left + width;
Dart Programlama dilinde bir sınıf içerisinde yukarıdaki kodun işlevini hangisi doğru ifade etmektedir?
ADoğru cevap
Açıklama
Dart dilinde get anahtar kelimesi, bir sınıf özelliği (property) için Getter metodu tanımlar. Bu yapı, right isminde bir özelliğe erişildiğinde (okunduğunda) left + width işlemini yapıp sonucu döndürür. Ancak set (setter) metodu tanımlanmadığı için bu özelliğe dışarıdan değer atanamaz. Bu da onu sadece okunabilir (read-only) bir özellik yapar.
Soru 8
Aşağıdaki çağrılardan hangisi Navigator API içerisinde isimlendirilmiş bir yolu çağırmak (ekrana getirmek) için kullanılan fonksiyondur?
DDoğru cevap
Açıklama
Flutter’da sayfalar arası geçiş (navigasyon) için Navigator sınıfı kullanılır. Eğer rotalar (sayfalar) MaterialApp içinde isimlendirilmişse (örneğin ‘/home’, ‘/profile’ gibi), bu sayfalara gitmek için Navigator.pushNamed fonksiyonu kullanılır. (Geri dönmek için pop kullanılır, ancak isimlendirilmiş rota çağırmak için pushNamed doğrudur).
Soru 9
AnimatedContainer kullanarak Flutter’da bir animasyon oluşturmak istenirse, bu animasyon aşağıdaki özelliklerden hangisini değiştiremez?
BDoğru cevap
Açıklama
AnimatedContainer, kendi özelliklerini (Container properties) animasyonlu bir şekilde değiştirebilen bir widget’tır. Bu özellikler arasında renk, boyut (width/height), padding, margin, border, border radius, transform gibi değerler bulunur. Ancak Font Size (Yazı Boyutu), Container’ın bir özelliği değildir; Container’ın içindeki (child) Text widget’ının stil özelliğidir. Yazı boyutunu animasyonlu değiştirmek için AnimatedDefaultTextStyle kullanılır.
Soru 10
Flutter’daki provider kütüphanesi ile sağlanan uygulama seviyesi durum yönetiminde aşağıdaki hangi widget ile sayfadaki belli bir alanın güncellenmesi sağlanır?
ADoğru cevap
Açıklama
Provider paketinde, verideki bir değişikliği dinleyip sadece ilgili widget’ı yeniden çizdirmek (rebuild) için Consumer widget’ı kullanılır. Consumer, genel ağacı yeniden çizmek yerine, sarmaladığı (builder içindeki) spesifik alanı güncelleyerek performans artışı sağlar.
Soru 11
Aşağıdakilerden hangisi Flutter çerçevesinde uygulamanın test ve bakım süreci için yanlış bir ifadedir?
ADoğru cevap
Açıklama
Flutter’da 3 derleme modu vardır: Debug, Profile ve Release.
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.
Soru 12
pubspec.yaml dosyasına yeni bir paket bağımlılığı tanımladığınızda bunun kullanıma hazır olması için terminalde aşağıdaki komutlardan hangisi çalıştırılır?
CDoğru cevap
Açıklama
pubspec.yaml dosyasına yeni bir kütüphane eklendiğinde, bu paketin dosyalarının internetten indirilmesi ve projeye bağlanması gerekir. Bu işlemi yapan komut flutter pub get komutudur. (IDE’ler genellikle dosyayı kaydettiğinizde bunu otomatik yapar).
Soru 13
Stateful Widget’tan miras alınarak oluşturulacak bir arayüz bileşeni içerisinde setState() fonksiyonun olması gereken yer aşağıdakilerden hangisidir?
DDoğru cevap
⚠️ Cevap anahtarı tartışmalı: setState() arayüz güncellemesini gerektiren kodu sarmalayacak şekilde State sınıfı içinde çağrılır (C); runApp içinde (D) olamaz.
Soru 14
Flutter uygulamasının performansı hakkında aşağıdakilerden hangisi doğrudur?
DDoğru cevap
Açıklama
Geliştiricinin oluşturduğu ham paket (özellikle Android App Bundle veya Universal APK), tüm olası cihaz mimarileri (ARM, x86) ve ekran yoğunlukları için kaynakları içerir. Ancak Google Play veya App Store, kullanıcının cihazına uygun olan parçaları ayıklayarak (App Thinning / App Bundle) indirme yapar. Bu nedenle kullanıcının indirdiği boyut, geliştiricinin yüklediği boyuttan daha küçüktür. A şıkkı yanlıştır çünkü küçük widget’lar performansı artırır.
Soru 15
Flutter geliştiricilerinin sunmuş olduğu widgetların tamamının tanıtımı ve anlatımlarına Flutter dokümanındaki aşağıdaki başlıklardan hangisinin altından erişilmektedir?
CDoğru cevap
Açıklama
Flutter’ın resmi web sitesindeki dokümantasyonda, tüm widget’ların kategorize edilmiş (Material, Cupertino, Layout, Text vb.) listesine, görsel örneklerine ve kullanım detaylarına ulaşmak için “Widget Catalog” bölümü kullanılır.
Soru 16
Flutter ve Dart içerisinden Firebase özelliklerine erişmek için kullanılan kütüphaneler koleksiyonunun adı aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
Google’ın Firebase servislerini (Auth, Firestore, Storage, Analytics vb.) Flutter uygulamalarında kullanmak için geliştirilen resmi eklenti ve paket setinin genel adı FlutterFire’dır.
Soru 17
http paketindeki http.get() fonksiyonunun dönüş değeri aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

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.)

Soru 18
Aşağıdakilerden hangisi Material düzenleyici arayüz bileşenlerinden biridir?
EDoğru cevap
Açıklama
ListTile, Material Design standartlarına uygun olarak tasarlanmış; bir satırda başlık, alt başlık, sol ikon (leading) ve sağ ikon/aksiyon (trailing) gibi bileşenleri düzenli bir şekilde tutan hazır bir düzen (layout) widget’ıdır. Text veya Icon temel bileşenlerdir ancak ListTile, bunları bir düzen içinde sunan yapısal bir bileşendir.
Soru 19
Aşağıdaki bilgilerden hangisi Flutter’da veri saklama işlemleri açısından yanlış bir ifadedir?
EDoğru cevap
Açıklama
Flutter’da (ve Dart’ta) dosya sistemine erişmek ve dosya kaydetmek/okumak (File I/O) kesinlikle mümkündür. dart:io kütüphanesi ve path_provider paketi kullanılarak cihazın diskine metin, resim veya binary dosyalar kaydedilebilir. Veri saklamak için sadece veritabanı (SQLite) veya Shared Preferences kullanmak zorunlu değildir; dosya sistemi de aktif olarak kullanılır. E şıkkı yanlıştır.
Soru 20
Aşağıdakilerden hangisi Flutter’da uygulama seviyesi durum yönetimi için kullanılan kütüphanenin adıdır?
CDoğru cevap
Açıklama
Flutter’da state management (durum yönetimi) için en popüler ve Google tarafından da önerilen kütüphanelerden biri Provider paketidir. Uygulama genelinde veriyi paylaşmak ve yönetmek için kullanılır. (Firebase backend, material tasarım, http ağ istekleri, intl ise çoklu dil desteği içindir).