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ı
Yukarıdaki child parametresi aşağıdaki amaçlardan hangisi için kullanılmaktadır?
Yukarıdaki komut çalıştırıldığında aşağıdakilerden hangisini gerçekleştirir?
yukarıdaki şekilde tanımlanmış gorunum fonksiyonu
gorunum (kalin: true);
şeklinde çağrılırsa aşağıdakilerden hangisi doğrudur?
Yukarıdaki kod parçacığının işlevi aşağıdakilerden hangisidir?
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.