### Iteration 1: Basisstruktur - Projektstruktur erstellen (z. B. DomainLayer, ServiceLayer, UILayer). - Grundlegende Klassen definieren (z. B. Medium, User, LibraryService). - Git-Repository initialisieren und Basiscode committen. ### Iteration 2: Medienverwaltung - Abstrakte Klasse Medium und spezifische Klassen (Book, DVD, etc.) implementieren. - Methoden für Ausleihfrist und Verlängerungslogik hinzufügen (z. B. getBorrowPeriod, isRenewable). - Funktion zur Anzeige eines Medienkatalogs erstellen. ### Iteration 3: Benutzerverwaltung - Benutzerklassen (Adult, Student, Admin) mit entsprechenden Attributen und Methoden hinzufügen. - Registrierungs- und Anmeldefunktionalität implementieren. ### Iteration 4: Ausleihe und Rückgabe - Logik für die Ausleihe von Medien (inkl. Fälligkeitsdatum) implementieren. - Rückgabefunktion mit Gebührenberechnung (z. B. Säumnisgebühren) hinzufügen. ### Iteration 5: Erweiterte Validierung - Validierung: Nur berechtigte Benutzer dürfen ausgeliehene Medien verlängern oder zurückgeben. - Überprüfen, ob Medien bereits ausgeliehen sind, bevor sie erneut ausgeliehen werden können. ### Iteration 6: Admin-Funktionalität - Admin-Zugang implementieren: Bearbeiten von Zahlungen und Übersicht aller Benutzer. ### Iteration 7: Erweiterte Suchfunktion - Funktion hinzufügen, um Medien nach ID, Titel oder Status (z. B. ausgeliehen) zu durchsuchen. ### Iteration 8: Benutzeroberfläche (TUI) - Menüsystem mit allen Optionen (z. B. Medien anzeigen, ausleihen, zurückgeben). - Benutzerfreundliche Ausgabe für Katalog und Gebühreninformationen. - Git-Branch `feature/ui` erstellen, Änderungen committen. ### Iteration 9: Endgültige Tests und Dokumentation - Alle Funktionen testen und sicherstellen, dass die Anforderungen erfüllt sind.