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

Fahren wir mit dem Aufbau des Library Management System fort, indem wir die Book- und User-Klassen aus der vorherigen Lektion erweitern. Jetzt fügst du die Möglichkeit hinzu, dass Benutzer Bücher ausleihen können, wodurch eine echte Verbindung zwischen diesen beiden Entitäten entsteht.

Du wirst deinen Code auf drei Dateien verteilen:

  • Book.java: Erweitere deine Book-Klasse aus der vorherigen Herausforderung. Behalte alle bestehenden Funktionen bei (isbn, title, author, isAvailable mit Gettern/Settern und getDetails()). Füge 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üge einen Getter für borrowedBy und einen Setter hinzu, der außerdem 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: Erweitere deine User-Klasse, um ausgeliehene Bücher zu verwalten. Behalte die bestehenden id, name, den Constructor, die Getter und toString() bei. Füge ein privates Feld vom Typ ArrayList<Book> mit dem Namen borrowedBooks hinzu (Initialize es im Constructor). Erstelle eine borrowBook(Book book)-Methode, die das Buch zur Liste des Benutzers hinzufügt und borrowedBy des Buches auf die ID dieses Benutzers setzt. Erstelle eine returnBook(Book book)-Methode, die das Buch aus der Liste entfernt und borrowedBy auf null setzt. Füge eine getBorrowedCount()-Methode hinzu, die zurückgibt, wie viele Bücher der Benutzer derzeit hat.
  • Main.java: Zeige das Ausleihsystem in Aktion. Du erhältst fünf Eingaben: ISBN, title und author eines Buches, anschließend die Benutzer-ID und den Namen.

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

Du erhältst fünf Eingaben in dieser Reihenfolge: ISBN (String), title (String), author (String), Benutzer-ID (String) und Benutzername (String).

Wenn die Eingaben beispielsweise 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 und Alice lauten, wäre deine 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 deiner vorherigen Arbeit auf und fügt die entscheidende Beziehung zwischen Büchern und Benutzern hinzu, die ein Library Management System funktionsfähig macht. Du wirst Komposition verwenden (User "has" Books) und sehen, wie Änderungen an einem Objekt über gut gestaltete Methoden ein anderes Objekt 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 Buchs mit getDetails() ausgeben
        System.out.println(book.getDetails());
        
        // Print whether the book is available (format: "Available: true" or "Available: false")
        System.out.println("Available: " + book.isAvailable());
        
        // Den Benutzer das Buch ausleihen lassen
        user.borrowBook(book);
        
        // Die Verfügbarkeit des Buchs 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

Übe selbstständig: Online-Java-Compiler