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 zentralen Domänenobjekte 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 Datei Book 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 (anfänglich 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 Datei User 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 schließlich 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: Erstelle ein User-Objekt mit der angegebenen id und dem Namen

// TODO: Erstelle ein Book-Objekt mit der angegebenen isbn, dem Titel und dem Autor

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

// TODO: Lass den Benutzer das Buch ausleihen:
// - Markiere das Buch als ausgeliehen
// - Füge das Buch zu den ausgeliehenen Büchern des Benutzers hinzu

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

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

?>

Alle Lektionen in Objektorientierte Programmierung