Beispiel 1: ''Personenverwaltung erweitert um abstrakte Klassen''
Erweitern Sie Beispiel 1 wie folgt:
- 1. abstrakte Klasse Person
- Diese Klasse soll als abstrakte Klasse deklariert werden und
private Instanzvariablen zum Speichern des Vornamens, des Nachnamens,
des Geburtsjahres und des Grundgehalts (in Euro) sowie entsprechende
Zugriffsmethoden besitzen. Eine Methode getAlter() soll das Alter
einer Person unter Zuhilfenahme der Klasse java.util.Date
berechnen.
Zusätzlich soll es eine konkrete Methode getGehalt() geben,
die das Gehalt einer Person auf der Basis eines Grundgehalts
plus einem Zuschlag wie folgt berechnet: Ein Arbeiter erhält einen
Zuschlag, der vom Alter abhängt (ab einem Alter von 30 Jahren
einen Zuschlag von 100 Euro; für jedes weitere Jahr 10 Euro), während
ein Angestellter einen fixen Zuschlag (50 Euro) pro Qualifikation
bekommt. Zu diesem Zweck soll eine abstrakte Methode getZuschlag()
zur abstrakten Klasse Person hinzugefügt und innerhalb von
getGehalt() verwendet werden.
- 2. Klassen Arbeiter und Angestellter
-
Es sollen zwei konkrete (nicht-abstrakte) Unterklassen Arbeiter und Angestellter
von der abstrakten Klasse Person abgeleitet werden. Die Unterklasse Angestellter
hat eine zusätzliche Instanzvariable
für die Qualifikationen sowie eine entsprechende Zugriffsmethode.
Qualifikationen sollen in einem String-Array gespeichert werden.
Beide Klassen sollen die Methode getZuschlag() implementieren.
- 3. abstrakte Klasse PersonenFileReader
-
Diese Klasse soll das Lesen von Personendatenfiles kapseln und
einen Konstruktor, dem der Filename übergeben wird
sowie konkrete Methoden zum Öffnen und Schließen implementieren.
Des Weiteren muss eine abstrakte Methode readNext() realisiert werden,
die die Daten einer Person zurückliefert.
-
-
Anstatt eines Personendatenfiles soll es 2 separate Files für Arbeiter (Bsp)
und Angestellte (Bsp) geben. Das Format ist für beide Files
identisch, wobei jedoch ein Angestellter zusätzlich einen Eintrag mit Qualifikationen
aufweist.
Die Qualifikationen eines Angestellten sind als String getrennt durch einen ";"
in einer Zeile abgespeichert.
- 4. Klassen ArbeiterFileReader und AngestelltenFileReader
-
Diese beiden Klassen sind konkrete Unterklassen der abstrakten Klasse PersonenFileReader, die
die Methode readNext() implementieren. Beachten Sie, dass diese Methode unterschiedlich
zu realisieren ist, je nachdem ob aus dem Angestellten- oder Arbeiterfile gelesen wird.
- 5. Klasse PersonenVerwaltung
-
Diese Klasse soll eine Methode zum Einlesen von Personen (Arbeiter und
Angestellte) aus den genannten Files (unter Verwendung der Klassen
ArbeiterFileReader und AngestelltenFileReader) und zur internen
Speicherung von Personen-Objekten in einem privaten Objekt der Klasse
java.util.LinkedList sowie Methoden zur Berechnung und Ausgabe
folgender Daten enthalten:
- Gesamtzahl der erfassten Personen
- Gesamtzahl der Arbeiter
- Gesamtzahl der Angestellten
- Durchschnittsalter aller Personen
- Durchschnittsalter aller Arbeiter
- Durchschnittsalter aller Angestellten
- Durchschnittsgehalt aller Personen
- Durchschnittsgehalt aller Arbeiter
- Durchschnittsgehalt aller Angestellten
- jüngste Person(en),
- jüngste(n) Arbeiter,
- jüngste(n) Angestellte(n),
- älteste Person(en),
- älteste(n) Arbeiter,
- älteste(n) Angestellte(n),
- Anzahl der Personen, deren Gehalt geringer als der Durchschnittsgehalt ist
- Anzahl der Arbeiter, deren Gehalt geringer als der
durchschnittliche Gehalt eines Arbeiters ist
- Anzahl der Angestellten, deren Gehalt geringer als der
durchschnittliche Gehalt eines Angestellten ist
- 6. Klasse TestPersonenVerwaltung
- Diese Klasse soll die Methode main() implementieren und mittels einer Instanz der
Klasse PersonenVerwaltung die geforderte Funktionalität realisieren.
-
Die Ausführung des Programms soll mit folgender Anweisung möglich sein
(wobei arbFilename und angFilename
die jeweiligen Namen des Arbeiterdaten- und des Angestelltendaten-Files sind):
java TestPersonenVerwaltung arbFilename angFilename
Abgabemodalitäten:
Abgabetermin: Kalenderwoche 17
Minimalanforderungen für die Abgabe:
- 1. Demonstration des lauffähigen Programms mit sinnvollen Fehlermeldungen.
- 2. Ausführlich dokumentierter (javadoc) Quelltext mit Name und
Matrikelnummer.
- 3. Mit javadoc erstellte HTML Dokumentation.
-
Aufruf von javadoc z.B.: javadoc -d docs -author *.java
-
- Anmerkung:
- Zur Abgabe des fertigen Java-Programms (inklusive Dokumentation) erstellen
Sie in Ihrem Home-Verzeichnis ein Verzeichnis
abgabe2, das alle
Source- und Class-Files
sowie ein Unterverzeichnis docs mit der HTML
Dokumentation enthält.
-