CodeBlanks Logo Icon CodeBlanks

Birleştirme

C# kursu · Başlangıç · Ders 52/116

Sepet sınıfını konsol menüsüyle birleştirirsin.

Birleştirme

Cart sınıfı tamamen hazır; son adımda bir switch menüsüyle komutları işleyeceğiz. Main, bir komut dizisi üzerinde foreach ile döner; her komut için switch doğru dalı seçer.

Komutlar İngilizce anahtar sözcükler: list ürünleri listeler, total ara toplamı yazdırır, exit veda mesajı verir. Bu şekilde tek bir döngü içinde sepetin tüm işlevlerini bir araya getirmiş oluyoruz.

foreach ve switch birlikte

Bir komut listesini foreach ile gezip her birini switch ile işlersen, küçük bir konsol uygulamasının çekirdeğini kurmuş olursun. cart.Items özelliği, sepetin içeriğini dışarıdan gezmeni sağlar.

list dalı foreach (var p in cart.Items) ile her ürünü yazdırır; total dalı cart.GetSubtotal() çağrısı yapar; exit dalı veda mesajı yazar. Her dalın sonunda break unutulmaz.

Uygulama Switch menüsünü yaz

Main içindeki foreach (string command in commands) gövdesine bir switch (command) yaz. Üç dal olsun: case "list": ile cart.Items üzerinde foreach ile her ürünü $"{p.Name} - {p.Quantity} x {p.Price} = {p.Quantity * p.Price}" biçiminde yazdır; case "total": ile $"Toplam: {cart.GetSubtotal()}" yazdır; case "exit": ile "güle güle" yazdır. Her dalın sonunda break olsun.

Örnek çözümü göster
...; break; case "total": ...; break; case "exit": ...; break; } yaz.
Örnek çözüm:
using System;
using System.Collections.Generic;

class Product
{
    public string Name { get; set; }
    public double Price { get; set; }
    public int Quantity { get; set; }
}

class Cart
{
    private List<Product> items = new List<Product>();
    public List<Product> Items => items;

    public void AddProduct(Product product) { items.Add(product); }

    public void UpdateQuantity(string name, int quantity)
    {
        foreach (var p in items) if (p.Name == name) p.Quantity = quantity;
    }

    public void RemoveProduct(string name)
    {
        for (int i = items.Count - 1; i >= 0; i--)
            if (items[i].Name == name) items.RemoveAt(i);
    }

    public double GetSubtotal()
    {
        double sum = 0;
        foreach (var p in items) sum += p.Price * p.Quantity;
        return sum;
    }
}

class Program
{
    static void Main()
    {
        var cart = new Cart();
        cart.AddProduct(new Product { Name = "Defter", Price = 25, Quantity = 2 });
        cart.AddProduct(new Product { Name = "Kalem", Price = 10, Quantity = 3 });

        string[] commands = { "list", "total", "exit" };
        foreach (string command in commands)
        {
            switch (command)
            {
                case "list":
                    foreach (var p in cart.Items)
                        Console.WriteLine($"{p.Name} - {p.Quantity} x {p.Price} = {p.Quantity * p.Price}");
                    break;
                case "total":
                    Console.WriteLine($"Toplam: {cart.GetSubtotal()}");
                    break;
                case "exit":
                    Console.WriteLine("güle güle");
                    break;
            }
        }
    }
}

Kendini test et

  1. switch (command) içinde 'case "list":' ne anlama gelir?

    switch (command)
    {
        case "list":
            // ...
            break;
    }
    • Liste boş demektir
    • Yalnızca liste özelliği
    • command 'list' ise bu dal çalışır
    • Tüm komutları listele
    Cevabı göster

    command 'list' ise bu dal çalışır — Doğru. case "list": yalnızca command 'list' değerini karşılar.

  2. Komutu işlevine eşle

    list
    Ürünleri listeler
    total
    Ara toplamı verir
    exit
    Veda mesajı yazar
    default
    Bilinmeyen komut
  3. case etiketini yaz

    switch (command)
    {
        ____
            Console.WriteLine($"Toplam: {cart.GetSubtotal()}");
            break;
    }
    Cevabı göster
    switch (command)
    {
        case "total":
            Console.WriteLine($"Toplam: {cart.GetSubtotal()}");
            break;
    }

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