Menu
Coddy logo textTech

Testen und Integration

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

challenge icon

Aufgabe

Einfach

Herzlichen Glückwunsch zum Aufbau eines vollständigen Bibliotheksverwaltungssystems! Jetzt ist es an der Zeit, alle Ihre Komponenten zusammenzuführen und zu überprüfen, ob alles nahtlos funktioniert. Sie werden einen umfassenden Integrationstest erstellen, der den gesamten Workflow Ihrer Bibliothek durchläuft.

Sie werden Ihren Code auf fünf Dateien verteilen:

  • Book.php — Ihre Book-Klasse mit Readonly-Eigenschaften (isbn, title, author), einer privaten $isAvailable-Eigenschaft und den Methoden: isAvailable(), markAsBorrowed() und markAsReturned().
  • User.php — Binden Sie die Book-Datei ein. Ihre User-Klasse mit Readonly-Eigenschaften (id, name), einem privaten $borrowedBooks-Array, einer MAX_BOOKS-Konstante von 3 und allen User-Methoden.
  • Library.php — Binden Sie die User-Datei ein. Ihre Library-Klasse mit Buchverwaltung, Ausleih-/Rückgabefunktionalität, Suchmethoden und der removeBook()-Methode.
  • Admin.php — Binden Sie die Library-Datei ein. Ihre Admin-Klasse, die User erweitert, mit den Methoden addBookToLibrary() und removeBookFromLibrary().
  • main.php — Binden Sie die Admin-Datei ein. Hier führen Sie Ihren Integrationstest aus. Sie erhalten zwei Eingaben: einen Benutzernamen und ein Suchwort für den Autor.

    Richten Sie Ihr Bibliothekssystem ein:

    • Erstellen Sie eine Library
    • Erstellen Sie einen Admin mit der ID 1 und dem Namen "LibraryAdmin"
    • Erstellen Sie einen User mit der ID 2 und dem angegebenen Benutzernamen

    Lassen Sie den Admin diese drei Bücher hinzufügen:

    • ISBN: "978-0", Titel: "PHP Fundamentals", Autor: "Sarah Johnson"
    • ISBN: "978-1", Titel: "OOP Patterns", Autor: "Mike Chen"
    • ISBN: "978-2", Titel: "Web Security", Autor: "Sarah Johnson"

    Führen Sie dann diese Integrationstest-Sequenz durch und geben Sie jedes Ergebnis in einer neuen Zeile aus:

    1. Lassen Sie den Benutzer "978-0" ausleihen
    2. Lassen Sie den Benutzer "978-1" ausleihen
    3. Suchen Sie nach dem Autor unter Verwendung der zweiten Eingabe und geben Sie die Anzahl aus: "Books by author: [count]"
    4. Rufen Sie die verfügbaren Bücher ab und geben Sie aus: "Available: [count]"
    5. Lassen Sie den Benutzer "978-0" zurückgeben
    6. Rufen Sie die verfügbaren Bücher erneut ab und geben Sie aus: "Available after return: [count]"
    7. Lassen Sie den Admin "978-0" entfernen
    8. Lassen Sie den Admin versuchen, "978-0" erneut zu entfernen

Diese abschließende Herausforderung bestätigt, dass Ihr gesamtes System zusammenarbeitet – Admins verwalten den Bestand, Benutzer leihen innerhalb der Limits aus, Suchen liefern genaue Ergebnisse und die Verfügbarkeit wird während des gesamten Workflows korrekt aktualisiert.

Probier es selbst

<?php

require_once 'Admin.php';

// Eingaben lesen
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));

// TODO: Eine Bibliothek erstellen

// TODO: Einen Admin mit der ID 1 und dem Namen "LibraryAdmin" erstellen

// TODO: Einen User mit der ID 2 und dem angegebenen Benutzernamen erstellen

// TODO: Den Admin drei Bücher hinzufügen lassen:
// - ISBN: "978-0", Titel: "PHP Fundamentals", Autor: "Sarah Johnson"
// - ISBN: "978-1", Titel: "OOP Patterns", Autor: "Mike Chen"
// - ISBN: "978-2", Titel: "Web Security", Autor: "Sarah Johnson"

// TODO: Integrationstest-Sequenz:
// 1. Den User "978-0" ausleihen lassen
// 2. Den User "978-1" ausleihen lassen
// 3. Suche nach Autor mit $searchAuthor und Ausgabe: "Books by author: [count]"
// 4. Verfügbare Bücher abrufen und Ausgabe: "Available: [count]"
// 5. Den User "978-0" zurückgeben lassen
// 6. Verfügbare Bücher erneut abrufen und Ausgabe: "Available after return: [count]"
// 7. Den Admin "978-0" entfernen lassen
// 8. Den Admin versuchen lassen, "978-0" erneut zu entfernen

?>

Alle Lektionen in Objektorientierte Programmierung