CodeBlanks Logo Icon CodeBlanks

Birleştirme

Quiz sınıfını menü döngüsüyle birleştirirsin.

Birleştirme

Artık tüm parçaları birleştirme zamanı. Question sınıfı, Quiz sınıfı, addQuestion, play ve grade metotları hazır. Geriye yalnızca main içinde quiz'i oluşturmak, soru eklemek, oynatmak ve değerlendirmek kalıyor.

Çalışan oturum şöyle olur: quiz oluştur, iki soru ekle, play() ile soruları göster, grade() ile cevapları değerlendir. Çıktı hem soruları hem skoru içerir.

Bu, nesne yönelimli bir uygulamanın nasıl parça parça kurulduğunu gösterir. Her ders bir tuğla ekledi; şimdi bina tamam.

Çalışan oturum

Tüm sınıflar tanımlı. main içinde quiz oluştur, iki soru ekle, play() ve grade() çağır. Çıktı önce numaralı soruları, sonra skoru gösterir.

İki soru ve ['Ankara', 'Yanlış'] cevap listesiyle çıktı şöyle olur: 1. Başkent nerede?, 2. Kaç gün bir hafta?, Skor: 1. Bir cevap doğru, biri yanlış.

Proje tamam! OOP, listeler, döngüler ve koşulları bir arada kullandın. Bu yapıyı genişleterek daha büyük quiz uygulamaları kurabilirsin.

Uygulama Çalışan quiz

Tüm sınıflar tanımlı (Question, Quiz, addQuestion, play, grade). main içinde bir Quiz oluştur, iki soru ekle ('Başkent nerede?', 'Ankara' ve 'Kaç gün bir hafta?', '7'), quiz.play() ve quiz.grade(['Ankara', 'Yanlış']) çağır.

Başlangıç kodu

main.dart
class Question {
  String text;
  String answer;
  Question(this.text, this.answer);
}

class Quiz {
  List<Question> questions = [];
  int score = 0;
  void addQuestion(Question q) {
    questions.add(q);
  }
  void play() {
    for (var i = 0; i < questions.length; i++) {
      print('${i + 1}. ${questions[i].text}');
    }
  }
  void grade(List<String> answers) {
    score = 0;
    for (var i = 0; i < questions.length; i++) {
      if (answers[i] == questions[i].answer) {
        score++;
      }
    }
    print('Skor: $score');
  }
}

// main içinde quiz oluştur, iki soru ekle, play ve grade çağır

void main() {
  // quiz oluştur, iki soru ekle, play ve grade çağır
}

Örnek çözüm

main.dart
class Question {
  String text;
  String answer;
  Question(this.text, this.answer);
}

class Quiz {
  List<Question> questions = [];
  int score = 0;
  void addQuestion(Question q) {
    questions.add(q);
  }
  void play() {
    for (var i = 0; i < questions.length; i++) {
      print('${i + 1}. ${questions[i].text}');
    }
  }
  void grade(List<String> answers) {
    score = 0;
    for (var i = 0; i < questions.length; i++) {
      if (answers[i] == questions[i].answer) {
        score++;
      }
    }
    print('Skor: $score');
  }
}

void main() {
  var quiz = Quiz();
  quiz.addQuestion(Question('Başkent nerede?', 'Ankara'));
  quiz.addQuestion(Question('Kaç gün bir hafta?', '7'));
  quiz.play();
  quiz.grade(['Ankara', 'Yanlış']);
}

Beklenen çıktı

1. Başkent nerede?
2. Kaç gün bir hafta?
Skor: 1

Soru ve cevaplar

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

1 Hangi sıra mantıklı?

  • grade, play, addQuestion
  • addQuestion, grade, play
  • play, addQuestion, grade
  • addQuestion, play, grade Doğru cevap

Açıklama: önce sorular eklenir, sonra oynatılır, en son değerlendirilir.

2 Metotları amacına eşleştir

Kavram Anlamı
addQuestion Soru ekleme
play Soruları gösterme
grade Cevap değerlendirme
questions.length Soru sayısı

3 İkinci soruyu ekle

Soru
void main() {
  var quiz = Quiz();
  quiz.addQuestion(Question('Başkent nerede?', 'Ankara'));
  ____.addQuestion(Question('Kaç gün bir hafta?', '7'));
  quiz.play();
  quiz.grade(['Ankara', 'Yanlış']);
}
Cevap
void main() {
  var quiz = Quiz();
  quiz.addQuestion(Question('Başkent nerede?', 'Ankara'));
  quiz.addQuestion(Question('Kaç gün bir hafta?', '7'));
  quiz.play();
  quiz.grade(['Ankara', 'Yanlış']);
}

Açıklama: quiz.addQuestion ile ikinci soru eklenir.

Orta seviye bölümündeki tüm dersler