Dart Programlama Dil Uygulama Sınavı Çalışma Soruları

Bu sınav çalışması, 11. Sınıf Mobil Uygulamalar dersi müfredatına uygun olarak, Pardus 25 işletim sistemi kurulum süreci üzerinden kurgulanmıştır. Sınav; Dart dilindeki tüm Nesne Yönelimli Programlama (OOP) prensiplerini ve temel programlama mantığını kapsamaktadır.

Sınav Konu Kapsamı

  • Değişkenler ve Operatörler

  • Null Safety (? ve ?? kullanımı)

  • Sınıf (Class) ve Nesne (Object) Yapısı

  • Kapsülleme (Encapsulation - Private, Getter, Setter)

  • Kalıtım (Inheritance - Extends, Super)

  • Çok Biçimlilik (Polymorphism - Override)

  • Soyutlama (Abstraction - Abstract Class)

  • Static ve Const Kullanımı

  • Kurucu Metotlar (Constructors)


[A GRUBU] Uygulama Sınav Soruları

Senaryo: "Okul Atölyelerindeki Bilgisayarlara Pardus 25 Kurulumu ve Donanım Takibi"

GÖREV 1: Statik Yapılar ve Sabitler (15 Puan)

  1. KurulumYonetimi adında bir sınıf oluşturun.

  2. İçerisinde isletimSistemi adında, değeri "Pardus 25 - XFCE" olan bir static const değişken tanımlayın.

  3. İçerisinde kurulanCihazSayisi adında bir static int değişken tanımlayın (Başlangıç değeri 0 olsun).

GÖREV 2: Soyutlama, Kapsülleme ve Final (25 Puan)

  1. Donanim adında bir soyut sınıf (abstract class) oluşturun.

  2. seriNo (String) adında, değeri sadece kurucuda atanabilen bir final özellik ekleyin.

  3. _diskKapasitesi (int) adında private bir özellik tanımlayın.

  4. Bu özellik için bir Getter ve değerin 64'ten küçük olamayacağını (Pardus 25 minimum gereksinimi) kontrol eden bir Setter yazın.

  5. Sınıf için seriNo ve _diskKapasitesi değerlerini alan bir Constructor yazın.

GÖREV 3: Kalıtım ve Çok Biçimlilik (20 Puan)

  1. AtolyePC adında bir sınıf oluşturun ve Donanim sınıfından türetin.

  2. Kurucu metodunda super kullanarak üst sınıfın değerlerini gönderin. Her yeni nesne oluşturulduğunda KurulumYonetimi.kurulanCihazSayisi değerini 1 artırın.

  3. Üst sınıftaki void sistemiKur() soyut metodunu override ederek cihaz bilgilerini ekrana yazdırın.

GÖREV 4: Fonksiyonlar ve Null Safety (20 Puan)

  1. maliyetHesapla adında bir fonksiyon yazın. Parametre olarak adet (int) alsın. 10'dan fazla bilgisayar için adet başı 150 TL, azı için 250 TL döndürsün.

  2. main içinde teknisyenNotu (String?) adında bir değişken tanımlayın. ?? operatörü ile null ise "Açıklama Yok" yazdırın.

GÖREV 5: Nesne Oluşturma ve Kontrol (20 Puan)

  1. main içinde bir AtolyePC nesnesi üretin, setter ile disk değerini girin ve sistemiKur() metodunu çağırın.

  2. If-Else ile; disk alanı 120'den büyükse "SSD Önerilir", değilse "HDD Yeterli" yazdırın.


[B GRUBU] Uygulama Sınav Soruları

Senaryo: "Pardus 25 Laboratuvar Kullanıcı ve Kota Yönetimi"

GÖREV 1: Statik Yapılar ve Sabitler (15 Puan)

  1. LabAyarlari adında bir sınıf oluşturun.

  2. İçerisinde sunucuAdresi adında, değeri "192.168.1.25" olan bir static const değişken tanımlayın.

  3. İçerisinde aktifOturum adında bir static int değişken tanımlayın (Başlangıç değeri 0 olsun).

GÖREV 2: Soyutlama, Kapsülleme ve Final (25 Puan)

  1. Kullanici adında bir soyut sınıf (abstract class) oluşturun.

  2. kullaniciId (String) adında, değeri sadece kurucuda atanabilen bir final özellik ekleyin.

  3. _bulutKota (int) adında private bir özellik tanımlayın.

  4. Bu özellik için bir Getter ve değerin 1 ile 100 GB arasında olduğunu kontrol eden bir Setter yazın.

  5. Sınıf için gerekli Constructor yapısını kurun.

GÖREV 3: Kalıtım ve Çok Biçimlilik (20 Puan)

  1. Ogrenci adında bir sınıf oluşturun ve Kullanici sınıfından türetin.

  2. Kurucu metodunda super kullanarak üst sınıfı başlatın. Her yeni öğrenci nesnesinde LabAyarlari.aktifOturum değerini 1 artırın.

  3. Üst sınıftaki void girisYap() soyut metodunu override ederek ID ve kota bilgilerini ekrana basın.

GÖREV 4: Fonksiyonlar ve Null Safety (20 Puan)

  1. ekAlanUcreti adında bir fonksiyon yazın. Parametre olarak ekle (int) alsın. GB başı 5 TL hesaplayıp döndürsün.

  2. main içinde hataMesaji (String?) değişkenini ?? operatörü ile "Hata Yok" şeklinde yazdırın.

GÖREV 5: Nesne Oluşturma ve Kontrol (20 Puan)

  1. main içinde bir Ogrenci nesnesi üretin, setter ile kota değerini girin ve girisYap() metodunu çağırın.

  2. If-Else ile; kota 50'den büyükse "Premium Kullanıcı", değilse "Standart Kullanıcı" yazdırın.


[A GRUBU] Örnek Çözüm Kodu

Dart:

class KurulumYonetimi {
  static const String isletimSistemi = "Pardus 25 - XFCE";
  static int kurulanCihazSayisi = 0;
}

abstract class Donanim {
  final String seriNo;
  int _diskKapasitesi;

  Donanim(this.seriNo, this._diskKapasitesi);

  int get diskKapasitesi => _diskKapasitesi;
  set diskKapasitesi(int deger) {
    if (deger >= 64) {
      _diskKapasitesi = deger;
    } else {
      print("Hata: Pardus 25 için disk 64GB'dan az olamaz.");
    }
  }

  void sistemiKur();
}

class AtolyePC extends Donanim {
  AtolyePC(String sno, int disk) : super(sno, disk) {
    KurulumYonetimi.kurulanCihazSayisi++;
  }

  @override
  void sistemiKur() {
    print("Sistem: ${KurulumYonetimi.isletimSistemi}");
    print("Cihaz: $seriNo | Disk: $diskKapasitesi GB");
  }
}

double maliyetHesapla(int adet) {
  return (adet > 10) ? adet * 150.0 : adet * 250.0;
}

void main() {
  String? teknisyenNotu;
  print("Teknisyen Notu: ${teknisyenNotu ?? "Açıklama Yok"}");

  var pc = AtolyePC("PRD-2026-001", 120);
  pc.diskKapasitesi = 256; 
  pc.sistemiKur();

  if (pc.diskKapasitesi > 120) {
    print("Tavsiye: SSD Önerilir.");
  } else {
    print("Tavsiye: HDD Yeterli.");
  }

  print("Toplam Maliyet: ${maliyetHesapla(15)} TL");
  print("Kurulan Toplam Cihaz: ${KurulumYonetimi.kurulanCihazSayisi}");
}

Değerlendirme Kriterleri (Puanlama Anahtarı)

KriterPuan
Static & Const: Değişken ve sabitlerin doğru kullanımı15
Encapsulation: Private değişken, Getter/Setter mantığı25
Abstraction & Inheritance: Soyut sınıf ve miras alma25
Polymorphism: Override işleminin doğru yapılması15
Null Safety & Logic: ?? operatörü ve If-Else kontrolü20
TOPLAM100

Bu sınav, öğrencilerin teorik bilgilerini gerçek hayat senaryoları (Pardus 25 kurulumu gibi) ile birleştirmelerini hedefler. Sınavı uygularken öğrencilerin internet erişimi olmayan bir ortamda kod yazmaları tavsiye edilir.


Blogger içeriğin için [B GRUBU] senaryosuna (Laboratuvar Kullanıcı ve Kota Yönetimi) uygun hazırladığım örnek çözüm kodu aşağıdadır. Bu kod, soyutlamadan kapsüllemeye kadar tüm OOP prensiplerini Pardus 25 senaryosuyla birleştirir.


[B GRUBU] Örnek Çözüm Kodu

Dart:
// GÖREV 1: Static ve Const (Sınıf ve Statik Üyeler)
class LabAyarlari {
  static const String sunucuAdresi = "192.168.1.25";
  static int aktifOturum = 0; // Oturum sayısını takip eder
}

// GÖREV 2: Abstraction, Encapsulation, Final, Constructor
abstract class Kullanici {
  final String kullaniciId; // Değeri sadece kurucuda atanır
  int _bulutKota = 0; // Kapsülleme (Private)

  Kullanici(this.kullaniciId, this._bulutKota);

  // Getter ve Setter
  int get bulutKota => _bulutKota;
  
  set bulutKota(int deger) {
    if (deger >= 1 && deger <= 100) {
      _bulutKota = deger;
    } else {
      print("Uyarı: Kota miktarı 1 ile 100 GB arasında olmalıdır.");
    }
  }

  void girisYap(); // Soyut Metot (Alt sınıflarda doldurulacak)
}

// GÖREV 3: Inheritance ve Polymorphism
class Ogrenci extends Kullanici {
  Ogrenci(String id, int kota) : super(id, kota) {
    // Her yeni nesne oluşturulduğunda statik değişkeni artırıyoruz
    LabAyarlari.aktifOturum++;
  }

  @override
  void girisYap() {
    print("--- Pardus 25 Laboratuvar Girişi ---");
    print("Sunucu: ${LabAyarlari.sunucuAdresi}");
    print("Kullanıcı ID: $kullaniciId | Kota: $bulutKota GB");
  }
}

// GÖREV 4: Null Safety ve Fonksiyonlar
double ekAlanUcreti(int ekle) {
  // GB başı 5 TL hesaplama
  return ekle * 5.0;
}

void main() {
  // GÖREV 5: Null Safety Kullanımı
  String? hataMesaji;
  print("Sistem Durumu: ${hataMesaji ?? "Hata Yok"}");

  // Nesne Üretimi (Object Creation)
  var ogrenci1 = Ogrenci("OG-2026-45", 20);
  
  // Setter Kullanımı
  ogrenci1.bulutKota = 75; 
  
  // Polymorphism (Override edilen metodun çağrılması)
  ogrenci1.girisYap();

  // If-Else Kontrolü
  if (ogrenci1.bulutKota > 50) {
    print("Üyelik Tipi: Premium Kullanıcı (Yüksek Kota)");
  } else {
    print("Üyelik Tipi: Standart Kullanıcı");
  }

  // Fonksiyon ve Statik Değişken Çıktıları
  print("Ek 10 GB Alan Ücreti: ${ekAlanUcreti(10)} TL");
  print("Sistemdeki Aktif Oturum Sayısı: ${LabAyarlari.aktifOturum}");
}


Yorumlar

Bu blogdaki popüler yayınlar

Dart Uygulama Sınavı: Pardus ETAP 23 Kurulum Otomasyonu

Pardus ETAP 23 İçin Flutter ile Dijital "Öğrenci Seçici" Uygulaması