Projektübersicht & UML-Design
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy — Lektion 77 von 87.
Aufgabe
EinfachLassen Sie uns das Projekt Bibliotheksverwaltungssystem starten, indem wir das Fundament legen – die Kern-Entitätsklassen, von denen alles andere abhängen wird. Diese erste Herausforderung konzentriert sich auf die Erstellung gut strukturierter Book- und User-Klassen, die dem UML-Design aus der Lektion folgen.
Sie werden Ihren Code über drei Dateien organisieren:
Book.java: Erstellen Sie die KlasseBook, die ein Bibliotheksbuch darstellt. Jedes Buch sollte private Felder fürisbn(String),title(String),author(String) undisAvailable(boolean, standardmäßig auftruegesetzt) haben. Fügen Sie einen Konstruktor hinzu, der isbn, title und author akzeptiert. Stellen Sie entsprechende Getter-Methoden für alle Felder und einen Setter fürisAvailablebereit. Fügen Sie eine MethodegetDetails()hinzu, die einen formatierten String zurückgibt:[isbn] title by author.User.java: Erstellen Sie die KlasseUser, die ein Bibliotheksmitglied darstellt. Jeder Benutzer sollte private Felder fürid(String) undname(String) haben. Fügen Sie einen Konstruktor hinzu, der beide Werte akzeptiert, und stellen Sie Getter-Methoden für jedes Feld bereit. Fügen Sie eine MethodetoString()hinzu, die Folgendes zurückgibt:User[id]: name.Main.java: Bringen Sie Ihre Klassen zusammen, um zu demonstrieren, dass sie korrekt funktionieren. Sie erhalten vier Eingaben: die ISBN eines Buches, den Titel, den Autor und dann die ID und den Namen eines Benutzers.Erstellen Sie ein
Bookmit den ersten drei Eingaben und einenUsermit den letzten beiden Eingaben. Geben Sie die Details des Buches mitgetDetails()aus und geben Sie dann aus, ob das Buch verfügbar ist, im FormatAvailable: trueoderAvailable: false. Geben Sie schließlich den Benutzer mit seiner MethodetoString()aus.
Sie erhalten nacheinander fünf Eingaben: ISBN (String), title (String), author (String), user ID (String) und user name (String).
Zum Beispiel, mit den Eingaben 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 und Alice Smith, wäre Ihre Ausgabe:
[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
User[U001]: Alice SmithDiese grundlegenden Klassen dienen als Bausteine für das gesamte Bibliotheksverwaltungssystem. In den kommenden Lektionen werden Sie diese 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: Gib aus, ob das Buch verfügbar ist (Format: "Available: true" oder "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 this-SchlüsselwortMethodenFelder (Attribute)Konstruktor-MethodeKonstruktor-ÜberladungRückblick – Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (extends)Das super-SchlüsselwortMethoden überschreiben (@Override)Konstruktor-VerkettungDie Object-KlasseEinfache & mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenZusammenfassung - Mitarbeiter-Hierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-InterfaceZusammenfassung – Benutzerdefiniertes Sortieren10Ausnahmebehandlung in OOP
Exception-KlassenhierarchieBenutzerdefinierte ExceptionsChecked vs. Unchecked ErrorsTry-With-Resources-PatternRecap – Validierter Benutzer13Projekt: Bibliotheksverwaltung
Projektübersicht & UML-DesignBuch- und Benutzerklassen2Zugriffsmodifikatoren & Kapselung
Überblick über ZugriffsebenenGetter- und Setter-MethodenInformation HidingDas final-SchlüsselwortRückblick – Bankkonto-Manager5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenZusammenfassung – Formenrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, geschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Sealed Classes (Java 17+)11Design Patterns Teil 1
Einführung in Design PatternsSingleton-PatternFactory-PatternBuilder-PatternObserver-PatternStrategy-Pattern14Abschlussherausforderungen
E-Learning-PlattformBanksystemSpielcharakter-EntwicklungFahrzeugvermietung3Klasseneigenschaften & Statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Zusammenfassung – Zähler & Utility6Interfaces & Abstrakte Klassen
Einführung in InterfacesInterfaces implementierenImplementierung mehrerer InterfacesDefault- & statische Methoden in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesZusammenfassung - Zahlungssystem