Menu
Coddy logo textTech

Tests 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 deine Komponenten zusammenzuführen und zu überprüfen, ob alles reibungslos funktioniert. Du wirst einen umfassenden Integrationstest erstellen, der den vollständigen Ablauf deiner Bibliothek durchläuft.

Du wirst deinen Code auf fünf Dateien verteilen:

  • Book.php: Deine Book-Klasse mit readonly-Eigenschaften (isbn, title, author), einer privaten $isAvailable-Eigenschaft und den Methoden: isAvailable(), markAsBorrowed() und markAsReturned().
  • User.php: Binde die Book-Datei ein. Deine User-Klasse mit readonly-Eigenschaften (id, name), einem privaten $borrowedBooks-Array, einer MAX_BOOKS-Konstante mit dem Wert 3 und allen Benutzermethoden.
  • Library.php: Binde die User-Datei ein. Deine Library-Klasse mit Buchverwaltung, Ausleih- und Rückgabefunktionen, Suchmethoden und der Methode removeBook().
  • Admin.php: Binde die Library-Datei ein. Deine Admin-Klasse, die User mit den Methoden addBookToLibrary() und removeBookFromLibrary() erweitert.
  • main.php: Binde die Admin-Datei ein. Hier wirst du deinen Integrationstest ausführen. Du erhältst zwei Eingaben: einen Benutzernamen und ein Suchstichwort für den Autor.

    Richte dein Bibliothekssystem ein:

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

    Lass 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ühre anschließend diese Sequenz des Integrationstests durch und gib jedes Ergebnis in einer neuen Zeile aus:

    1. Lass den Benutzer "978-0" ausleihen
    2. Lass den Benutzer "978-1" ausleihen
    3. Suche anhand des zweiten Eingabewerts nach dem Autor und gib die Anzahl aus: "Books by author: [count]"
    4. Rufe die verfügbaren Bücher ab und gib Folgendes aus: "Available: [count]"
    5. Lass den Benutzer "978-0" zurückgeben
    6. Rufe die verfügbaren Bücher erneut ab und gib Folgendes aus: "Available after return: [count]"
    7. Lass den Admin "978-0" entfernen
    8. Lass den Admin erneut versuchen, "978-0" zu entfernen

Diese abschließende Herausforderung bestätigt, dass dein gesamtes System zusammenarbeitet: Administratoren verwalten den Bestand, Benutzer leihen Bücher innerhalb der Grenzen aus, Suchvorgänge liefern genaue Ergebnisse und die Verfügbarkeit wird während des gesamten Ablaufs korrekt aktualisiert.

Probier es selbst

<?php

require_once 'Admin.php';

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

// TODO: Erstelle eine Library

// TODO: Erstelle einen Admin mit ID 1 und dem Namen "LibraryAdmin"

// TODO: Erstelle einen User mit ID 2 und dem angegebenen Benutzernamen

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

// TODO: Integrationstest-Sequenz:
// 1. Lass den User "978-0" ausleihen
// 2. Lass den User "978-1" ausleihen
// 3. Search by author using $searchAuthor and print: "Books by author: [count]"
// 4. Hole verfügbare Bücher und gib aus: "Available: [count]"
// 5. Lass den User "978-0" zurückgeben
// 6. Get available books again and print: "Available after return: [count]"
// 7. Lass den Admin "978-0" entfernen
// 8. Lass den Admin versuchen, "978-0" erneut zu entfernen

?>

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-PHP-Compiler