Üç Ders 2024 20 soru

Mobil Programlama 2024 Üç Ders

Kaynak: https://lolonolo.com/2025/08/01/mobil-programlama-2024-uc-ders-sorulari/

📖 Konu özeti (sınav öncesi tekrar)

Mobil Programlama 2024 Üç Ders Soruları

Mobil Programlama 2024 Üç Ders Soruları

Giriş

Modern mobil programlama, klasik cep telefonlarını akıllı telefonlardan ayıran en belirgin özellik olan “sonradan uygulama yükleme imkânı” üzerine kuruludur. Bu alanda, hem iOS hem de Android için tek bir kod tabanından yüksek performanslı uygulamalar geliştirmeyi sağlayan Flutter, en popüler çerçevelerden biri haline gelmiştir. Bu makalede, Flutter’ın temelini oluşturan Dart programlama dili özellikleri, widget mimarisi ve mobil uygulama geliştirme sürecindeki temel kavramlar ele alınacaktır.

Dart Programlama Dilinin Temelleri

Flutter’ın gücü, arkasındaki modern ve esnek Dart programlama dilinden gelir. Dart, geliştiricilere güçlü özellikler sunar. Örneğin, bir sınıfa başka bir sınıfın özelliklerini ve metotlarını kopyalamak için kalıtım yerine `mixin` kullanılır ve bu işlem `with` anahtar kelimesi ile yapılır. Koleksiyonlarla çalışırken, bir listedeki içeriği diğerine kopyalamak için `…?` gibi “yayma operatörleri” (spread operators) kullanılır. Fonksiyon tanımlamalarında ise, `{bool gizli = false}` gibi varsayılan değerli ve isimlendirilmiş parametreler kullanılabilir; eğer fonksiyon çağrılırken bu parametreye bir değer atanmazsa, fonksiyon varsayılan değeri olan `false` değerini alır.

Flutter’ın Temel Mimarisi ve Proje Yapısı

Flutter’ın temel felsefesi basittir: Her şey bir “Widget”tır. Ekranda gördüğünüz metinlerden butonlara, tüm sayfa düzenlerinden animasyonlara kadar her arayüz bileşeni `Widget` adı verilen kök sınıftan türetilir. Yeni bir projeye başlamak için `flutter create proje_adi` komutu kullanılır ve bu komut, “proje_adi” isminde yeni bir proje klasörü oluşturur. Flutter ekosistemi, `pub.dev` adresinde barındırılan binlerce açık kaynak kütüphane ile zenginleşmiştir. Flutter ekibinin önerdiği yüksek kaliteli kütüphaneler ise “Flutter Favorite” programı ile işaretlenir. Projenin bağımlılıkları `pubspec.yaml` dosyasında yönetilir ve bir paketin uyumlu en güncel sürümünü kullanmak için versiyon numarasının önüne `^` (caret) sembolü konulur. Uygulama içindeki sayfalar arası geçişler ve gezinti ise `Navigator API` adı verilen mekanizma ile sağlanır.

Temel Flutter Widget’ları ve Kullanımları

Flutter’da arayüz oluşturmak, widget’ları bir araya getirmekle olur. Birden fazla görsel bileşeni bir satırda soldan sağa dizmek için `Row` widget’ı kullanılır. Bir bileşene arkaplan rengi, kenar boşlukları (padding, margin) veya çerçeve (border) gibi özellikler atamak için ise `Container` widget’ı tercih edilir; ancak `Container` birden fazla objeyi yan yana dizmek için kullanılmaz. Verileri kaydırılabilir bir ızgara (tablo) görünümünde sunmak için ise `GridView` widget’ı idealdir. Asenkron, yani gelecekte tamamlanacak bir işlemden (Future) dönecek sonuca göre arayüz çizmek için `FutureBuilder` kullanılır. Animasyonlar için de pratik çözümler sunulmuştur; `AnimatedContainer` gibi widget’lar, özellikleri değiştiğinde bunu otomatik olarak canlandıran “Implicit Animations” (örtük animasyonlar) kategorisine girer.

İleri Konular: Durum Yönetimi, Dosya Erişimi ve Test

Karmaşık uygulamalar, daha ileri düzeyde bilgi gerektirir. “Provider” gibi durum yönetimi (state management) kütüphanelerinde, `Consumer` widget’ının `child` parametresi, veri değiştiğinde yeniden çizilmesine gerek olmayan alt ağacı ifade ederek performansı optimize etmek için kullanılır. Cihazın dosya sistemindeki belge veya geçici klasörler gibi yolları elde etmek için `path_provider` paketi kullanılır. Uygulamaya dışarıdan eklenen resim dosyaları gibi varlıklara erişmek için ise `AssetImage(‘icons/heart.png’, package: ‘my_icons’)` gibi kodlar kullanılır; bu kod, belirtilen kütüphanedeki resim dosyasını RAM’e yükler. Yazılan kodun kalitesini sağlamak için testler de kritik öneme sahiptir. Bir widget testi yapılırken, widget’ı test ortamında oluşturmak için `WidgetTester` sınıfının `pumpWidget` fonksiyonu kullanılır.

Sonuç

Flutter, modern, reaktif ve widget tabanlı mimarisiyle mobil uygulama geliştirmeyi hem hızlandıran hem de kolaylaştıran güçlü bir çerçevedir. Dart dilinin esnekliğinden, zengin widget kütüphanesine ve güçlü paket ekosistemine kadar sunduğu olanaklar, geliştiricilerin hem iOS hem de Android platformları için estetik ve performanslı uygulamalar yaratmasını sağlar.

Mobil Programlama 2024 Üç Ders Soruları

Mobil Programlama 2024 Üç Ders Soruları

20 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
Dart’ta bir sınıf tanımlaması yapılırken mixin kullanarak miras alma yapılacaksa mixin adları hangi anahtar kelimeden sonra sıralanırlar?
ADoğru cevap
Açıklama
Dart programlama dilinde bir sınıfa mixin eklemek için `with` anahtar kelimesi kullanılır. Örneğin: `class MyClass with MyMixin { … }`.
Soru 2
Aşağıdaki operatörlerden hangisi bir listedeki içeriği bir başka listeye kopyalamak için kullanılır?
CDoğru cevap
Açıklama
Dart’ta “spread operator” olarak bilinen `…` operatörü, bir koleksiyonun (liste, set, map) elemanlarını başka bir koleksiyona kopyalamak için kullanılır. `…?` ise, kopyalanacak liste `null` ise hata vermemek için güvenli yayma operatörüdür.
Soru 3
https:\\pub.dev internet adresi aşağıdaki tanımlardan hangisi için hizmet vermektedir?
ADoğru cevap
Açıklama
`pub.dev` adresi, Dart paketleri ve Flutter eklentileri (paketleri) için merkezi bir depodur. Geliştiriciler burada açık kaynak kütüphaneleri paylaşır ve bulabilirler.
Soru 4
Aşağıdakilerden hangisi Flutter’da dosya sistemindeki farklı klasörlerin yollarını elde etmek için kullanılan paketin adıdır?
BDoğru cevap
Açıklama
Flutter’da platforma özgü dosya sistemi yollarını (uygulamanın belge dizini, geçici dizin vb.) elde etmek için `path_provider` paketi kullanılır.
Soru 5
Flutter’da bir Future objesinden dönen sonucun ekrana yansıtılması için kullanılan Widget aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
`FutureBuilder` Widget’ı, bir `Future` (asenkron işlem) objesinin durumuna (tamamlanmamış, tamamlanmış ve hata, tamamlanmış ve veri) göre farklı arayüzler göstermek için kullanılır.
Soru 6
Flutter ekibinin kullanım için önerdiği kütüphaneleri sunduğu programın adı aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
Flutter ekibi, belirli kalite standartlarını karşılayan ve geniş kullanım için önerilen paketleri “Flutter Favorite” olarak işaretler.
Soru 7
Flutter’da sayfalar arası gezintiyi sağlayan mekanizma aşağıdaki isimlerden hangisi ile adlandırılır?
CDoğru cevap
Açıklama
Flutter’da uygulama içindeki sayfalar (rotalar) arası geçişleri yönetmek için `Navigator` sınıfı ve API’ları kullanılır.
Soru 8
Aşağıdakilerden hangisi bir satırda sağdan sola birden fazla görsel arayüz bileşenini yerleştirmek için kullanılan düzenleyici arayüz bileşenidir?
DDoğru cevap
Açıklama
`Row` (Satır) widget’ı, çocuk widget’larını yatay bir düzlemde (bir satırda) yan yana düzenlemek için kullanılır.
Soru 9
Flutter’da tüm arayüz bileşenlerinin miras alarak oluşturuldukları kök sınıfın adı aşağıdakilerden hangisidir?
ADoğru cevap
Açıklama
Flutter’da kullanıcı arayüzündeki her şey bir `Widget`’tır. Tüm görsel arayüz bileşenleri `Widget` sınıfından türetilir.
Soru 10
Flutter’ın animasyon oluşturmak için hazır sunduğu “AnimatedContainer” gibi widgetların kullanımı ile gerçekleştirilen animasyon türü aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
`AnimatedContainer` gibi widgetlar, belirli bir özelliğin (örneğin renk, boyut) değişimini otomatik olarak yumuşak bir animasyonla sağlayan “implicit animations” (örtük animasyonlar) kategorisine girer. Geliştiricinin animasyon kontrolcüsünü manuel olarak yönetmesine gerek kalmaz.
Soru 11
Akıllı telefonlarla, önceki dönem klasik cep telefonlarını ayıran belirgin özellik aşağıdakilerden hangisidir?
ADoğru cevap
Açıklama
Akıllı telefonların klasik cep telefonlarından en belirgin farkı, kullanıcıların uygulama mağazaları aracılığıyla cihazlarına sonradan uygulama (app) yükleyebilme ve böylece cihazın işlevselliğini genişletebilme yeteneğidir.
Soru 12
flutter_test paketi kullanarak bir widget testi yapılacaktır. Widgetın test ortamında oluşturulması için aşağıdaki hangi sınıf ve fonksiyon çifti kullanılır?
DDoğru cevap
Açıklama
Flutter’da widget testleri yazarken, `WidgetTester` sınıfı ve onun `pumpWidget()` fonksiyonu, test ortamında bir widget’ı oluşturmak ve render etmek (ekrana yansıtmak) için kullanılır.
Soru 13
Flutter’da provider kütüphanesindeki uygulama seviyesi durum yönetiminde kullanılan Consumer widgetının yapıcı fonksiyonunun builder parametresi, parametreleri context(BuildContext), value(Generic Data Type) ve child(Widget) şeklindedir.
Yukarıdaki child parametresi aşağıdaki amaçlardan hangisi için kullanılmaktadır?
BDoğru cevap
Açıklama
`Consumer` widget’ının `builder` fonksiyonundaki `child` parametresi, `Consumer`’ın dinlediği veriler değiştiğinde `builder` fonksiyonu yeniden çalışsa bile, yeniden çizilmesi gerekmeyen (güncellenmeyen) alt widget ağacını optimize etmek için kullanılır. Bu sayede gereksiz yeniden çizimlerin önüne geçilir.
Soru 14
Bir Flutter projesinde iç içe klasörlerde aynı isimli resim dosyası bulunuyorsa en dış klasördeki resim dosyasının konfigürasyon dosyasında gösterilmesi tamamını projeye dahil edecektir. Flutter diğer resim dosyalarını hangi amaçla projeye dahil etmiştir?
EDoğru cevap
⚠️ Cevap anahtarı tartışmalı: İç içe klasörlerdeki aynı isimli resimler (2.0x, 3.0x) farklı piksel yoğunluklu cihazlar/telefon modelleri içindir (A); anahtar 'farklı temalar' (E) diyor.
Soru 15
flutter create name1
Yukarıdaki komut çalıştırıldığında aşağıdakilerden hangisini gerçekleştirir?
BDoğru cevap
Açıklama
`flutter create ` komutu, belirtilen adla yeni bir Flutter projesi klasörü ve gerekli temel dosya yapısını (Dart kodları, pubspec.yaml, android/ios klasörleri vb.) oluşturur.
Soru 16
Aşağıdaki ihtiyaçlardan hangisi için arayüz bileşenlerinizi bir Container widgetı içerisine toplamazsınız?
DDoğru cevap
Açıklama
Bir `Container` widget’ı, tek bir alt widget’ı (child) düzenlemek için kullanılır ve ona padding, margin, border, color gibi görsel özellikler atamanızı sağlar. Ancak birden fazla objeyi yan yana (satırda) sıralamak için `Row` veya alt alta (sütunda) sıralamak için `Column` gibi düzenleyici widget’lar kullanılır.
Soru 17
void gorunum ({bool kalin = false, bool gizli = false}) {…}
yukarıdaki şekilde tanımlanmış gorunum fonksiyonu
gorunum (kalin: true);
şeklinde çağrılırsa aşağıdakilerden hangisi doğrudur?
DDoğru cevap
Açıklama
Dart’ta `{bool kalin = false, bool gizli = false}` şeklinde tanımlanan parametreler named (adlandırılmış) ve optional (isteğe bağlı) parametrelerdir ve varsayılan değerleri vardır. `gorunum(kalin: true);` çağrıldığında `kalin` parametresi `true` olurken, `gizli` parametresi için bir değer verilmediği için varsayılan değeri olan `false` değerini alır.
Soru 18
AssetImage(‘icons/heart.png’, package: ‘my_icons’)
Yukarıdaki kod parçacığının işlevi aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

AssetImage içindeki package: 'my_icons' parametresi, resmin mevcut projeden değil my_icons adlı paketten (kütüphaneden) yükleneceğini belirtir. Böylece o paketteki icons/heart.png dosyası yüklenerek belleğe alınır ve görüntülenmeye hazır hale gelir; kod herhangi bir dosya kopyalamaz veya yeni kütüphane oluşturmaz.

Soru 19
pubspec.yaml dosyasındaki gereksinimler (dependencies) kısmında paket yönetiminin en güncel sürümü bulması için versiyon numarası önüne aşağıdaki sembollerden hangisi gelmektedir?
BDoğru cevap
Açıklama
`pubspec.yaml` dosyasında bir paketin versiyon numarası önüne konulan `^` (caret) sembolü, Dart’ın o paketin belirtilen sürümle uyumlu olan en yeni “major” olmayan sürümünü kullanmasını sağlar. Örneğin, `^1.2.3` demek `1.2.3` ve `1.x.x` (1.3.0, 1.4.0 vb. gibi) arasındaki en güncel sürümü kullan demektir.
Soru 20
GridView düzenleyici arayüz bileşeni için aşağıdaki tanımlardan hangisi uygundur?
EDoğru cevap
Açıklama
`GridView` widget’ı, öğeleri yatay ve dikey olarak düzenlenmiş bir ızgara (grid) yapısında gösterir ve bu ızgaranın kaydırılabilir olmasını sağlar. Bu genellikle fotoğraf galerileri veya ürün katalogları gibi çok sayıda öğenin gösterilmesi gereken durumlarda kullanılır.