Genel

OOP – Örnek

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

// Soyut sınıf: Soru
abstract class Soru {
    protected String metin;
    protected String cevap;
    protected ArrayList<String> siklar;

    // Soyut metot: soruYazdir
    public abstract void soruYazdir();

    // Cevap kontrolünü gerçekleştiren metot
    public boolean cevapKontrol(String kullaniciCevabi) {
        return kullaniciCevabi.equalsIgnoreCase(cevap);
    }
}

// Çoktan seçmeli soru sınıfı
class CoktanSecmeliSoru extends Soru {
    public CoktanSecmeliSoru(String metin, String cevap, ArrayList<String> siklar) {
        this.metin = metin;
        this.cevap = cevap;
        this.siklar = siklar;
    }

    // Soyut metodu uygulama: soruYazdir
    @Override
    public void soruYazdir() {
        System.out.println("Soru: " + metin);
        for (String sik : siklar) {
            System.out.println(sik);
        }
    }
}

// Soru bankası sınıfı
class SoruBankasi {
    private ArrayList<Soru> sorular;
    private int soruSayisi;

    public SoruBankasi() {
        sorular = new ArrayList<>();
        soruSayisi = 0;
    }

    // Soru ekleme metodu
    public void soruEkle(Soru soru) {
        sorular.add(soru);
    }

    // Rastgele bir soru döndüren metot
    public Soru rastgeleSoruAl() {
        Random random = new Random();
        int index = random.nextInt(sorular.size());
        return sorular.get(index);
    }

    // Soru sayısını döndüren metot
    public int getSoruSayisi() {
        return soruSayisi;
    }

    // Soru sayısını ayarlayan metot
    public void setSoruSayisi(int soruSayisi) {
        this.soruSayisi = soruSayisi;
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // Soru bankası oluşturma
        SoruBankasi soruBankasi = new SoruBankasi();

        // Çoktan seçmeli soruları ve şıkları ekleme
        ArrayList<String> siklar1 = new ArrayList<>();
        siklar1.add("a) Venüs");
        siklar1.add("b) Mars");
        siklar1.add("c) Jüpiter");
        siklar1.add("d) Satürn");
        soruBankasi.soruEkle(new CoktanSecmeliSoru("Hangi gezegen Güneş Sistemi'nde 4. sırada yer alır?", "b", siklar1));

        ArrayList<String> siklar2 = new ArrayList<>();
        siklar2.add("a) 3");
        siklar2.add("b) 4");
        siklar2.add("c) 5");
        siklar2.add("d) 6");
        soruBankasi.soruEkle(new CoktanSecmeliSoru("2+2 kaç eder?", "b", siklar2));

        ArrayList<String> siklar3 = new ArrayList<>();
        siklar3.add("a) Evet");
        siklar3.add("b) Hayır");
        siklar3.add("c) Belki");
        siklar3.add("d) Bilmiyorum");
        soruBankasi.soruEkle(new CoktanSecmeliSoru("Java bir programlama dili midir?", "a", siklar3));

        // Soruları sorma
        int soruSayisi = 0;
        int toplamPuan = 0;
        while (true) {
            Soru soru = soruBankasi.rastgeleSoruAl(); // Polimorfizm: Farklı türlerdeki soruları aynı şekilde ele alıyoruz
            soru.soruYazdir(); // Polimorfizm: Farklı alt sınıflardaki metotları aynı şekilde çağırıyoruz

            System.out.print("Cevabınızı girin (a, b, c veya d): ");
            String kullaniciCevabi = scanner.next().toLowerCase();

            if (soru.cevapKontrol(kullaniciCevabi)) { // Polimorfizm: Farklı alt sınıflardaki metotları aynı şekilde kullanıyoruz
                System.out.println("Doğru!");
                toplamPuan += 10;
            } else {
                System.out.println("Yanlış! Doğru cevap: " + soru.cevap);
            }

            soruSayisi++;
            if (soruSayisi >= 3) {
                System.out.print("Devam etmek istiyor musunuz? (evet/hayır): ");
                String devam = scanner.next().toLowerCase();
                if (!devam.equals("evet")) {
                    break;
                }
                soruSayisi = 0;
            }
        }

        System.out.println("Toplam puanınız: " + toplamPuan);
        scanner.close();
    }
}

Bir cevap yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir