CodeBlanks Logo Icon CodeBlanks

Ödünç verme

C# kursu · Orta seviye · Ders 67/116

Checkout ve Return metotlarıyla ödünç akışını yazarsın.

Ödünç verme akışı

Bu derste Library sınıfına Checkout ve Return metotlarını ekleyeceğksin. Checkout, bir kitabı bir üyeye ödünç verir: kitabın IsBorrowed bayrağını true yapar ve üyenin BorrowedCount'unu bir artırır.

Aynı kitabı iki kez ödünç vermemek için önce if (!b.IsBorrowed) ile kontrol ederiz. Return ise tersini yapar: IsBorrowed'u false yapar ve sayıyı azaltır. Bu iki metot, kütüphanenin çekirdek davranışını oluşturur.

Güvenli koşul ile çift ödünç engeli

Bir kitap zaten ödünç verilmişse tekrar ödünç vermek mantıksızdır. Bu yüzden Checkout metodunun başında bir koşul kontrolü yaparız: if (!b.IsBorrowed). Bu koşul yalnızca kitap müsase olduğunda gövdeyi çalıştırır.

Benzer şekilde Return metodu da if (b.IsBorrowed) ile başlar; böylece ödünç verilmemiş bir kitap geri alınamaz. Bu küçük koşullar, veri tutarlılığını korur. İleride hata fırlatmak istersen bu koşulların else dalına throw ekleyebilirsin.

Uygulama Checkout ve Return metotlarını ekle

Library sınıfına public void Checkout(Member m, Book b) metodunu ekle. Gövdede if (!b.IsBorrowed) ile kontrol et; koşul doğruysa b.IsBorrowed = true; ve m.BorrowedCount++; yap. Aynı şekilde public void Return(Member m, Book b) ekle; if (b.IsBorrowed) ile b.IsBorrowed = false; ve m.BorrowedCount--; yap. Main içinde lib.AddMember(member) ve lib.Checkout(member, book) çağır; son olarak Console.WriteLine(book.IsBorrowed) ile sonucu yaz.

Örnek çözümü göster
Library içine public void Checkout(Member m, Book b) { if (!b.IsBorrowed) { b.IsBorrowed = true; m.BorrowedCount++; } } ve public void Return(Member m, Book b) { if (b.IsBorrowed) { b.IsBorrowed = false; m.BorrowedCount--; } } ekle. Main'de lib.AddMember(member); lib.Checkout(member, book); Console.WriteLine(book.IsBorrowed); 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--;
        }
    }
}

class Program
{
    static void Main()
    {
        var book = new Book { Title = "Çalıkuşu", Author = "Reşat Nuri" };
        var member = new Member { Name = "Ayşe" };
        Console.WriteLine(book.Title);
        Console.WriteLine(member.Name);
        var lib = new Library();
        lib.AddBook(new Book { Title = "Tutunamayanlar", Author = "Oğuz Atay" });
        lib.ListBooks();
        lib.AddMember(member);
        lib.Checkout(member, book);
        Console.WriteLine(book.IsBorrowed);
    }
}

Kendini test et

  1. Checkout metodunda ne yapılmalı?

    if (!b.IsBorrowed) {
        b.IsBorrowed = true;
        // sonraki adım
    }
    • m.BorrowedCount = 0;
    • m.BorrowedCount--;
    • m.BorrowedCount++;
    • m.BorrowedCount = null;
    Cevabı göster

    m.BorrowedCount++; — Doğru. Üyenin ödünç sayısını artırmalısın.

  2. Kitabın ödünç bayrağı

    b.IsBorrowed = ____;
    Cevabı göster
    b.IsBorrowed = true;
  3. Ödünç kavramını eşle

    IsBorrowed
    Ödünç durumu
    BorrowedCount
    Üyenin ödünç sayısı
    Checkout
    Kitabı ödünç verir
    Return
    Kitabı geri alır

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