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)
KurulumYonetimi adında bir sınıf oluşturun.
İçerisinde
isletimSistemiadında, değeri"Pardus 25 - XFCE"olan bir static const değişken tanımlayın.İçerisinde
kurulanCihazSayisiadı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)
Donanim adında bir soyut sınıf (abstract class) oluşturun.
seriNo(String) adında, değeri sadece kurucuda atanabilen bir final özellik ekleyin._diskKapasitesi(int) adında private bir özellik tanımlayın.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.
Sınıf için
seriNove_diskKapasitesideğerlerini alan bir Constructor yazın.
GÖREV 3: Kalıtım ve Çok Biçimlilik (20 Puan)
AtolyePC adında bir sınıf oluşturun ve
Donanimsınıfından türetin.Kurucu metodunda
superkullanarak üst sınıfın değerlerini gönderin. Her yeni nesne oluşturulduğundaKurulumYonetimi.kurulanCihazSayisideğerini 1 artırın.Ü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)
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.mainiçindeteknisyenNotu(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)
mainiçinde birAtolyePCnesnesi üretin, setter ile disk değerini girin vesistemiKur()metodunu çağırın.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)
LabAyarlari adında bir sınıf oluşturun.
İçerisinde
sunucuAdresiadında, değeri"192.168.1.25"olan bir static const değişken tanımlayın.İçerisinde
aktifOturumadı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)
Kullanici adında bir soyut sınıf (abstract class) oluşturun.
kullaniciId(String) adında, değeri sadece kurucuda atanabilen bir final özellik ekleyin._bulutKota(int) adında private bir özellik tanımlayın.Bu özellik için bir Getter ve değerin 1 ile 100 GB arasında olduğunu kontrol eden bir Setter yazın.
Sınıf için gerekli Constructor yapısını kurun.
GÖREV 3: Kalıtım ve Çok Biçimlilik (20 Puan)
Ogrenci adında bir sınıf oluşturun ve
Kullanicisınıfından türetin.Kurucu metodunda
superkullanarak üst sınıfı başlatın. Her yeni öğrenci nesnesindeLabAyarlari.aktifOturumdeğerini 1 artırın.Ü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)
ekAlanUcreti adında bir fonksiyon yazın. Parametre olarak
ekle(int) alsın. GB başı 5 TL hesaplayıp döndürsün.mainiçindehataMesaji(String?) değişkenini ?? operatörü ile "Hata Yok" şeklinde yazdırın.
GÖREV 5: Nesne Oluşturma ve Kontrol (20 Puan)
mainiçinde birOgrencinesnesi üretin, setter ile kota değerini girin vegirisYap()metodunu çağırın.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
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ı)
| Kriter | Puan |
| 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 alma | 25 |
| Polymorphism: Override işleminin doğru yapılması | 15 |
Null Safety & Logic: ?? operatörü ve If-Else kontrolü | 20 |
| TOPLAM | 100 |
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
// 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
Yorum Gönder