CodeBlanks Logo Icon CodeBlanks

Proje tasarımı

İleri proje iskeletini tasarlarsın.

Proje: Hesap defteri

Bu 5 derslik projede bir hesap defteri (ledger) 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
  • @Test ile birim testi

Model sınıfı Transaction: bir kategori ve bir tutar tutar. Her ders önceki dersin çözümünü başlangıç kodu olarak içerir; böylece uygulama adım adım büyür.

Proje akışı

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

  1. Model: Transaction sınıfı ve ArrayList.
  2. Stream: filtreleme ve groupingBy.
  3. Concurrent: ExecutorService ile toplam hesaplama.
  4. Test: LedgerServiceTest ile @Test.

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

Uygulama Modeli ve listeyi tanımla

Transaction sınıfını tanımla; String category ve int amount alanları ve bir kurucu içersin. Main sınıfında ArrayList<Transaction> ledger tanımla; iki kayıt ekle (market 120, fuel 80). for-each ile her kaydı kategori + " " + tutar biçiminde yazdır.

Başlangıç kodu

Main.java
import java.util.ArrayList;

// Transaction sınıfını tanımla (String category, int amount ve kurucu)

public class Main {
    public static void main(String[] args) {
        // ArrayList<Transaction> ledger tanımla
        // iki kayıt ekle (market 120, fuel 80)
        // for-each ile yazdır
    }
}

Örnek çözüm

Main.java
import java.util.ArrayList;

class Transaction {
    String category;
    int amount;
    Transaction(String category, int amount) {
        this.category = category;
        this.amount = amount;
    }
}

public class Main {
    public static void main(String[] args) {
        ArrayList<Transaction> ledger = new ArrayList<>();
        ledger.add(new Transaction("market", 120));
        ledger.add(new Transaction("fuel", 80));
        for (Transaction t : ledger) {
            System.out.println(t.category + " " + t.amount);
        }
    }
}

Beklenen çıktı

market 120
fuel 80

Soru ve cevaplar

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

1 Hesap defteri projesinin ilk adı ne olmalı?

  • Model ve temel listeyi tanımlamak Doğru cevap
  • Concurrent katmanı eklemek
  • Test katmanını yazmak
  • Stream ile gruplamak

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

2 Model sınıfının kurucusunu tamamla

Soru
class Transaction {
    String category;
    int amount;
    Transaction(String category, int amount) {
        this.category = category;
        this.amount = amount;
    }
}

Transaction t = new Transaction("market", 120____;
Cevap
class Transaction {
    String category;
    int amount;
    Transaction(String category, int amount) {
        this.category = category;
        this.amount = amount;
    }
}

Transaction t = new Transaction("market", 120);

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

3 Proje katmanlarını eşleştir

Kavram Anlamı
Model Transaction sınıfı
Stream Filtreleme ve gruplama
Concurrent ExecutorService ile toplam
Test @Test ile birim testi

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