Menu
Coddy logo textTech

Buch- und Benutzerklassen

Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy — Lektion 78 von 87.

challenge icon

Aufgabe

Einfach

Lassen Sie uns das Bibliotheksverwaltungssystem weiter ausbauen, indem wir die Klassen Book und User aus der vorherigen Lektion erweitern. Jetzt fügen Sie die Möglichkeit für Benutzer hinzu, Bücher auszuleihen, wodurch eine echte Verbindung zwischen diesen beiden Entitäten entsteht.

Sie werden Ihren Code über drei Dateien organisieren:

  • Book.java: Erweitern Sie Ihre Book-Klasse aus der vorherigen Herausforderung. Behalten Sie alle vorhandenen Funktionen bei (isbn, title, author, isAvailable mit Gettern/Settern und getDetails()). Fügen Sie nun ein privates Feld borrowedBy vom Typ String hinzu, das die ID des Benutzers speichert, der das Buch ausgeliehen hat (oder null, wenn es nicht ausgeliehen ist). Fügen Sie einen Getter für borrowedBy und einen Setter hinzu, der auch isAvailable entsprechend aktualisiert – wenn ein Buch ausgeliehen wird (borrowedBy wird auf einen Wert ungleich Null gesetzt), wird es nicht verfügbar; wenn es zurückgegeben wird (auf null gesetzt), wird es wieder verfügbar.
  • User.java: Erweitern Sie Ihre User-Klasse, um ausgeliehene Bücher zu verfolgen. Behalten Sie die vorhandenen Felder id, name, den Konstruktor, die Getter und toString() bei. Fügen Sie ein privates ArrayList<Book>-Feld namens borrowedBooks hinzu (initialisieren Sie es im Konstruktor). Erstellen Sie eine Methode borrowBook(Book book), die das Buch zur Liste des Benutzers hinzufügt und borrowedBy des Buches auf die ID dieses Benutzers setzt. Erstellen Sie eine Methode returnBook(Book book), die das Buch aus der Liste entfernt und borrowedBy auf null setzt. Fügen Sie eine Methode getBorrowedCount() hinzu, die zurückgibt, wie viele Bücher der Benutzer derzeit hat.
  • Main.java: Demonstrieren Sie das Ausleihsystem in Aktion. Sie erhalten fünf Eingaben: ISBN, Titel, Autor für ein Buch, dann Benutzer-ID und Name.

    Erstellen Sie ein Book und einen User mit diesen Eingaben. Geben Sie die Details des Buches und den Verfügbarkeitsstatus aus. Lassen Sie dann den Benutzer das Buch ausleihen. Geben Sie die Verfügbarkeit des Buches erneut aus, gefolgt davon, wer es ausgeliehen hat, im Format Borrowed by: [userId]. Geben Sie aus, wie viele Bücher der Benutzer hat, im Format [name] has [count] book(s). Lassen Sie schließlich den Benutzer das Buch zurückgeben und geben Sie die Verfügbarkeit ein letztes Mal aus.

Sie erhalten fünf Eingaben in der Reihenfolge: ISBN (String), Titel (String), Autor (String), Benutzer-ID (String) und Benutzername (String).

Zum Beispiel, mit den Eingaben 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 und Alice, wäre Ihre Ausgabe:

[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
Available: false
Borrowed by: U001
Alice has 1 book(s)
Available: true

Diese Herausforderung baut direkt auf Ihrer vorherigen Arbeit auf und fügt die entscheidende Beziehung zwischen Büchern und Benutzern hinzu, die ein Bibliothekssystem funktionsfähig macht. Sie verwenden Komposition (User "hat" Books) und sehen, wie Änderungen an einem Objekt ein anderes durch gut gestaltete Methoden beeinflussen können!

Probier es selbst

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Buchinformationen lesen
        String isbn = scanner.nextLine();
        String title = scanner.nextLine();
        String author = scanner.nextLine();
        
        // Benutzerinformationen lesen
        String userId = scanner.nextLine();
        String userName = scanner.nextLine();
        
        // Ein Book-Objekt mit isbn, title und author erstellen
        Book book = new Book(isbn, title, author);
        
        // Ein User-Objekt mit userId und userName erstellen
        User user = new User(userId, userName);
        
        // Die Details des Buches mit getDetails() ausgeben
        System.out.println(book.getDetails());
        
        // Ausgeben, ob das Buch verfügbar ist (Format: "Available: true" oder "Available: false")
        System.out.println("Available: " + book.isAvailable());
        
        // Den Benutzer das Buch ausleihen lassen
        user.borrowBook(book);
        
        // Die Verfügbarkeit des Buches erneut ausgeben
        System.out.println("Available: " + book.isAvailable());
        
        // Ausgeben, wer es ausgeliehen hat
        System.out.println("Borrowed by: " + book.getBorrowedBy());
        
        // Ausgeben, wie viele Bücher der Benutzer hat
        System.out.println(user.getName() + " has " + user.getBorrowedCount() + " book(s)");
        
        // Den Benutzer das Buch zurückgeben lassen
        user.returnBook(book);
        
        // Die Verfügbarkeit noch einmal ausgeben
        System.out.println("Available: " + book.isAvailable());
    }
}

Alle Lektionen in Objektorientierte Programmierung