Ara Sınav (Vize) 2024-2025 20 soru

Mobil Programlama 2024-2025 Ara Sınav (Vize)

Kaynak: https://lolonolo.com/2026/03/07/mobil-programlama-2024-2025-vize-sorulari-bahar/

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

Mobil Programlama 2024-2025 Vize Soruları (Bahar)

Mobil Programlama 2024-2025 Vize Soruları (Bahar)

Mobil Teknolojilerin Evrimi ve Flutter Giriş

Mobil dünyada büyük bir devrim yaratan akıllı telefonları klasik cep telefonlarından ayıran en belirgin özellik, kullanıcılara sonradan uygulama yükleme imkânı sunmalarıdır. Bu ekosistemde 2020 yılı civarında pazar payı liderliğini Android üstlenmiştir. Modern uygulama geliştirme süreçlerinde öne çıkan Flutter, Google tarafından geliştirilen bir yazılım geliştirme kitidir (SDK). Flutter hakkında yaygın bir yanlış algı, onun bağımsız bir dil olduğudur; oysa Flutter, Dart’tan bağımsız ayrı bir programlama dili değildir, Dart dilini kullanan bir çerçevedir (framework). Geliştiriciler, ihtiyaç duydukları açık kaynak kütüphanelere ise resmi paket yöneticisi olan pub.dev üzerinden erişirler.

Dart Programlama Dilinin Teknik Yapısı

Flutter’ın kalbi olan Dart dili, strongly typed (güçlü tip tanımlı) ve nesne yönelimli bir dildir. Bellekte verileri anahtar-değer çiftleri şeklinde saklamak için Map yapısı kullanılırken, veri türü kullanım anında belirlenen List gibi yapılar Jenerik (Generic) bir tür olarak tanımlanır. Kod yazımında bir listedeki içeriği başka bir listeye aktarmak için …? (üç nokta soru işareti) operatörüne başvurulur. Ayrıca, bir sınıfa ait olmayan bir fonksiyon dinamik olarak çağrıldığında sistemin çökmesini engelleyen noSuchMethod yapısı, hata yönetiminde kritik rol oynar.

Arayüz (UI) Geliştirme ve Widget Mimarisi

Flutter’da her şey bir widget’tır. Kullanıcı etkileşimi olmayan sabit bileşenler için Stateless Widget sınıflarından miras alınır. Dinamik bileşenlerde ise setState() metodu ile arayüz güncellemesi tetiklenir. Uygulamalara Android standartlarında profesyonel bir görünüm kazandırmak için material.dart kütüphanesi (Material Design) kullanılır. Görsel düzenlemede Container widget’ı; renk, kenarlık ve boşluk ayarları için idealdir; ancak objeleri yan yana sıralamak için uygun değildir (bu iş için Row kullanılır).

Yerleşim düzeninde (Layout) kısıtlar hayati öneme sahiptir. Örneğin, en üst seviyedeki bir Container’a verilen 100×100 boyutunun geçersiz kalıp ekranı kaplamasının sebebi, üst seviyedeki kısıtın (constraint) kendisini buna zorlamasıdır. Çoklu eleman dizilimlerinde ise Column widget’ı içindeki elemanların yatayda yerleşimi, crossAxisAlignment parametresi ile kontrol edilir.

Dosya Yönetimi ve Platform Desteği

Flutter projelerinde resim, JSON veya ses gibi varlıklara erişmek için services.dart kütüphanesindeki rootBundle yapısı kullanılır. Projeye dahil edilen aynı isimli resim dosyalarının farklı klasörlerde saklanması genellikle farklı temalarda (veya çözünürlüklerde) kullanmak amacına hizmet eder. Platform desteği açısından Flutter; Android, iOS, Windows, Linux ve Web’i desteklerken, 2021 itibarıyla HarmonyOS resmi destek kapsamında değildir. Windows masaüstü desteğini etkinleştirmek için terminale flutter config komutu girilmelidir.

Navigasyon ve Veri Aktarımı

Sayfalar arası geçişte Navigator API kullanılır. Navigator.pushNamed() fonksiyonu ile hedef sayfaya veri göndermek için arguments parametresi kullanılır. Uygulama rotalarının (routes) tanımlandığı MaterialApp bileşeninde ise bu rotalar Map<String, WidgetBuilder> türünde değer kabul eder.

Mobil Programlama 2024-2025 Vize Soruları (Bahar)

Mobil Programlama 2024-2025 Vize Soruları (Bahar)

20 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
Mobil Programlama 2024-2025 Vize Soruları (Bahar) 1. soru
Yukarıdaki şekilde kodlaması başlayan bir Widget sınıfı için hangi seçenek her zaman doğrudur?
DDoğru cevap
Soru 2
import ‘package:flutter/material.dart’;
Satırı ile Flutter projesine eklenecek Material Kütüphanesindeki bileşenler aşağıdaki hangi aşamada fayda sağlamaktadır?
ADoğru cevap
Açıklama
Google tarafından geliştirilen “Material Design”, modern ve kullanıcı dostu arayüzler tasarlamak için bir tasarım dilidir. Flutter’daki material.dart kütüphanesi, bu tasarım diline uygun hazır bileşenler (butonlar, kartlar, listeler, navigasyon çubukları vb.) sunar. Bu kütüphane kullanıldığında, uygulama Android cihazlardaki yerel tasarım standartlarına çok yakın ve profesyonel bir görünüm kazanır.
Soru 3
Aşağıdakilerden hangisi 2021 yılında Flutter’ın desteklemediği bir ortam (işletim sistemi) adıdır?
CDoğru cevap
Açıklama
Flutter, tek bir kod tabanıyla Android, iOS, Windows, macOS, Linux ve Web platformlarında çalışan uygulamalar geliştirmeyi sağlayan bir çerçevedir (framework). 2021 yılı itibarıyla Huawei tarafından geliştirilen HarmonyOS, Flutter’ın resmi olarak “ilk elden” (first-party) desteklediği platformlar arasında yer almamaktaydı. Bu platform için topluluk tarafından yürütülen çalışmalar bulunsa da resmi Flutter SDK desteği kapsamında değildi.
Soru 4
Aşağıdaki ifadelerden hangisi Flutter Çerçevesi (Framework) için yanlış bir bilgidir?
ADoğru cevap
Açıklama
Flutter bir programlama dili değil, bir yazılım geliştirme kitidir (SDK) veya “çerçevedir” (framework). Flutter uygulamaları geliştirmek için kullanılan programlama dili ise “Dart”tır. Dolayısıyla Flutter ile Dart birbirinden bağımsız değil, bir bütünün parçalarıdır. Diğer şıklar Dart dilinin teknik özelliklerini (nesne yönelimli olması, güçlü tip tanımlama vb.) doğru olarak açıklamaktadır.
Soru 5
https : // pub. dev internet adresi aşağıdaki tanımlardan hangisi için hizmet vermektedir?
BDoğru cevap
Açıklama
pub.dev, Dart ve Flutter ekosistemi için resmi paket yöneticisidir. Geliştiriciler, ihtiyaç duydukları hazır kütüphaneleri (örneğin veritabanı erişimi, harita kullanımı, ağ işlemleri vb.) buradan bulup projelerine dahil edebilirler. Bu platform, yazılım geliştirme sürecini hızlandıran açık kaynaklı binlerce modüle ev sahipliği yapar.
Soru 6
2010-2020 yılları arasındaki istatistiklere göre 2020 civarında akıllı telefon pazarında en fazla kullanılan işletim sistemi hangisidir?
CDoğru cevap
Açıklama
Akıllı telefon pazarının tarihsel gelişiminde Android işletim sistemi, açık kaynak kodlu yapısı ve çok sayıda üretici (Samsung, Huawei, Xiaomi vb.) tarafından tercih edilmesi sayesinde pazar payını hızla artırmıştır. 2020 yılı istatistiklerine göre Android, küresel pazarda yüzde 70’in üzerinde bir payla dünyanın en çok kullanılan mobil işletim sistemi konumundadır.
Soru 7
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?
DDoğru cevap
⚠️ Cevap anahtarı tartışmalı: İç içe klasörlerdeki aynı isimli resimler (2.0x, 3.0x) Flutter'da farklı piksel yoğunluğundaki cihazlar/telefon modelleri içindir (B); anahtar 'farklı temalar' (D) diyor.
Soru 8
Aşağıdaki ihtiyaçlardan hangisi için arayüz bileşenlerinizi bir Container widgetı içerisine toplamazsınız?
EDoğru cevap
Açıklama
“Container” widget’ı genellikle tek bir çocuğu (child) olan ve o çocuğa görsel stil (renk, kenarlık, boşluk vb.) vermek için kullanılan bir kutudur. Birden fazla objeyi yan yana sıralamak için “Row” (Satır) widget’ı kullanılır. Container’ın amacı dizilim yapmak değil, içerdiği nesnenin fiziksel sınırlarını ve görünümünü yönetmektir.
Soru 9
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ı telefon devriminin en temel taşı, cihazın üreticisinden bağımsız olarak üçüncü taraf geliştiricilerin hazırladığı uygulamaların kullanıcılar tarafından sonradan yüklenebilmesidir. Eski nesil telefonlarda özellikler genellikle sabit gelirken, akıllı telefonlar uygulama mağazaları (App Store, Play Store) sayesinde her kullanıcının ihtiyacına göre özelleştirilebilir birer bilgisayara dönüşmüştür.
Soru 10
Aşağıdakilerden hangisi bellekte verileri anahtar-değer (key-value) çiftleri şeklinde saklamak için kullanılan veri türünün adıdır?
CDoğru cevap
Açıklama
Dart dilinde “Map” veri türü, benzersiz bir anahtara (key) karşılık gelen bir değeri (value) saklamak için kullanılır. Örneğin bir sözlük yapısında kelime “anahtar”, kelimenin anlamı ise “değer”dir. “List” sıralı veriler için, “Set” ise benzersiz veriler için kullanılır.
Soru 11
Aşağıdaki operatörlerden hangisi bir listedeki içeriği bir başka listeye kopyalamak için kullanılır?
ADoğru cevap
Açıklama
Dart dilinde “Spread Operator” (…) veya güvenli hali (…?), bir koleksiyonun (liste, map) tüm elemanlarını başka bir koleksiyonun içine yaymak/kopyalamak için kullanılır. Bu operatör, listeleri birleştirirken veya mevcut bir listeyi yeni bir listenin parçası yaparken kodun kısalmasını sağlar.
Soru 12
Container(width: 100, height: 100, color: red)
Yukarıdaki kod satırında bir Container’ın genişlik ve yüksekliğinin 100 birim olması belirtilmiştir. Lakin bu Container sayfanın en üst bileşeni ise ekranın tamamını kapladığı görülür. Bunun sebebi nedir?
EDoğru cevap
Açıklama
Flutter’da yerleşim (layout) “Kısıtlar (Constraints) aşağı, Boyutlar yukarı” prensibiyle çalışır. Eğer bir Container ağacın en tepesindeyse (veya bir Scaffold içerisinde tek başınaysa), üst bileşen (ekranın kendisi) ona “Sen ekranın tamamı kadar olmalısın” kısıtını dayatır. Bu durumda Container’ın içine yazdığınız 100×100 boyutu, üstteki kısıt tarafından ezilir ve bileşen tüm ekranı kaplar.
Soru 13
Navigator API’de Navigator.pushNamed() fonksiyonunun hangi parametresi ile açılan sayfaya veri gönderimi yapılabilmektedir?
BDoğru cevap
Açıklama
Flutter’da isimlendirilmiş rotalar (named routes) kullanılarak bir sayfadan diğerine geçiş yaparken veri aktarmak istenirse `arguments` parametresi kullanılır. Gönderilen bu argümanlar, hedef sayfa açıldığında ModalRoute üzerinden çekilerek sayfa içerisinde işlenebilir.
Soru 14
MaterialApp arayüz bileşeninin routes parametresinin aldığı değer türü aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
MaterialApp içerisindeki `routes` parametresi, bir anahtar-değer haritasıdır. Buradaki anahtar sayfanın ismini temsil eden bir “String” (örneğin ‘/home’), değer ise o ismi aldığında hangi widget’ı inşa edeceğini söyleyen bir fonksiyon olan “WidgetBuilder”dır.
Soru 15
Mobil Programlama 2024-2025 Vize Soruları (Bahar) 15. soru
Bir sınıf tanımlaması için yukarıdaki kod bloğu bulunmaktadır. Bu kod bloğunun çağrılma zamanı aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
“noSuchMethod”, Dart dilinde bir sınıfa ait olmayan veya tanımlanmamış bir metodun dinamik olarak çağrılması durumunda tetiklenen özel bir sistem metodudur. Eğer bir geliştirici var olmayan bir fonksiyonu çağırmaya çalışırsa, program hata verip çökmek yerine bu metoda düşer ve hata yönetimi yapılmasına veya durumun loglanmasına olanak tanır.
Soru 16
‘package:flutter/services.dart’ kütüphanesi üzerinden kullanabileceğimiz rootBundle yapısı kullanılma sebebi aşağıdakilerden hangisidir?
DDoğru cevap
Açıklama
`rootBundle`, Flutter projesinin “assets” klasörüne eklenen ve `pubspec.yaml` dosyasında tanımlanan dış dosyalara (JSON, resim, ses vb.) uygulama içinden erişmeyi sağlar. Bu yapı sayesinde uygulama paketinin içine gömülü olan statik verilere okuma işlemi gerçekleştirilebilir.
Soru 17
Column widgetı içerisindeki crossAxisAlignment parametresi aşağıdakilerden hangisi için düzenleme sağlar?
EDoğru cevap
Açıklama
“Column” (Sütun) widget’ı için ana eksen (Main Axis) dikey, çapraz eksen (Cross Axis) ise yataydır. Dolayısıyla `crossAxisAlignment`, sütun içindeki çocukların yatayda nasıl hizalanacağını (başta, ortada, sonda veya genişlemiş) belirler. Dikey hizalama için ise `mainAxisAlignment` kullanılır.
Soru 18
Kullanıcı etkileşimi olmayacak kendi arayüz bileşenimizi tasarlamak istiyorsak hangi sınıftan miras almamız uygun çözümdür?
BDoğru cevap
Açıklama
Durumsuz (Stateless) widgetlar, ekranda bir kez çizildikten sonra kendi iç durumlarını değiştirme yeteneğine sahip değildir. Sadece dışarıdan gelen veriye (parametreye) göre şekillenirler ve kullanıcıyla dinamik bir etkileşime girmezler. Sabit bir logo, bir metin bloğu veya bir ikon tasarlarken en verimli yol Stateless Widget’tan miras almaktır.
Soru 19
Aşağıdaki veri türlerinden hangisi Jenerik (Generic) bir türdür?
DDoğru cevap
Açıklama
Jenerik türler, hangi veri tipiyle çalışacaklarının tanım anında değil, kullanım anında belirlenmesine izin veren yapılardır. Dart’ta `List` bir jenerik türdür; çünkü bir liste oluştururken `List` (sayılar listesi), `List` (metinler listesi) gibi farklı tipler belirtebiliriz. <> işaretleri arasındaki tip belirteci jenerik yapının göstergesidir.
Soru 20
“–enable-windows-desktop” ifadesi Windows bir işletim sistemi için Flutter projesi yazmayı mümkün kılmaktadır. Bu ifade hangi terminal komutuna parametre olarak yazılır?
EDoğru cevap
Açıklama
Flutter’ın henüz kararlı (stable) sürüme geçmemiş olan platform desteklerini veya belirli özelliklerini etkinleştirmek için terminale `flutter config` komutu yazılır. `–enable-windows-desktop` parametresi bu komutla birlikte kullanıldığında, Flutter SDK’sına o bilgisayarda Windows masaüstü uygulamaları geliştirme yeteneğini kazandırır.