CodeBlanks Logo Icon CodeBlanks

Birleştirme

C# kursu · Orta seviye · Ders 69/116

Kütüphane sınıfını konsol menüsüyle birleştirirsin.

Konsol menüsü ile birleştirme

Son derste tüm parçaları bir konsol menüsünde birleştiriyoruz. Kullanıcı menüden bir seçim yapar; if dalları bu seçime göre ya ListBooks ya da SearchByAuthor çağırır. Böylece uygulamanın tüm metotları tek yerden ulaşılabilir.

Menüyü bir int değişkenle simüle edeceğiz: int choice = 1; yazıp iki dalı da sırayla çalıştıracağız. Gerçek bir uygulamada Console.ReadLine ile kullanıcıdan okursun, ama burada çıktıyı deterministik tutmak için sabit değer kullanıyoruz.

Deterministik menü çıktısı

Test edilebilir bir uygulama için çıktı deterministik olmalı; yani her çalıştırmada aynı sonucu vermeli. Bunu sağlamak için menü seçimini sabit bir değerle veriyoruz: int choice = 1;. Sonra choice = 2; ile ikinci dala da giriyoruz.

İlk dal lib.ListBooks() çağırır; ikinci dal bir foreach ile SearchByAuthor sonuçlarını yazdırır. Böylece tek bir çalıştırmada hem liste hem arama davranışını görürsün. Gerçek menüde kullanıcıdan okunan değerle yalnızca tek dal çalışır.

Uygulama Menü ile ListBooks ve SearchByAuthor çağır

Main içinde bir Library örneği üret; iki kitap ekle (Reşat Nuri ve Oğuz Atay'dan). Console.WriteLine("Menü:") ile başlık yaz. int choice = 1; ile if (choice == 1) lib.ListBooks(); çağır. Sonra choice = 2; yapıp if (choice == 2) içinde foreach ile lib.SearchByAuthor("Oğuz Atay") sonuçlarını Console.WriteLine("Ara: " + b.Title) ile yaz.

Örnek çözümü göster
"); yaz. int choice = 1; if (choice == 1) lib.ListBooks(); sonra choice = 2; if (choice == 2) { foreach (var b in lib.SearchByAuthor("Oğuz Atay")) Console.WriteLine("Ara: " + b.Title); } yaz.
Örnek çözüm:
using System;
using System.Collections.Generic;

class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public bool IsBorrowed { get; set; }
}

class Member
{
    public string Name { get; set; }
    public int BorrowedCount { get; set; }
}

class Library
{
    private List<Book> _books = new List<Book>();
    private List<Member> _members = new List<Member>();

    public void AddBook(Book b) { _books.Add(b); }
    public void AddMember(Member m) { _members.Add(m); }

    public void ListBooks()
    {
        foreach (var b in _books)
        {
            Console.WriteLine(b.Title);
        }
    }

    public void Checkout(Member m, Book b)
    {
        if (!b.IsBorrowed)
        {
            b.IsBorrowed = true;
            m.BorrowedCount++;
        }
    }

    public void Return(Member m, Book b)
    {
        if (b.IsBorrowed)
        {
            b.IsBorrowed = false;
            m.BorrowedCount--;
        }
    }

    public List<Book> SearchByAuthor(string author)
    {
        var result = new List<Book>();
        foreach (var b in _books)
        {
            if (b.Author == author) result.Add(b);
        }
        return result;
    }
}

class Program
{
    static void Main()
    {
        var lib = new Library();
        lib.AddBook(new Book { Title = "Çalıkuşu", Author = "Reşat Nuri" });
        lib.AddBook(new Book { Title = "Tutunamayanlar", Author = "Oğuz Atay" });
        Console.WriteLine("Menü:");
        int choice = 1;
        if (choice == 1) lib.ListBooks();
        choice = 2;
        if (choice == 2)
        {
            foreach (var b in lib.SearchByAuthor("Oğuz Atay"))
            {
                Console.WriteLine("Ara: " + b.Title);
            }
        }
    }
}

Kütüphane uygulaması hazır

Tebrikler! Beş derslik kütüphane uygulamasını tamamladın. Artık elinde Book ve Member modelleri, onları yöneten bir Library sınıfı, ödünç verme akışı, yazar bazında arama ve bir konsol menüsü var. Bu proje, nesne yönelimli C#'ın küçük bir örnek üzerinde nasıl bir araya geldiğini gösteriyor.

Sonraki gruplarda generic sınıfları ve koleksiyonları derinlemesine inceleyeceğiz. List<T>'nin nasıl büyüdüğünü, Dictionary'nin hash mekanizmasını ve kendi yineleyicilerini yazmayı öğreneceksin.

Kendini test et

  1. Hangi yapı menü seçimine göre dallar?

    int choice = 1;
    // ?
    • if (choice == 1) { ... }
    • foreach (choice) { ... }
    • while (choice) { ... }
    • return choice;
    Cevabı göster

    if (choice == 1) { ... } — Doğru. if ile seçime göre dallanırız.

  2. Menü parçasını görevine eşle

    if
    Seçime göre dallanır
    choice
    Seçim değişkeni
    ListBooks
    Kitapları listeler
    SearchByAuthor
    Yazara göre süzer
  3. Eşitlik kontrolü

    if (choice ____ 1) lib.ListBooks();
    Cevabı göster
    if (choice == 1) lib.ListBooks();

Orta seviye bölümündeki tüm dersler