Erstellen Sie eine Klassenhierarchie zur Erfassung von Büchern.
-
In der Hierarchie gibt es eine Oberklasse Buch, in
der sich Informationen über den Autor, den Titel und die ISBN-Nummer
eines Buches ablegen lassen.
Die Klasse stellt einen Konstruktor zur Verfügung, mit dem sich
diese Daten bei der Erstellung einer Klasseninstanz als
Zeichenketten erfassen lassen.
Für den Fall, dass keine ISBN-Nummer vorhanden ist, existiert ein
zweiter Konstruktor. Dieser besitzt keinen Parameter für die
ISBN-Nummer. Anstatt dessen wird im Konstruktorrumpf der Vorgabewert
"n. v." (= "nicht vorhanden") für die ISBN-Nummer eingetragen.
Dieser Konstruktor erlaubt die Speicherung von z. B. historischen
Werken, die vor der Einführung der ISBN-Nummer verfasst wurden.
Die Klasse soll ebenfalls die automatische
Methode String toString() für die Ausgabe
der gespeicherten Informationen besitzen. Siehe die Beispielausgabe unten, zu deren inhaltlichen Aufbau.
Zur
Erinnerung: Wenn die Methode String toString() in einem Objekt existiert,
wird diese automatisch vom Laufzeitsystem aufgerufen, wenn eine
Zeichenkettendarstellung des Objekts erforderlich
ist (siehe hierzu auch die Übungsaufgabe
"Kundenverwaltung" auf dem letzten Übungsblatt).
-
Die Oberklasse Buch besitzt eine Unterklasse Sachbuch,
die es erlaubt, zusätzlich das Fachgebiet (Informatik,
Kunstgeschichte, Medizin usw.), dem das Buch zuzuordnen ist,
abzuspeichern. Auch diese Klasse bietet einen Konstruktor zur
Erfassung der Buchdaten, bei der Erstellung einer Klasseninstanz. Um
Redundanz zu vermeiden, basiert dieser jedoch auf dem Konstruktor
der Oberklasse. Dies gilt auch für die Ausgabe der Buchdaten, die
unter Ausnutzung der korrespondierenden Methode der Oberklasse
stattfindet.
-
Buch besitzt eine weitere Unterklasse: Roman.
Roman erlaubt es, das Genre (Liebesroman,
Abenteuerroman usw.), dem das Buch zuzurechnen ist, abzuspeichern.
Auch für diese Klasse existiert ein Konstruktor für die
Datenerfassung und eine Methode für die Datenausgabe, die jeweils
die korrespondierenden Methoden der Oberklasse nutzen.
-
Zur Vereinfachung und Standardisierung der Dateneingabe ist es
sinnvoll, Buchklassen einzuführen, die spezielle, häufig auftretende
Sachbucharten repräsentieren. Für diese Bücher wird das Fachgebiet
bei der Erstellung einer Instanz automatisch eingetragen.
Implementieren Sie exemplarisch die Klasse Medizinbuch,
für die Erfassung medizinischer Fachliteratur. Hier ist der
voreingestellte Wert "Medizin". Auch diese Klasse besitzt einen
Konstruktor für die Datenerfassung und eine Methode zur
Datenausgabe. Implementieren Sie die Klasse in möglichst effizienter
Weise, unter Ausnutzung vorhandener Klassen der Klassenhierarchie.
-
Schreiben Sie zum Testen Ihrer Klassenhierarchie ein Hauptprogramm.
Speichern Sie im Programm mindestens die folgenden Bücher ab und
geben Sie deren Daten nachfolgend auf die Konsole aus:
- R. Descartes: "Meditationen", keine ISBN-Nummer vorhanden
- J. W. v. Goethe: "Die Leiden des jungen Werther", keine
ISBN-Nummer vorhanden
- H. P. Gumm und M. Sommer: "Einführung in die Informatik", ISBN:
3-486-25635-1
- W. Pschyrembel: "Klinisches Wörterbuch", ISBN: 3-11-010881-255
Diese sollten die folgende Ausgabe liefern:
Autor: R. Descartes, Titel: Meditationen, ISBN: n. v.
Autor: J. W. v. Goethe, Titel: Die Leiden des jungen Werther,
ISBN: n. v., Genre: Liebesroman
Autor: H. P. Gumm und M. Sommer, Titel: Einführung in die Informatik,
ISBN: 3-486-25635-1, Fachgebiet: Informatik
Autor: W. Pschyrembel, Titel: Klinisches Wörterbuch,
ISBN: 3-11-010881-255, Fachgebiet: Medizin