Birleştirme
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
-
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.
-
Komutu işlevine eşle
- list
- Ürünleri listeler
- total
- Ara toplamı verir
- exit
- Veda mesajı yazar
- default
- Bilinmeyen komut
-
case etiketini yaz
switch (command) { ____ Console.WriteLine($"Toplam: {cart.GetSubtotal()}"); break; }Cevabı göster
switch (command) { case "total": Console.WriteLine($"Toplam: {cart.GetSubtotal()}"); break; }