Menu
Coddy logo textTech

Kitap ve Kullanıcı Sınıfları

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

challenge icon

Görev

Kolay

Book ve User sınıflarını oluşturarak Kütüphane Yönetim Sistemimizin temelini atalım. Bu çekirdek alan nesneleri, kütüphane operasyonlarını yönetmek için birlikte çalışacaklar.

Kodunuzu üç dosya halinde düzenleyeceksiniz:

  • Book.php — Kütüphane kitaplarını takip eden bir Book sınıfı oluşturun. Kitabınızın yapıcı (constructor) tanıtımı yoluyla ayarlanan üç salt okunur (readonly) özelliği olmalıdır: isbn, title ve author. Başlangıç değeri true olan özel (private) bir $isAvailable özelliği ekleyin. Üç metot ekleyin:
    • isAvailable(): bool — kullanılabilirlik durumunu döndürür
    • markAsBorrowed(): void — kullanılabilirliği false olarak ayarlar
    • markAsReturned(): void — kullanılabilirliği true olarak ayarlar
  • User.php — Book dosyasını dahil edin ve kütüphane üyelerini temsil eden bir User sınıfı oluşturun. Kullanıcınızın yapıcı tanıtımı yoluyla iki salt okunur özelliği olmalıdır: id (int) ve name (string). Özel bir $borrowedBooks dizisi (başlangıçta boş) ve 3 olarak ayarlanmış bir MAX_BOOKS sabiti ekleyin. Şu metotları ekleyin:
    • getBorrowedBooks(): array — ödünç alınan kitaplar dizisini döndürür
    • canBorrow(): bool — kullanıcı MAX_BOOKS değerinden daha az kitap ödünç almışsa true döndürür
    • addBook(Book $book): void — ödünç alınanlar dizisine bir kitap ekler
    • removeBook(string $isbn): voidarray_filter kullanarak ISBN'e göre bir kitabı kaldırır
  • main.php — User dosyasını dahil edin ve sınıflarınızı hayata geçirin. Dört girdi alacaksınız: bir kullanıcı ID'si, kullanıcı adı, kitap ISBN'i ve kitap başlığı (yazar "Unknown" olacaktır).

    Sağlanan değerlerle bir User ve bir Book oluşturun. Başlangıçta kullanıcının ödünç alıp alamayacağını yazdırın, ardından kullanıcının kitabı ödünç almasını sağlayın (kitabı ödünç alınmış olarak işaretleyin ve kullanıcıya ekleyin). Son olarak, kitabın kullanılabilirlik durumunu ve ödünç alınan kitap sayısını yazdırın.

    Çıktı formatı:

    Can borrow: [yes/no]
    Book available: [yes/no]
    Books borrowed: [count]

Kapsüllemenin (encapsulation) iç durumu nasıl koruduğuna dikkat edin — bir kitabın kullanılabilirliği yalnızca özel metotlar aracılığıyla değişir ve bir kullanıcının ödünç aldığı kitaplar kontrollü erişim yoluyla yönetilir. Bu temel, bir sonraki adımda inşa edeceğimiz ödünç alma sistemini destekleyecektir.

Kendin dene

<?php

require_once 'User.php';

// Girdileri oku
$userId = intval(trim(fgets(STDIN)));
$userName = trim(fgets(STDIN));
$bookIsbn = trim(fgets(STDIN));
$bookTitle = trim(fgets(STDIN));
$bookAuthor = "Unknown";

// TODO: Sağlanan id ve isim ile bir User nesnesi oluşturun

// TODO: Sağlanan isbn, başlık ve yazar ile bir Book nesnesi oluşturun

// TODO: Kullanıcının başlangıçta ödünç alıp alamayacağını yazdırın
// Format: "Can borrow: yes" veya "Can borrow: no"

// TODO: Kullanıcının kitabı ödünç almasını sağlayın:
// - Kitabı ödünç alınmış olarak işaretleyin
// - Kitabı kullanıcının ödünç alınan kitaplarına ekleyin

// TODO: Kitabın uygunluk durumunu yazdırın
// Format: "Book available: yes" veya "Book available: no"

// TODO: Ödünç alınan kitapların sayısını yazdırın
// Format: "Books borrowed: [count]"

?>

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