CodeBlanks Logo Icon CodeBlanks

Birleştirme

Tüm parçaları birleştirerek çalışan bir final uygulaması yazarsın.

Birleştirme

Son derste tüm parçaları birleştiriyoruz: Library sınıfı, Book sınıfı, kitap listesi ve try/catch ile hata yönetimi. Çalışan bir kütüphane konsol uygulaması elde edeceğiz; tüm kitapları yazdıracak ve hata durumunda nazik mesaj verecek.

Bu, başlangıç seviyesinin tüm temel kavramlarını gerçek bir görevde birleştirir: sınıf tanımı, kurucu, alan erişimi, List ve for döngüsü, try/catch ile dayanıklılık. Bu deseni ilerideki projelerde tekrar tekrar göreceksin; bu yüzden şimdi sağlam öğrenmek önemli.

Çalışan uygulama

Aşağıdaki kodda sınıflar, liste ve try/catch zaten tanımlı. Eksik olan tek parça, tüm kitapları yazdıran for döngüsü. Bu döngüyü try bloğundan önce ekleyeceksin; böylece önce tüm kitaplar listelenir, sonra liste dışı erişim denenir.

for (final book in books) { print("Kitap: ${book.title}"); } yazdığında her kitabın başlığı ekrana gelir. try/catch zaten yerinde; böylece uygulama hem listeleme hem de hata yakalama yapar. Bu, başlangıç seviyesinin küçük ama tamam bir örneğidir.

Uygulama Çalışan kütüphane

Aşağıdaki kodda sınıflar, liste ve try/catch zaten tanımlı. main içinde try bloğundan önce bir for döngüsü ekle: for (final book in books) { print("Kitap: ${book.title}"); }. Böylece önce tüm kitaplar yazdırılır, sonra liste dışı erişim denenir.

Başlangıç kodu

main.dart
class Library {
  String name;
  Library(this.name);
  void info() {
    print("Kütüphane: $name");
  }
}

class Book {
  String title;
  Book(this.title);
}

void main() {
  final lib = Library("Şehir");
  lib.info();
  final b = Book("Suç ve Ceza");
  print("Yeni kitap: ${b.title}");
  final books = <Book>[Book("Suç ve Ceza"), Book("Sefiller")];
  print("Sayı: ${books.length}");
  print("İlk: ${books[0].title}");
  // for ile tüm kitapları yazdır (try bloğundan önce)
  try {
    print(books[5].title);
  } catch (e) {
    print("kitap bulunamadı");
  }
}

Örnek çözüm

main.dart
class Library {
  String name;
  Library(this.name);
  void info() {
    print("Kütüphane: $name");
  }
}

class Book {
  String title;
  Book(this.title);
}

void main() {
  final lib = Library("Şehir");
  lib.info();
  final b = Book("Suç ve Ceza");
  print("Yeni kitap: ${b.title}");
  final books = <Book>[Book("Suç ve Ceza"), Book("Sefiller")];
  print("Sayı: ${books.length}");
  print("İlk: ${books[0].title}");
  for (final book in books) {
    print("Kitap: ${book.title}");
  }
  try {
    print(books[5].title);
  } catch (e) {
    print("kitap bulunamadı");
  }
}

Beklenen çıktı

Kütüphane: Şehir
Yeni kitap: Suç ve Ceza
Sayı: 2
İlk: Suç ve Ceza
Kitap: Suç ve Ceza
Kitap: Sefiller
kitap bulunamadı

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 for döngüsü bağlacı

Soru
for (final book ____ books) {
  print("Kitap: ${book.title}");
}
Cevap
for (final book in books) {
  print("Kitap: ${book.title}");
}

Açıklama: for-in liste gezme deyimidir.

2 Bu projede for döngüsü ne yapar?

main.dart
for (final book in books) {
  print("Kitap: ${book.title}");
}
  • Tüm kitapların başlığını yazdırır Doğru cevap
  • Listeye kitap ekler
  • Hatayı yakalar
  • Kütüphane adını değiştirir

Açıklama: for döngüsü tüm kitapların başlığını yazdırır.

3 Final parçalarını eşleştir

Kavram Anlamı
class nesne tanımlar
List<Book> kitapları toplar
for listeyi gezer
try/catch dayanıklılık katar

Başlangıç bölümündeki tüm dersler