Proje tasarımı
- Java kursu
- İleri seviye
- Ders 78/82
- 6 dk
İ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:
Streamile filtreleme ve gruplamaExecutorServiceile eşzamanlı toplamreflectionve@interfaceile ö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:
- Model:
Eventsınıfı veArrayList. - Stream: filtreleme ve
groupingBy. - Concurrent:
ExecutorServiceile toplam seviye hesaplama. - Reflection:
@Loggedannotation 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
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
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
class Event {
String type;
int severity;
Event(String type, int severity) {
this.type = type;
this.severity = severity;
}
}
Event e = new Event("info", 1____;
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 |