CodeBlanks Logo Icon CodeBlanks

Proje tasarımı

İleri seviye finali iskeletini tasarlarsın.

Proje: Olay günlüğü

Bu 5 derslik projede bir olay günlüğü (event log) uygulaması yapacaksın. Her ders bir parça ekler; son derste tüm parçaları birleştirirsin.

Projede ileri düzey konuları bir arada kullanacaksın:

  • Stream ile filtreleme ve gruplama
  • ExecutorService ile eşzamanlı toplam
  • reflection ve @interface ile özel işaretleme

Model sınıfı Event: bir tip ve bir önem seviyesi tutar. Her ders önceki dersin çözümünü başlangıç kodu olarak içerir.

Proje akışı

Proje dört katmandan oluşur. Her katman bir öncekinin çözümünü kullanır:

  1. Model: Event sınıfı ve ArrayList.
  2. Stream: filtreleme ve groupingBy.
  3. Concurrent: ExecutorService ile toplam seviye hesaplama.
  4. Reflection: @Logged annotation ile işaretli metodu çağırma.

Son derste tüm katmanlar main içinde birlikte çalışır. Çıktılar deterministik olduğundan beklenen çıktı her seferinde aynıdır.

Uygulama Event modelini ve listeyi tanımla

Event sınıfını tanımla; String type ve int severity alanları ve bir kurucu içersin. Main sınıfında ArrayList<Event> log tanımla; iki olay ekle (info 1, error 5). for-each ile her olayı type + " " + severity biçiminde yazdır.

Başlangıç kodu

Main.java
import java.util.ArrayList;

// Event sınıfını tanımla (String type, int severity ve kurucu)

public class Main {
    public static void main(String[] args) {
        // ArrayList<Event> log tanımla
        // iki olay ekle (info 1, error 5)
        // for-each ile yazdır
    }
}

Örnek çözüm

Main.java
import java.util.ArrayList;

class Event {
    String type;
    int severity;
    Event(String type, int severity) {
        this.type = type;
        this.severity = severity;
    }
}

public class Main {
    public static void main(String[] args) {
        ArrayList<Event> log = new ArrayList<>();
        log.add(new Event("info", 1));
        log.add(new Event("error", 5));
        for (Event e : log) {
            System.out.println(e.type + " " + e.severity);
        }
    }
}

Beklenen çıktı

info 1
error 5

Soru ve cevaplar

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

1 Olay günlüğü projesinin ilk adı ne olmalı?

  • Reflection katmanını yazmak
  • Event modelini ve listeyi tanımlamak Doğru cevap
  • Concurrent katmanı eklemek
  • Stream ile gruplamak

Açıklama: Önce Event modeli ve liste tanımlanır; diğer katmanlar bunun üzerine kurulur.

2 Event kurucusunu tamamla

Soru
class Event {
    String type;
    int severity;
    Event(String type, int severity) {
        this.type = type;
        this.severity = severity;
    }
}

Event e = new Event("info", 1____;
Cevap
class Event {
    String type;
    int severity;
    Event(String type, int severity) {
        this.type = type;
        this.severity = severity;
    }
}

Event e = new Event("info", 1);

Açıklama: Kurucu çağrısı parantez ve noktalı virgülle biter.

3 Proje katmanlarını eşleştir

Kavram Anlamı
Model Event sınıfı
Stream Filtreleme ve gruplama
Concurrent ExecutorService ile toplam
Reflection @Logged ile işaretleme

İleri seviye bölümündeki tüm dersler