Java
Birleştirme
Tüm katmanları birleştirerek çalışan bir uygulama yazarsın.
Sipariş takip uygulamasını birleştir
Son derste tüm parçaları birleştirip çalışan bir sipariş takip uygulaması tamamlıyoruz. Order, OrderBook (add, listAll, largeOrders, save, load) sınıfları hazır. main metodunda üç sipariş ekler, dosyaya kaydeder, dosyadan okur ve büyük siparişleri filtreler.
Bu akış, gerçek bir uygulamanın veri akışını küçük ölçekte yansıtır: önce veri modeli, sonra koleksiyon yönetimi, sonra Stream ile analiz, sonra kalıcılık ve en sonunda birleştirme. Her katman önceki derslerde ayrı ayrı işlendi.
Birleştirme akışı
Birleştirme akışı beş aşamalıdır: (1) OrderBook book = new OrderBook(); ile boş defter; (2) üç add çağrısı ile siparişler; (3) book.save("orders.txt"); ile dosyaya yazma; (4) book.load("orders.txt"); ile satır sayısı okuma; (5) book.largeOrders().size() ile büyük sipariş sayısı.
Bu sıra bağımlılıkları gözetir: dosya işlemi önce eklemeyi, büyük sipariş sayısı dosyaya yazılmış veriyi varsayar. Akış, gerçek bir sipariş sisteminin küçük bir kesitidir.
Uygulama Tüm uygulamayı birleştir
Tüm parçaları bir araya getir. Order ve OrderBook (add, listAll, largeOrders, save, load) sınıflarını yaz; main imzasına throws IOException ekle. main içinde OrderBook book = new OrderBook(); oluştur, üç sipariş ekle: "1", "Ayşe", 50, "2", "Alex", 150, "3", "Mehmet", 200. book.save("orders.txt"); ile kaydet. System.out.println(book.load("orders.txt")); ile satır sayısını, System.out.println(book.largeOrders().size()); ile büyük sipariş sayısını yazdır.
Örnek çözümü göster
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));
}
List<Order> largeOrders() {
return orders.stream().filter(o -> o.amount >= 100).collect(Collectors.toList());
}
void save(String path) throws IOException {
List<String> lines = orders.stream()
.map(o -> o.id + "|" + o.customer + "|" + o.amount)
.collect(Collectors.toList());
Files.write(Path.of(path), lines);
}
int load(String path) throws IOException {
return Files.readAllLines(Path.of(path)).size();
}
}
public class Main {
public static void main(String[] args) throws IOException {
OrderBook book = new OrderBook();
book.add(new Order("1", "Ayşe", 50));
book.add(new Order("2", "Alex", 150));
book.add(new Order("3", "Mehmet", 200));
book.save("orders.txt");
System.out.println(book.load("orders.txt"));
System.out.println(book.largeOrders().size());
}
}
Kendini test et
-
Birleştirme sırasında ilk adım nedir?
- Dosyadan okuma
- Sipariş ekleme
- Stream ile filtreleme
- Büyük siparişleri sayma
Cevabı göster
Sipariş ekleme — Önce sipariş eklenir; dosya ve filtreleme eklenen veriye ihtiyaç duyar.
-
Dosyadan okuma çağrısını tamamla
int lines = book.____("orders.txt");
Cevabı göster
int lines = book.load("orders.txt");
-
Proje özetini eşleştir
- Order
- Tek sipariş verisi
- OrderBook
- Koleksiyon yönetimi
- largeOrders
- Stream filtresi
- save/load
- Dosya kalıcılığı
Sıradaki ders: Orta seviye bölüm sınavı