Projektübersicht & UML-Entwurf
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy. Lektion 77 von 87.
Aufgabe
EinfachBeginnen wir das Projekt „Bibliotheksverwaltungssystem“, indem wir das Fundament schaffen: die zentralen Entitätsklassen, von denen alles Weitere abhängen wird. Diese erste Aufgabe konzentriert sich auf die Erstellung gut strukturierter Klassen Book und User, die die zentralen Entitäten des Systems modellieren.
Du wirst deinen Code auf drei Dateien verteilen:
Book.java: Erstelle die KlasseBook, die ein Bibliotheksbuch repräsentiert. Jedes Buch sollte private Felder fürisbn(String),title(String),author(String) undisAvailable(boolean, standardmäßigtrue) besitzen. Füge einen Konstruktor hinzu, der isbn, title und author entgegennimmt. Stelle geeignete Getter-Methoden für alle Felder sowie einen Setter fürisAvailablebereit. Füge eine MethodegetDetails()hinzu, die einen formatierten String zurückgibt:[isbn] title by author.User.java: Erstelle die KlasseUser, die ein Bibliotheksmitglied repräsentiert. Jeder Benutzer sollte private Felder fürid(String) undname(String) besitzen. Füge einen Konstruktor hinzu, der beide Werte entgegennimmt, und stelle Getter-Methoden für jedes Feld bereit. Füge eine MethodetoString()hinzu, die Folgendes zurückgibt:User[id]: name.Main.java: Führe deine Klassen zusammen, um zu demonstrieren, dass sie korrekt funktionieren. Du erhältst vier Eingaben: die ISBN, den Titel und den Autor eines Buches sowie anschließend die ID und den Namen eines Benutzers.Erstelle mit den ersten drei Eingaben ein
Bookund mit den letzten beiden Eingaben einUser. Gib die Buchdetails mithilfe vongetDetails()aus und gib anschließend aus, ob das Buch verfügbar ist, und zwar im FormatAvailable: trueoderAvailable: false. Gib schließlich den Benutzer mithilfe seiner MethodetoString()aus.
Du erhältst fünf Eingaben in dieser Reihenfolge: ISBN (String), Titel (String), Autor (String), Benutzer-ID (String) und Benutzername (String).
Bei den Eingaben 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 und Alice Smith würde deine Ausgabe beispielsweise wie folgt aussehen:
[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
User[U001]: Alice SmithDiese grundlegenden Klassen werden als Bausteine für das gesamte Bibliotheksverwaltungssystem dienen. In den kommenden Lektionen wirst du sie um Ausleihfunktionen, Suchfunktionen und mehr erweitern!
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();
// TODO: Erstelle ein Book-Objekt mit isbn, title und author
// TODO: Erstelle ein User-Objekt mit userId und userName
// TODO: Gib die Details des Buchs mit getDetails() aus
// TODO: Print whether the book is available (format: "Available: true" or "Available: false")
// TODO: Gib den Benutzer mit toString() aus
}
}
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort thisMethodenFelder (Attribute)KonstruktormethodeÜberladen von KonstruktorenRückblick – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbung (extends)Das Schlüsselwort superÜberschreiben von Methoden (@Override)KonstruktorverkettungDie Object-KlasseEinfach- und mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenRückblick – Mitarbeiterhierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-SchnittstelleRückblick – Benutzerdefinierte Sortierung10Exception Handling in OOP
Hierarchie der Exception-KlassenBenutzerdefinierte ExceptionsGeprüfte vs. ungeprüfte FehlerTry-with-Resources-MusterRückblick – Validierter Benutzer13Projekt: Bibliotheksverwaltung
Projektübersicht & UML-EntwurfBuch- und BenutzerklassenAusleihsystemSuchfunktionalitätAdministrationsoberflächeIntegration der AusnahmebehandlungTesten und Integration2Zugriffsmodifikatoren & Kapselung
Übersicht der ZugriffsebenenGetter- und Setter-MethodenInformationsverbergungDas Schlüsselwort finalRückblick – Bankkontoverwaltung5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenRückblick – Formrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, verschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Versiegelte Klassen (Java 17+)11Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterBuilder-MusterObserver-MusterStrategie-Muster14Abschließende Herausforderungen
E-Learning-PlattformBankingsystemEntwicklung einer SpielfigurFahrzeugvermietungsdienst3Klassen-Props & statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Wiederholung – Counter & Utility6Schnittstellen & abstrakte Klassen
Einführung in InterfacesInterfaces implementierenMehrere Interfaces implementierenDefault & Static in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesRückblick – ZahlungssystemÜbe selbstständig: Online-Java-Compiler