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

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

Kaynak: https://lolonolo.com/2025/08/17/mobil-programlama-2024-2025-vize-sorulari-guz/

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

Mobil Programlama 2024-2025 Vize Soruları (Güz)

Mobil Programlama 2024-2025 Vize Soruları (Güz)

Giriş

Günümüz mobil dünyasında, 2020 civarında akıllı telefon pazarının en baskın işletim sistemi olan “Android” gibi platformlar için uygulama geliştirmek büyük önem taşımaktadır. Flutter, bu ihtiyaca cevap veren, hem iOS hem de Android için tek bir kod tabanından yüksek performanslı uygulamalar oluşturmayı sağlayan modern bir çerçevedir. Bu makalede, Flutter’ın temelini oluşturan Dart programlama dili, widget mimarisi ve uygulama geliştirme sürecindeki temel kavramlar ele alınacaktır.

Dart Programlama Dilinin Temel Özellikleri

Flutter’ın gücü, arkasındaki Dart programlama dilinden gelir. Dart, “jenerik” (Generic) veri türlerini destekler; örneğin `List`, içine alacağı elemanın türünü belirterek (`List<String>`) tip güvenliği sağlar. Fonksiyon tanımlamalarında esneklik sunar; bir fonksiyonun geri dönüş türünü veya parametrelerin türünü belirtmek zorunlu değildir. Ancak, normal (positional) parametrelere fonksiyon çağrılırken değer girilmesi zorunludur; bu kuralın ihlali hataya neden olur. Dilin bir diğer pratik özelliği ise `…?` gibi “yayma operatörleridir” (spread operators); bu operatör bir listedeki içeriği, null olma ihtimaline karşı güvenli bir şekilde başka bir listeye kopyalamak için kullanılır.

Flutter Projesini Kurma ve Yönetme

Bir Flutter projesi oluşturmak ve yönetmek için çeşitli komutlar ve yapılar kullanılır. Örneğin, Windows masaüstü desteğini aktif hale getirmek için `flutter config` komutuna “–enable-windows-desktop” gibi parametreler eklenir. Her Flutter projesinde bulunan `import ‘package:flutter/material.dart’;` satırı, projenize Android uygulamalarında kullanılanlara benzer, Materyal Tasarım ilkelerine uygun arayüz bileşenleri sağlayan kütüphaneyi dahil eder. Uygulama içinde resim veya metin dosyaları gibi varlıklara (assets) erişmek için ise `package:flutter/services.dart’` kütüphanesindeki `rootBundle` yapısı kullanılır. Geliştiriciler, Flutter’ın en güncel ancak en kararsız özelliklerine erişmek için ise “Master” adı verilen sürüm kanalını tercih edebilirler.

Flutter’ın Widget Mimarisi ve Arayüz Geliştirme

Flutter’da arayüz oluşturmanın temel felsefesi basittir: Her şey bir widget’tır. Kullanıcı etkileşimi olmayan ve içsel durumu değişmeyen bir arayüz bileşeni tasarlamak için “StatelessWidget” sınıfından miras alınır. Her özel widget sınıfı oluşturulduğunda, arayüzü çizen `build` fonksiyonunu `@override` anahtar kelimesiyle yeniden yazmak zorunludur. Flutter’ın arayüz düzenleme sistemi katı kurallara dayanır: Bir widget ekrandaki konumuna kendisi karar veremez ve boyutunu ancak üst bileşenin verdiği kısıtlar dahilinde belirleyebilir. Bu hiyerarşik yapı nedeniyle, tüm widget ağacı işlenmeden arayüzün nihai halinin nasıl olacağı bilinemez. Bu yapıda, `Column` gibi dikey düzenleme widget’larında bulunan `crossAxisAlignment` parametresi, içerdiği elemanların “yataydaki yerleşimini” düzenler.

Navigasyon ve Dokümantasyon

Uygulama içinde sayfalar arasında geçiş yapmak için Flutter’ın `Navigator API`’ı kullanılır. Bu API, `Route`, `Router` ve `Page` gibi temel bileşenlerden oluşur; “Screen” ise spesifik bir API bileşeni değil, genel bir tanımdır. `MaterialApp` widget’ının `routes` parametresi ise, rota isimlerini ve bu rotaları oluşturan fonksiyonları içeren bir `Map<String, WidgetBuilder>` veri türü alır. Flutter’daki widget’ların nasıl çalıştığını ve hangi parametreleri aldığını en detaylı şekilde öğrenmek için başvurulması gereken en güvenilir kaynak ise “Flutter API dokümantasyonudur”. Navigator 2.0 gibi yeni API’lar gelişmiş özellikler sunarken, `Scaffold` gibi temel düzen widget’ları çerçevenin en başından beri var olan temel taşlarıdır.

Sonuç

Flutter, modern ve esnek Dart dili üzerine kurulu, güçlü bir widget mimarisi sunarak mobil uygulama geliştirmeyi kolaylaştırır. Geliştiriciler, hiyerarşik düzenleme kurallarını ve zengin API setini anlayarak, hem Android hem de iOS platformlarında tutarlı ve yüksek performanslı kullanıcı arayüzleri oluşturabilirler.

Mobil Programlama 2024-2025 Vize Soruları (Güz)

Mobil Programlama 2024-2025 Vize Soruları

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ı (Güz) 1. SORU-min
Yukarıdaki kod bloğunun ekran çıktısı aşağıdakilerden hangisidir?
DDoğru cevap
Soru 2
Flutter’daki arayüz bileşenlerinin (widget) nasıl çalıştıkları ve hangi parametreleri aldıklarını en detaylı şekilde öğrenme biçimi aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
Flutter’daki her bir widget’ın (arayüz bileşeninin) nasıl çalıştığı, hangi parametreleri aldığı ve ne gibi özelliklere sahip olduğu gibi en detaylı ve resmi bilgiler, “Flutter API dokümantasyonunda” yer almaktadır.
Soru 3
“–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?
ADoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

flutter config --enable-windows-desktop komutu Flutter yapılandırmasında Windows masaüstü desteğini etkinleştirir. flutter create proje oluşturur, flutter doctor ise kurulum durumunu kontrol eder.

Soru 4
Mobil Programlama 2024-2025 Vize Soruları (Güz) 4. SORU-min
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
Soru 5
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
Flutter’da kullanıcı etkileşimi olmayan ve içsel durum bilgisi tutmayan arayüz bileşenleri oluşturmak için “StatelessWidget” sınıfından miras alınır.
Soru 6
Aşağıdakilerden hangisi Flutter Navigator API’ında bulunan temel bileşenlerden biri değildir?
ADoğru cevap
Açıklama
Flutter’da sayfalar arası gezinti sağlayan Navigator API’ında `Navigator`, `Route`, `Router` ve `Page` gibi temel bileşenler bulunur. “Screen” ise genellikle bir sayfa veya rota olarak adlandırılan yapının genel bir ismidir, API’daki spesifik bir bileşen değildir.
Soru 7
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?
DDoğru cevap
Açıklama
2010-2020 yılları arasındaki istatistiklere göre, 2020 civarında akıllı telefon pazarında en baskın ve en fazla kullanılan işletim sistemi “Android”dir.
Soru 8
Flutter projesinin en hızlı güncellemelerini alacağımız kanalı aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
Flutter’ın sürüm kanalları arasında en hızlı ve en güncel (ancak en kararsız) olanı “Master” kanalıdır. Bu kanal, geliştirme aşamasındaki en son değişiklikleri içerir.
Soru 9
Aşağıdaki veri türlerinden hangisi Jenerik (Generic) bir türdür?
BDoğru cevap
Açıklama
“List” veri türü, `List` şeklinde tanımlanarak, içindeki elemanların türünü (E) belirtme imkanı sunar. Bu, List’i bir “Jenerik (Generic)” veri türü yapar. Diğerleri temel veri türleridir.
Soru 10
Mobil Programlama 2024-2025 Vize Soruları (Güz) 10. SORU-min
Yukarıdaki şekilde kodlaması başlayan bir Widget sınıfı için hangi seçenek her zaman doğrudur?
ADoğru cevap
Soru 11
Column widgeti içerisindeki crossAxsisAlignment parametresi aşağıdakilerden hangisi için düzenleme sağlar?
EDoğru cevap
Açıklama
`Column` widget’ı, çocuk widget’larını dikey bir eksen üzerinde (main axis) düzenler. `crossAxisAlignment` parametresi ise, bu çocuk widget’larının yatay (cross axis) eksen üzerindeki hizalanmasını düzenler.
Soru 12
Aşağıdakilerden hangisi Flutter çerçevesinin arayüz düzenlemesi için koyduğu kısıtlardan biri değildir?
ADoğru cevap
Açıklama
Flutter, arayüzü saniyede 60 kare (ortalama 16.6ms) hızla çizmeye çalışır. “Her 4ms’de bir yenilenmek” gibi bir zorunluluk yoktur. Bu süre, uygulamanın performansına ve işlem gücüne bağlı olarak değişir.
Soru 13
MaterialApp arayüz bileşeninin routes parametresinin aldığı değer türü aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
`MaterialApp` widget’ının `routes` parametresi, rota isimlerini (String) ve bu rotalar için arayüz bileşeni oluşturan fonksiyonları (WidgetBuilder) içeren bir Map veri türü alır.
Soru 14
‘package:flutter/services.dart’ kütüphanesi üzerinden kullanabileceğimiz rootBundle yapısı kullanılma sebebi aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
`rootBundle`, Flutter’da uygulama klasörü içindeki varlıklara (assets) (resim, metin, ses dosyaları vb.) erişmek için kullanılan bir yapıdır.
Soru 15
Aşağıdaki operatörlerden hangisi bir listedeki içeriği bir başka listeye kopyalamak için kullanılır?
DDoğru cevap
Açıklama
Dart dilinde “spread operator” olarak adlandırılan `…` (üç nokta), bir koleksiyonun elemanlarını başka bir koleksiyona kopyalamak için kullanılır. `…?` ise, kopyalanacak listenin boş veya null olması durumunda hata vermemesi için güvenli bir kullanımdır.
Soru 16
Mobil Programlama 2024-2025 Vize Soruları (Güz) 16. SORU-min
Satırı ile Flutter projesine eklenecek Material Kütüphanesindeki bileşenler aşağıdaki hangi aşamada fayda sağlamaktadır?
EDoğru cevap
Açıklama
Verilen kod satırı, Android uygulamalarında kullanılana benzer, materyal tasarım ilkelerine uygun arayüz bileşenleri (widget) sağlayan “Material” kütüphanesini projeye dahil etmeyi amaçlar. Bu, uygulama geliştirme sürecini kolaylaştırır ve platformlar arası tutarlılık sağlar.
Soru 17
Kendi arayüz bileşenimizi üretmek istediğimizde, arayüz bileşeni sınıfını tanımlamasında, @override ile işaretleyip yazmak zorunda olduğumuz fonksiyon aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
Flutter’da bir arayüz bileşeni sınıfı (StatelessWidget veya StatefulWidget) oluşturduğumuzda, `build` fonksiyonunu `@override` anahtar kelimesiyle işaretleyerek yazmak zorundayız. Bu fonksiyon, bileşenin arayüzünü oluşturur.
Soru 18
Mobil Programlama 2024-2025 Vize Soruları (Güz) 18. SORU-min
Yukarıdaki kod satırı hata vermeden çalışan bir uygulamanın parçası ise yaptığı işlemle ilgili olarak aşağıdaki yorumlardan hangisi doğrudur?
EDoğru cevap
Açıklama
Verilen kod satırı, `names` adında bir `List` değişkeni oluşturur ve bu listeye `[‘Lars’, ‘Chris’, ‘Seth’]` değerlerini atar. Bu durumda `names` bir `List` örneğidir ve verilen liste onun içeriğini oluşturur. Eğer başka bir listeye eklenmesi istenseydi, `addAll` gibi bir fonksiyon veya `…` operatörü kullanılırdı.
Soru 19
Aşağıdakilerden hangisi Navigator 2.0 API ile gelen bileşenlerden biri değildir?
EDoğru cevap
Açıklama
`Scaffold`, temel materyal tasarım düzenini uygulayan bir widget’tır ve Navigator 2.0 API’ına özgü bir bileşen değildir, çok daha önce Flutter’ın temel yapısında yer almıştır. `Page`, `RouterInformationParser`, `RouterDelegate` ise Navigator 2.0 ile gelen yeni bileşenlerdir.
Soru 20
Dart programlama dili için aşağıda verilen ifadelerden hangisi yanlıştır?
DDoğru cevap
Açıklama
Dart’ta normal (positional) parametrelerin fonksiyon çağrısı sırasında değer alması zorunludur. Değer atanması zorunlu olmayan parametreler named (adlandırılmış) veya optional (isteğe bağlı) parametrelerdir. Bu nedenle ifade yanlıştır.