CodeBlanks Logo Icon CodeBlanks

OOP modeli

Sınıf hiyerarşisi ve interface'leri kurarsın.

OrderBook koleksiyonu yönetir

Tek bir Order örneği elindeyken onu bir listede toplamak gerekir. OrderBook sınıfı bu işi üstlenir: orders adında bir List<Order> tutar ve add metodu ile yeni siparişleri ekler. listAll metodu ise forEach ile her siparişi ekrana yazdırır.

List<Order> orders = new ArrayList<>(); satırı her yeni OrderBook örneğine boş bir liste verir. add metodu tek satırlık bir iş yapar: orders.add(o);. listAll ise orders.forEach(o -> System.out.println(...)) ile tüm siparişleri dolaşır.

listAll ile forEach

listAll metodu orders.forEach(o -> System.out.println(o.id + " " + o.customer + " " + o.amount)); ile tüm siparişleri ekrana yazdırır. forEach bir Consumer bekler; lambda ile her sipariş için yazdırma action'ı tanımlanır.

Bu yöntem, klasik for-each döngüsüne göre daha kısadır. Siparişleri tek tek gezerek her birinin id, customer ve amount alanlarını aynı satırda yazdırır. Çıktı biçimi deterministiktir: ekleme sırasıyla satırlar oluşur.

Uygulama OrderBook sınıfını ve listAll metodunu yaz

Üstteki Order sınıfı hazır. Şimdi class OrderBook tanımla; List<Order> orders alanı boş ArrayList ile başlat, void add(Order o) metodu orders.add(o); içersin, void listAll() metodu orders.forEach(o -> System.out.println(o.id + " " + o.customer + " " + o.amount)); içersin. main içinde OrderBook book = new OrderBook(); oluştur, iki sipariş ekle ve book.listAll(); çağr.

Başlangıç kodu

Main.java
import java.util.List;
import java.util.ArrayList;

class Order {
    String id;
    String customer;
    int amount;
    Order(String id, String customer, int amount) {
        this.id = id;
        this.customer = customer;
        this.amount = amount;
    }
}

// OrderBook sınıfını tanımla: orders listesi, add ve listAll metotları

// main: bir OrderBook oluştur, iki sipariş ekle, listAll çağır

Örnek çözüm

Main.java
class Order {
    String id;
    String customer;
    int amount;
    Order(String id, String customer, int amount) {
        this.id = id;
        this.customer = customer;
        this.amount = amount;
    }
}

class OrderBook {
    List<Order> orders = new ArrayList<>();
    void add(Order o) { orders.add(o); }
    void listAll() {
        orders.forEach(o -> System.out.println(o.id + " " + o.customer + " " + o.amount));
    }
}

public class Main {
    public static void main(String[] args) {
        OrderBook book = new OrderBook();
        book.add(new Order("1", "Ayşe", 50));
        book.add(new Order("2", "Alex", 150));
        book.listAll();
    }
}

Beklenen çıktı

1 Ayşe 50
2 Alex 150

Soru ve cevaplar

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

1 add metodunu tamamla

Soru
void add(Order o) { orders.____(o); }
Cevap
void add(Order o) { orders.add(o); }

Açıklama: add metodu orders listesine yeni siparişi ekler.

2 OrderBook ve Order arasında nasıl bir ilişki vardır?

  • Miras (inheritance)
  • Bağımlılık (dependency)
  • Composition (birlik) Doğru cevap
  • Soyutlama (abstraction)

Açıklama: OrderBook, Order listesini içerir; composition ilişkisidir.

3 OrderBook metotlarını eşleştir

Kavram Anlamı
add(o) Listeye sipariş ekler
listAll() Tüm siparişleri yazdırır
orders List<Order> alanı
forEach ListAll'un kullandığı metot

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