Menu
Coddy logo textTech

Administrationsoberfläche

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

challenge icon

Aufgabe

Einfach

Erweitern wir unser Bibliotheksverwaltungssystem um administrative Funktionen. Du erstellst eine Admin-Klasse, die von User erbt, aber besondere Berechtigungen zur Verwaltung des Bibliotheksbestands besitzt: zum Hinzufügen neuer Bücher und zum Entfernen vorhandener Bücher.

Du organisierst deinen Code auf fünf Dateien verteilt:

  • Book.php: Deine Book-Klasse mit schreibgeschützten Eigenschaften (isbn, title, author), einer privaten $isAvailable-Eigenschaft, die mit true beginnt, sowie den Methoden: isAvailable(), markAsBorrowed() und markAsReturned().
  • User.php: Binde die Book-Datei ein. Deine User-Klasse mit schreibgeschützten Eigenschaften (id, name), einem privaten $borrowedBooks-Array, einer MAX_BOOKS-Konstante mit dem Wert 3 sowie den Methoden: getBorrowedBooks(), canBorrow(), addBook(Book $book) und removeBook(string $isbn).
  • Library.php: Binde die User-Datei ein. Deine Library-Klasse mit der bestehenden Funktionalität einschließlich addBook(), findBook(), borrowBook(), returnBook() und den Suchmethoden. Füge eine neue Methode hinzu:
    • removeBook(string $isbn): void: Entfernt ein Buch mithilfe von unset() aus der Sammlung.
  • Admin.php: Binde die Library-Datei ein. Erstelle eine Admin-Klasse, die User erweitert. Administratoren erben alle Funktionen von Benutzern, erhalten aber zwei administrative Methoden:
    • addBookToLibrary(Library $library, Book $book): string: Fügt das Buch zur Bibliothek hinzu und gibt "Added: [title]" zurück.
    • removeBookFromLibrary(Library $library, string $isbn): string: Versucht, ein Buch zu entfernen, wobei folgende Prüfungen durchgeführt werden:
      • Wenn das Buch nicht existiert, gib "Book not found" zurück.
      • Wenn das Buch derzeit ausgeliehen ist, gib "Cannot remove: book is currently borrowed" zurück.
      • Andernfalls entferne es und gib "Removed: [title]" zurück.
  • main.php: Binde die Admin-Datei ein. Du erhältst zwei Eingaben: eine ISBN und einen Buchtitel.

    Erstelle eine Library und einen Admin mit der ID 1 und dem Namen "AdminUser". Erstelle außerdem einen regulären User mit der ID 2 und dem Namen "RegularUser".

    Erstelle ein Book mit der angegebenen ISBN, dem angegebenen Titel und dem Autor "Test Author". Führe die folgenden Operationen durch und gib jedes Ergebnis in einer neuen Zeile aus:

    1. Lass den Administrator das Buch zur Bibliothek hinzufügen.
    2. Lass den regulären Benutzer das Buch ausleihen.
    3. Lass den Administrator versuchen, das Buch zu entfernen (dies sollte fehlschlagen, da es ausgeliehen ist).
    4. Lass den regulären Benutzer das Buch zurückgeben.
    5. Lass den Administrator das Buch entfernen (dies sollte nun erfolgreich sein).
    6. Lass den Administrator erneut versuchen, dasselbe Buch zu entfernen (dies sollte fehlschlagen, da es nicht gefunden wurde).

Diese Aufgabe zeigt, wie Vererbung eine natürliche Hierarchie erzeugt: Administratoren sind Benutzer mit zusätzlichen Berechtigungen. Die Sicherheitsprüfungen in removeBookFromLibrary gewährleisten die Datenintegrität, indem sie das Entfernen von Büchern verhindern, die sich noch im Umlauf befinden.

Probier es selbst

<?php
require_once 'Admin.php';

// Eingabe lesen
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));

// TODO: Erstelle eine Library

// TODO: Erstelle einen Admin mit ID 1 und Name "AdminUser"

// TODO: Erstelle einen normalen User mit ID 2 und Name "RegularUser"

// TODO: Erstelle ein Book mit der angegebenen ISBN, title und Autor "Test Author"

// TODO: Führe diese Operationen aus und gib jedes Ergebnis in einer neuen Zeile aus:
// 1. Lass den Admin das Buch zur Library hinzufügen
// 2. Lass den normalen User das Buch ausleihen
// 3. Lass den Admin versuchen, das Buch zu entfernen (sollte fehlschlagen - es ist ausgeliehen)
// 4. Lass den normalen User das Buch zurückgeben
// 5. Lass den Admin das Buch entfernen (sollte jetzt gelingen)
// 6. Lass den Admin versuchen, dasselbe Buch erneut zu entfernen (sollte fehlschlagen - nicht gefunden)

?>

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-PHP-Compiler