OOP modeli
- Java kursu
- Orta seviye
- Ders 113/116
- 6 dk
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
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
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
void add(Order o) { orders.____(o); }
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 |