CodeBlanks Logo Icon CodeBlanks

Birleştirme

Sepet sınıfını CLI ile birleştirirsin.

Birleştirme

Tüm parçalar hazır: Cart sınıfı, addItem, getSubtotal ve printCart metotları. Şimdi bunları main akışında birleştirip sepette iki ürün oluşturacak, sepeti yazdıracak ve toplamı göstereceğiz.

Bu aşamada her metot kendi görevini yapar; main yalnızca sırayla çağırır. İyi tasarlanmış bir program, metotların küçük ve odaklanmış olmasıyla ölçeklenir. Sepete daha sonra yeni bir özellik eklemek istersen, ilgili metodu değiştirmen yeterli olur.

Uçtan uca akış

Sepet uygulamasının tüm parçaları bir araya geldiğinde gerçek bir alışveriş akışı elde edilir: ürünler eklenir, sepet görüntülenir ve toplam hesaplanır. Her metot tek bir işi iyi yapar.

Bu yapıyı ileride bir menü döngüsüyle sararak kullanıcıya seçenekler sunabilirsin. while (choice !== 0) kalıbı 0 girilene kadar menüyü yeniden gösterir. Şimdilik akışı doğrudan çağrılarla yöneteceğiz; etkileşimli menüyü sonraki projelerde göreceksin.

Uygulama Sepeti birleştir

Cart sınıfının tüm metotları hazır. main akışında şu adımları yaz: önce const cart = new Cart() ile sepeti yarat; sonra cart.addItem({ name: "Defter", price: 25, quantity: 2 }) ve cart.addItem({ name: "Kalem", price: 10, quantity: 3 }) ile iki ürün ekle; sonra cart.printCart() ile sepeti yazdır; son olarak console.log("Toplam: " + cart.getSubtotal()) ile toplamı yazdır. Çıktı üç satır olmalı: Defter 25 2, Kalem 10 3, Toplam: 80.

Başlangıç kodu

index.js
class Cart {
    constructor() {
        this.items = [];
    }
    addItem(product) {
        this.items.push(product);
    }
    getSubtotal() {
        let sum = 0;
        for (const p of this.items) {
            sum += p.price * p.quantity;
        }
        return sum;
    }
    printCart() {
        for (const p of this.items) {
            console.log(p.name + " " + p.price + " " + p.quantity);
        }
    }
}

// Sepeti yarat, iki ürün ekle, sepeti ve toplamı yazdır

Örnek çözüm

index.js
class Cart {
    constructor() {
        this.items = [];
    }
    addItem(product) {
        this.items.push(product);
    }
    getSubtotal() {
        let sum = 0;
        for (const p of this.items) {
            sum += p.price * p.quantity;
        }
        return sum;
    }
    printCart() {
        for (const p of this.items) {
            console.log(p.name + " " + p.price + " " + p.quantity);
        }
    }
}

const cart = new Cart();
cart.addItem({ name: "Defter", price: 25, quantity: 2 });
cart.addItem({ name: "Kalem", price: 10, quantity: 3 });
cart.printCart();
console.log("Toplam: " + cart.getSubtotal());

Beklenen çıktı

Defter 25 2
Kalem 10 3
Toplam: 80

Soru ve cevaplar

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

1 main tümleşik satırını yaz

Soru
cart.printCart();
console.log("Toplam: " + ____);
Cevap
cart.printCart();
console.log("Toplam: " + cart.getSubtotal());

Açıklama: cart.getSubtotal() sepetteki ara toplamı döndürür.

2 Parçayı işleve eşle

Kavram Anlamı
Cart Tüm veriyi tutar
addItem Sepete ekler
printCart Sepeti gösterir
getSubtotal Toplamı verir

3 Birleştirme aşamasında hangi yapı tüm parçaları çağırır?

index.js
// tümleşik akış
  • class
  • if
  • for
  • main akış Doğru cevap

Açıklama: main akış tüm metotları sırayla çağırır.

Başlangıç bölümündeki tüm dersler