Die Aufgabe
Aufgabe 7
Gegeben sind die folgenden beiden Klassen „EMailAgent“ und „ChatAgent“:
public class EMailAgent { private String mailAdresse; public EMailAgent(String mailAdresse) { this.mailAdresse = mailAdresse; }} public class ChatAgent { private String chatGruppe; public ChatAgent(String chatGruppe) { this.chatGruppe = chatGruppe; }}a) Schreiben Sie ein Interface „NachrichtenAgent“, das eine Methode „sende“ deklariert. Diese Methode hat einen Parameter vom Typ String.
b) Es soll sichergestellt werden, dass sowohl EMailAgenten als auch ChatAgenten das in dem Interface definierte Verhalten aufweisen. Beim Senden soll auf der Konsole „Sende Nachricht nachrichtentext an mailAdresse“ bzw. „Sende Nachricht nachrichtentext an chatGruppe“ ausgegeben werden (nachrichtentext, mailAdresse chatGruppe jeweils durch die betreffenden Attributwerte ersetzt). Welche Änderungen müssen in der Klasse EMailAgent und ChatAgent durchgeführt werden? Geben Sie hierfür die geänderten bzw. hinzugefügten Codezeilen an.
c) Schreiben Sie eine Klasse „NachrichtenApp“ mit einer main-Methode und einer statischen Methode „versendeNachricht“, der man als Argument einen EMailAgent oder einen ChatAgent übergeben kann. Diese Methode ruft die sende-Methode des Agenten auf und übergibt Ihr den String „Test-Nachricht“. Legen Sie in der main-Methode ein EMailAgent-Objekt und ein ChatAgent-Objekt an und rufen Sie für beide die Methode „versendeNachricht“ auf.
Gegeben sind zwei Klassen, die noch nichts tun: Sie speichern nur eine Adresse bzw. einen Gruppennamen. Gesucht sind drei Dinge: a) ein Interface mit der Methode sende, b) die Änderungen an den zwei Klassen, damit beide senden können, c) eine kleine App, die beide Agenten ausprobiert.
- a) Das Interface NachrichtenAgent mit sende(String).
- b) Beide Klassen implementieren das Interface und schreiben sende aus.
- c) versendeNachricht mit dem Interface als Parametertyp, dann main.
Zu dieser Probeklausur gibt es keine Musterlösung. Die Lösung hier ist selbst erarbeitet und als echtes Programm übersetzt und ausgeführt. Jeder Typ steht in einer eigenen Datei, weil alle public sind.