Menu
Coddy logo textTech

Ödünç Alma Sistemi

Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 84 / 91.

challenge icon

Görev

Kolay

Library sınıfını oluşturarak Kütüphane Yönetim Sistemimize hayat verelim; bu sınıf tüm ödünç alma işlemlerini yönetir. Bu merkezi koordinatör, kitap koleksiyonunu yönetecek ve kütüphanemizin sorunsuz çalışmasını sağlayan kuralları uygulayacaktır.

Kodunuzu dört dosyaya ayıracaksınız:

  • Book.php: Önceki derste oluşturduğunuz, salt okunur özelliklere (Book, isbn, title) sahip author sınıfınız; başlangıç değeri $isAvailable olan özel bir true özelliği ve şu metotlar: isAvailable(), markAsBorrowed() ve markAsReturned().
  • User.php: Book dosyasını dahil edin. Salt okunur özelliklere (User, id) sahip name sınıfınız; özel bir $borrowedBooks dizisi, MAX_BOOKS değerine sahip bir 3 sabiti ve şu metotlar: getBorrowedBooks(), canBorrow(), addBook(Book $book) ve removeBook(string $isbn).
  • Library.php: User dosyasını dahil edin. Kitap koleksiyonunu yöneten bir Library sınıfı oluşturun. Kütüphanenizde şunlar bulunmalıdır:
    • ISBN'ye göre indekslenmiş kitapları depolamak için özel bir $books dizisi
    • addBook(Book $book): void: koleksiyona bir kitap ekler
    • findBook(string $isbn): ?Book: kitabı döndürür veya bulunamazsa null döndürür
    • borrowBook(User $user, string $isbn): string: ödünç alma işlemini doğrular ve gerçekleştirir; uygun mesajları döndürür
    • returnBook(User $user, string $isbn): string: iade işlemlerini gerçekleştirir ve hem kitabın hem de kullanıcının durumunu günceller

    borrowBook metodu üç koşulu sırayla kontrol etmeli ve şu tam mesajları döndürmelidir:

    • "Book not found": kitap mevcut değilse
    • "Book is not available": kitap zaten ödünç alınmışsa
    • "Borrowing limit reached": kullanıcının 3 kitabı varsa
    • "Successfully borrowed: [title]": işlem başarılı olduğunda

    returnBook metodu, kitap mevcut değilse "Book not found", işlem başarılı olduğunda ise "Successfully returned: [title]" döndürmelidir.

  • main.php: Library dosyasını dahil edin. İki girdi alacaksınız: bir ISBN ve bir kitap başlığı.

    Bir Library, ID'si User ve adı 1 olan bir "Alice" ve verilen ISBN ile başlığa, ayrıca Book yazarına sahip bir "Unknown" oluşturun. Kitabı kütüphaneye ekleyin, ardından aşağıdaki işlemleri gerçekleştirin ve her sonucu yeni bir satıra yazdırın:

    1. Kitabı ödünç alın
    2. Aynı kitabı tekrar ödünç almaya çalışın
    3. Kitabı iade edin
    4. Kitabı bir kez daha ödünç alın

Bu görev, Library sınıfının iş mantığını nasıl merkezileştirdiğini gösterir. Koşulları doğrular, Book ve User nesneleri arasındaki durum değişikliklerini koordine eder ve her işlem için anlamlı geri bildirim sağlar.

Kendin dene

<?php
require_once 'Library.php';

// Girdiyi oku
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));

// TODO: Bir Library örneği oluştur

// TODO: ID 1 ve adı "Alice" olan bir User oluştur

// TODO: Sağlanan ISBN, title ve yazarı "Unknown" olan bir Book oluştur

// TODO: Kitabı kütüphaneye ekle

// TODO: Bu işlemleri gerçekleştir ve her sonucu yeni bir satıra yazdır:
// 1. Kitabı ödünç al
// 2. Aynı kitabı tekrar ödünç almayı dene
// 3. Kitabı iade et
// 4. Kitabı bir kez daha ödünç al

?>

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online PHP derleyicisi