Polymorphy in Java - Aufgabe
-
Guten Abend Forum,
ich sitze hier gerade an einer Aufgabe aus der Uni und weiß nicht so recht was gemeint ist bzw wie ich sie lösen soll.
Folgende Situation :
Es gibt 2 Interfaces und eine abstrakte Klasse names Angestellter.
Aufgabenstellung :
Man soll die Funtkion "streikt", die ermittelt, on dieser Angestellter streikt, implementieren.Die Kosten eines Angestellten ergeben sich aus dem Produkt vom Gehalt und
der Gehaltskurzung. (Die Gehaltskurzung bezeichnet dabei sinnvollerweise einen
Wert zwischen 0.0 und 1.0). Verwenden Sie sinnvolle Datentypen, um die Werte
zu speichern!Das ist natürlich klar. Einfach
double kosten = gehalt*gehaltskuerzung ;
Falls der Angestellte das Interface Gewissen unterstüutzt, dann verringern sich
seine Kosten um den durch sein Gewissen ermittelten Wert (in Abhangigkeit
von den entlassungen).Falls der Angestellte das Interface Aktionaer unterstutzt, dann erhohen sich
seine Kosten um den durch Aktionaer ermittelten Wert (in Abhangigkeit von
den entlassungen und dem aktienwert).Ab hier verstehe ich Bahnhof. Dass die Klasse Angestellter weder das Interface Gewissen noch das Interface Aktionaer untersützt bzw. implementiert, sehe ich an deren Deklaration :
abstract class Angestellter { }
Mag sein, dass eine Unterklasse von Angestellter dieses implementiert ( das ist auch tatsächlich der Fall ), aber wieso sollte ich das in der Funktion von Angestellter prüfen??
Ich weiß, dass wohl auf irgendeinisinstanceof
hinaus gekommen werden soll, aber ich weiß nicht wie.
Die Funktion
boolean streikt ( double gehaltskuerzung , int entlassungen , double aktienwert )
ist auch nicht abstract. Wäre sie das, wäre es natürlich einfach logisch, sie in den Unterklassen von Angestellter zu überschreiben und somit die richtigen Ergebnise zu bekommen, auch wenn man zB
Angestellter aInst = new Arbeiter ( 500 ); System.out.print ( aInst.streikt() );
macht.
Am Ende wird genau so ein Verhalten angestrebt, aber ich weiß nicht wie das mit den Implementierungsvorgaben von streikt() machen soll.Man wird ja auch wohl kaum von einer Überklasse ( Angestellter : this ) in eine Unterklasse ( dynamischer Typ ) ( Arbeiter ) casten können a la (Arbeiter)this.arbeiterFunc();
-
Wayne - kann geschlossen werden. Es compilt -> es funktioniert ( autocognito ) .