Hallo, ich soll mich mit abstract und interface anfreunden und ein "Chat" Programm schreiben. Jedoch bin ich total unzufrieden und leicht verwirrt, deswegen erhoffe ich mir hier ein wenig Hilfe.
Soweit die Klassen:
interface Nachricht> wird von abstractNachricht implementiert
abstractNachricht > verwaltet die Sender id und Empfänger id die über dem Konstruktor überreicht werden
stringNachricht > (Oberklasse) verwaltet den String der über dem Konstruktor überreicht wird und ist extends von abstractNachricht
WasGehtMessage > (Unterklasse) erstellt einen Standard Text wie "Hi" und ist extends von TextMessage
Hier an der Stelle hätte ich schon ein paar Fragen da ich denke hier Fehler gemacht zu haben. Es sollte aber noch erwähnt werden das es ein ChatTool.java gibt die sendet, empfängt und die Kontakte verwaltet. Bei der send Methode gibt es ein Überladung damit jedes Format (Nachricht, stringNachricht und WasGehtMessage) angenommen wird. Wichtig ist auch das ChatTool.java keinerlei Strings annimmt. Das bedeutet, dass die Nachrichten als Object angenommen und weiter gegeben werden.
Aber nun zu meinen Fragen.
Es sind auch ein paar, ich verstehe die Aufgabenstellung nicht ganz fragen dabei. Hoffentlich könnt ihr mir da helfen.
1. Die Klasse abstractNachricht ist in einem package und in der Aufgabe heißt es: "Die Sichtbarkeit des Konstruktors soll auf das eigene Package und erweiternde Klassen beschränkt sein." wahrscheinlich ist hier gewollt, dass ich den Konstruktor auf protected setze, sicher bin ich mir aber nicht.
2. In dieser Klasse abstractNachricht gibt es zwei Getter Methoden für die Sender und Empfänger ID. Dort lautet es "stellen Sie sicher, dass diese in Unterklassen der abstrakten Klasse nicht überschrieben werden können.“ Da habe ich keine Ahnung wie genau das gehen soll.
3. Für die Klasse stringNachricht steht "Diese Klasse soll ein Feld für einen Nachrichtentext besitzen, welcher als Parameter des einzigen Konstruktor übergeben wird.", bedeutet das ich hier nur den Nachrichten String übergeben darf und sonst nichts oder das es nur ein Konstruktor geben darf? Im Konstruktor muss ich über super() die ID's übergeben, wenn ich nur den String habe geht das ja eigentlich nicht. Oder gibt es eine Möglichkeit die abstracte Klasse später zu initialisieren, ich habe zumindest nichts darüber gefunden?
Die 3. stört mich am meisten. Ich glaube, es ist so gewollt dass nur ein String bei der Erstellung von stringNachricht benötigt wird und durch das ChatTool, da es die IDs kennt, weiter ausgefüllt und weitergeschickt wird. Aber dadurch, dass es Interfaces und es auch keine genauen Anweisungen gibt bin ich der Meinung ich keine Setter Methoden hinzufügen darf.
Soweit die Klassen:
interface Nachricht> wird von abstractNachricht implementiert
abstractNachricht > verwaltet die Sender id und Empfänger id die über dem Konstruktor überreicht werden
stringNachricht > (Oberklasse) verwaltet den String der über dem Konstruktor überreicht wird und ist extends von abstractNachricht
WasGehtMessage > (Unterklasse) erstellt einen Standard Text wie "Hi" und ist extends von TextMessage
Hier an der Stelle hätte ich schon ein paar Fragen da ich denke hier Fehler gemacht zu haben. Es sollte aber noch erwähnt werden das es ein ChatTool.java gibt die sendet, empfängt und die Kontakte verwaltet. Bei der send Methode gibt es ein Überladung damit jedes Format (Nachricht, stringNachricht und WasGehtMessage) angenommen wird. Wichtig ist auch das ChatTool.java keinerlei Strings annimmt. Das bedeutet, dass die Nachrichten als Object angenommen und weiter gegeben werden.
Aber nun zu meinen Fragen.
Es sind auch ein paar, ich verstehe die Aufgabenstellung nicht ganz fragen dabei. Hoffentlich könnt ihr mir da helfen.
1. Die Klasse abstractNachricht ist in einem package und in der Aufgabe heißt es: "Die Sichtbarkeit des Konstruktors soll auf das eigene Package und erweiternde Klassen beschränkt sein." wahrscheinlich ist hier gewollt, dass ich den Konstruktor auf protected setze, sicher bin ich mir aber nicht.
2. In dieser Klasse abstractNachricht gibt es zwei Getter Methoden für die Sender und Empfänger ID. Dort lautet es "stellen Sie sicher, dass diese in Unterklassen der abstrakten Klasse nicht überschrieben werden können.“ Da habe ich keine Ahnung wie genau das gehen soll.
3. Für die Klasse stringNachricht steht "Diese Klasse soll ein Feld für einen Nachrichtentext besitzen, welcher als Parameter des einzigen Konstruktor übergeben wird.", bedeutet das ich hier nur den Nachrichten String übergeben darf und sonst nichts oder das es nur ein Konstruktor geben darf? Im Konstruktor muss ich über super() die ID's übergeben, wenn ich nur den String habe geht das ja eigentlich nicht. Oder gibt es eine Möglichkeit die abstracte Klasse später zu initialisieren, ich habe zumindest nichts darüber gefunden?
Die 3. stört mich am meisten. Ich glaube, es ist so gewollt dass nur ein String bei der Erstellung von stringNachricht benötigt wird und durch das ChatTool, da es die IDs kennt, weiter ausgefüllt und weitergeschickt wird. Aber dadurch, dass es Interfaces und es auch keine genauen Anweisungen gibt bin ich der Meinung ich keine Setter Methoden hinzufügen darf.