Menu
Coddy logo textTech

Buch- und Benutzerklassen

Teil des Abschnitts Objektorientierte Programmierung der PHP-Journey von Coddy — Lektion 83 von 91.

challenge icon

Aufgabe

Einfach

Lassen Sie uns das Fundament für unser Bibliotheksverwaltungssystem legen, indem wir die Klassen Book und User erstellen. Diese Kern-Domain-Objekte werden zusammenarbeiten, um den Bibliotheksbetrieb zu verwalten.

Sie werden Ihren Code über drei Dateien organisieren:

  • Book.php — Erstellen Sie eine Klasse Book, die Bibliotheksbücher verwaltet. Ihr Buch sollte drei Readonly-Eigenschaften haben, die über Constructor Promotion gesetzt werden: isbn, title und author. Fügen Sie eine private Eigenschaft $isAvailable hinzu, die initial auf true gesetzt ist. Fügen Sie drei Methoden hinzu:
    • isAvailable(): bool — gibt den Verfügbarkeitsstatus zurück
    • markAsBorrowed(): void — setzt die Verfügbarkeit auf false
    • markAsReturned(): void — setzt die Verfügbarkeit auf true
  • User.php — Binden Sie die Book-Datei ein und erstellen Sie eine Klasse User, die Bibliotheksmitglieder repräsentiert. Ihr Benutzer sollte zwei Readonly-Eigenschaften über Constructor Promotion haben: id (int) und name (string). Fügen Sie ein privates Array $borrowedBooks (initial leer) und eine Konstante MAX_BOOKS hinzu, die auf 3 gesetzt ist. Fügen Sie diese Methoden hinzu:
    • getBorrowedBooks(): array — gibt das Array der ausgeliehenen Bücher zurück
    • canBorrow(): bool — gibt true zurück, wenn der Benutzer weniger als MAX_BOOKS ausgeliehen hat
    • addBook(Book $book): void — fügt ein Buch zum Array der ausgeliehenen Bücher hinzu
    • removeBook(string $isbn): void — entfernt ein Buch anhand der ISBN unter Verwendung von array_filter
  • main.php — Binden Sie die User-Datei ein und erwecken Sie Ihre Klassen zum Leben. Sie erhalten vier Eingaben: eine Benutzer-ID, einen Benutzernamen, eine Buch-ISBN und einen Buchtitel (der Autor wird "Unknown" sein).

    Erstellen Sie einen User und ein Book mit den bereitgestellten Werten. Geben Sie aus, ob der Benutzer anfangs ausleihen kann, lassen Sie den Benutzer dann das Buch ausleihen (markieren Sie es als ausgeliehen und fügen Sie es dem Benutzer hinzu). Geben Sie abschließend die Verfügbarkeit des Buches und die Anzahl der ausgeliehenen Bücher aus.

    Ausgabeformat:

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

Beachten Sie, wie die Kapselung den internen Zustand schützt — die Verfügbarkeit eines Buches ändert sich nur über dedizierte Methoden, und die ausgeliehenen Bücher eines Benutzers werden über kontrollierten Zugriff verwaltet. Dieses Fundament wird das Ausleihsystem unterstützen, das wir als Nächstes bauen werden.

Probier es selbst

<?php

require_once 'User.php';

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

// TODO: Erstellen Sie ein User-Objekt mit der angegebenen ID und dem Namen

// TODO: Erstellen Sie ein Book-Objekt mit der angegebenen ISBN, dem Titel und dem Autor

// TODO: Geben Sie aus, ob der Benutzer anfangs ausleihen kann
// Format: "Can borrow: yes" oder "Can borrow: no"

// TODO: Lassen Sie den Benutzer das Buch ausleihen:
// - Markieren Sie das Buch als ausgeliehen
// - Fügen Sie das Buch den ausgeliehenen Büchern des Benutzers hinzu

// TODO: Geben Sie die Verfügbarkeit des Buches aus
// Format: "Book available: yes" oder "Book available: no"

// TODO: Geben Sie die Anzahl der ausgeliehenen Bücher aus
// Format: "Books borrowed: [Anzahl]"

?>

Alle Lektionen in Objektorientierte Programmierung