Inhalt
Unternehmensstruktur - Wiederholung Jahrgang 4
Aufgabenstellung
In dieser Aufgabe geht es darum, ein einfaches Hierarchiesystem für ein Unternehmen zu erstellen. In einem Unternehmen gibt es verschiedene Arten von Angestellten: Manager, Entwickler und Praktikanten. Jeder Angestellte hat einen Namen, eine Personalnummer und ein Gehalt. Zudem haben Manager eine Bonuszahlung, und Entwickler haben eine Programmiersprache, in der sie spezialisiert sind.
Setze die Teile 1-5 um und teste jeweils in der Klasse Main
. Implementiere anschließend die weiteren Aufgaben.
Teil 1: Basisklasse Angestellter
- Erstelle eine Klasse
Angestellter
mit den folgenden Attributen:name
(String)personalNummer
(int)gehalt
(double)
- Füge der Klasse
Angestellter
einen Konstruktor und die entsprechenden Getter- und Setter-Methoden hinzu. - Füge eine Methode
informationenAusgeben()
hinzu, die Name, Personalnummer und Gehalt auf der Konsole ausgibt.
Teil 2: Managerklasse
- Erstelle eine Klasse
Manager
, die von der KlasseAngestellter
erbt. - Füge der Klasse
Manager
ein zusätzliches Attributbonus
(double) hinzu. - Erstelle einen Konstruktor, der alle Attribute der Klasse initialisiert, inklusive des Attributes der Basisklasse.
- Überschreibe die Methode
informationenAusgeben()
, sodass sie auch den Bonus des Managers ausgibt.
Teil 3: Entwicklerklasse
- Erstelle eine Klasse
Entwickler
, die ebenfalls vonAngestellter
erbt. - Füge ein Attribut
programmiersprache
(String) hinzu. - Erstelle einen Konstruktor, der alle Attribute initialisiert.
- Überschreibe die Methode
informationenAusgeben()
entsprechend.
Teil 4: Praktikantenklasse
- Erstelle eine Klasse
Praktikant
, die vonAngestellter
erbt. - Da Praktikanten kein Gehalt erhalten, sollte der Gehalt für Praktikanten standardmäßig auf 0 gesetzt werden.
- Überschreibe falls nötig den Konstruktor und die
informationenAusgeben()
Methode.
Teil 5: Hauptklasse
- In der
main
Methode derHauptklasse
:- Erstelle Objekte der Klassen
Manager
,Entwickler
undPraktikant
. - Initialisiere die Objekte mit passenden Werten.
- Rufe für jedes Objekt die Methode
informationenAusgeben()
auf.
- Erstelle Objekte der Klassen
- Erstelle ein Array, in dem alle erstellten Objekte gespeichert werden können
- Füge alle erstellten Objekte in das Array ein
- Iteriere über das Array und gib alle Informationen mit der Methode
informationenAusgeben()
aus (Prinzip der “Vielgestaltigkeit (Polymorphie”)
Hinweise zur Umsetzung
- Nutze die
super
-Schlüsselwort, um auf den Konstruktor der Basisklasse zuzugreifen und um Methoden der Basisklasse aufzurufen. - Verwende die
@Override
-Annotation, um Methoden zu überschreiben.
Beispiel für den erwarteten Output
Manager:
Name: Anna Schmidt
Personalnummer: 12345
Gehalt: 60000.0
Bonus: 15000.0
Entwickler:
Name: Max Mustermann
Personalnummer: 12346
Gehalt: 45000.0
Programmiersprache: Java
Praktikant:
Name: Tim Maier
Personalnummer: 12347
Gehalt: 0.0
Teil 6: Statische Variable für Personalnummer
- Ändere die Art und Weise, wie Personalnummern vergeben werden, indem du eine statische Variable und Methode einführst.
- In der Klasse
Angestellter
, erstelle eine private statische VariableletztePersonalNummer
, die mit 0 initialisiert wird. - Erstelle eine private statische Methode
naechstePersonalNummer()
, dieletztePersonalNummer
um 1 erhöht und den neuen Wert zurückgibt. - Ändere den Konstruktor der Klasse
Angestellter
, sodass er die MethodenaechstePersonalNummer()
aufruft, um eine Personalnummer für jeden neuen Angestellten zu generieren.
Hinweise zur Umsetzung
- Statische Variablen werden mit dem Schlüsselwort
static
deklariert und sind für alle Instanzen der Klasse gemeinsam. - Statische Methoden können direkt in statischen Kontexten (andere statische Methoden oder statische Initialisierer) aufgerufen werden, ohne eine Instanz der Klasse zu erstellen.
- Da die Methode
naechstePersonalNummer()
nur innerhalb der KlasseAngestellter
verwendet wird, sollte sie alsprivate
deklariert werden.
Diese Erweiterung stellt sicher, dass jede Personalnummer eindeutig ist und automatisch generiert wird, und demonstriert die Verwendung von statischen Variablen und Methoden in Java.
Teil 7: Verwenden eines Interfaces zum Sortieren des Arrays
- Sortiere das Array nach dem Gehalt (aufsteigend)
- Verwende dazu die Methode
Arrays.sort()
ausjava.util.Arrays
- Implementiere das benötigte Interface
Comparable
in der KlasseAngestellter
- Verwende dazu die Methode
Teil 8: Exception Handling Gehalt und Bonus Validation
- Gehalt-Validierung
- In der Klasse
Angestellter
soll das Gehalt nicht negativ sein. Wenn ein negativer Wert für das Gehalt gesetzt wird, wirf eine benutzerdefinierte ExceptionUngueltigesGehaltException
.
- In der Klasse
- Bonus-Validierung
- In der Klasse
Manager
darf der Bonus nicht negativ sein. Wenn ein negativer Wert für den Bonus gesetzt wird, wirf ebenfalls eineUngueltigesGehaltException
.
- In der Klasse
Erstellung der benutzerdefinierten Exception
- Erstelle eine neue Klasse namens
UngueltigesGehaltException
, die vonException
erbt. - Gib der Klasse einen Standardkonstruktor, der eine Fehlermeldung an den Konstruktor der Superklasse übergibt.
Implementierung der Exception in den Klassen
- In den Setter-Methoden für das Gehalt und den Bonus, überprüfe den Wert und wirf eine
UngueltigesGehaltException
, wenn der Wert negativ ist.
Behandlung der Exception in der Hauptklasse
- Umfasse den Code, der die Objekte erstellt und initialisiert, in der
main
-Methode derHauptklasse
mit einemtry
-Block. - Fange die
UngueltigesGehaltException
im zugehörigencatch
-Block ab und gib eine entsprechende Fehlermeldung auf der Konsole aus.
Beispielcode
// UngueltigesGehaltException.java
public class UngueltigesGehaltException extends Exception {
public UngueltigesGehaltException(String nachricht) {
super(nachricht);
}
}
// Angestellter.java
public class Angestellter {
// ...
public void setGehalt(double gehalt) throws UngueltigesGehaltException {
if (gehalt < 0) {
throw new UngueltigesGehaltException("Gehalt darf nicht negativ sein!");
}
this.gehalt = gehalt;
}
}
// Manager.java
public class Manager extends Angestellter {
// ...
public void setBonus(double bonus) throws UngueltigesGehaltException {
if (bonus < 0) {
throw new UngueltigesGehaltException("Bonus darf nicht negativ sein!");
}
this.bonus = bonus;
}
}
// Hauptklasse.java
public class Hauptklasse {
public static void main(String[] args) {
try {
Manager manager = new Manager("Anna Schmidt", 60000.0);
manager.setBonus(15000.0);
// ...
} catch (UngueltigesGehaltException e) {
e.printStackTrace();
}
}
}
Programmieren in Java - Projekte
- Einkaufsliste
- Statische Variablen und Methoden und Vererbung
- Unternehmensstruktur - Wiederholung Jahrgang 4
- Rekursion