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

Erstellen wir die Grundlage unseres Bibliotheksverwaltungssystems, indem wir die Klassen Book und User erstellen. Diese zentralen Domänenobjekte werden zusammenarbeiten, um die Bibliotheksabläufe zu verwalten.

Du wirst deinen Code auf drei Dateien verteilen:

  • Book.php: Erstelle eine Klasse Book, die die Bücher der Bibliothek verwaltet. Dein Buch sollte drei schreibgeschützte Eigenschaften haben, die über die Konstruktor-Promotion festgelegt werden: isbn, title und author. Füge eine private Eigenschaft $isAvailable hinzu, die mit true beginnt. Füge 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: Binde die Book-Datei ein und erstelle eine Klasse User, die Bibliotheksmitglieder darstellt. Dein Benutzer sollte über die Konstruktor-Promotion zwei schreibgeschützte Eigenschaften haben: id (int) und name (string). Füge ein privates Array $borrowedBooks (anfangs leer) und eine Konstante MAX_BOOKS mit dem Wert 3 hinzu. Füge 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 Bücher 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 mithilfe von array_filter
  • main.php: Binde die User-Datei ein und erwecke deine Klassen zum Leben. Du erhältst vier Eingaben: eine Benutzer-ID, den Benutzernamen, die ISBN eines Buches und den Buchtitel (der Autor wird "Unknown" sein).

    Erstelle mit den bereitgestellten Werten einen User und ein Book. Gib zunächst aus, ob der Benutzer ein Buch ausleihen kann, lasse den Benutzer dann das Buch ausleihen (markiere es als ausgeliehen und füge es dem Benutzer hinzu). Gib 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]

Beachte, wie die Kapselung den internen Zustand schützt: Die Verfügbarkeit eines Buches wird nur durch dedizierte Methoden geändert, und die ausgeliehenen Bücher eines Benutzers werden über kontrollierten Zugriff verwaltet. Diese Grundlage wird das Ausleihsystem unterstützen, das wir als Nächstes entwickeln 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 name

// TODO: Erstelle ein Book-Objekt mit der angegebenen isbn, title und author

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

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

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

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

?>

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-PHP-Compiler