T
Timi
Gast
Ich habe mal ein paar Anfängerfragen zum Thema Klassendefinition.
Ich habe folgendes Konstrukt. Eine GUI erstellt ein Objekt der Klasse NetworkClient um über die Klasse mit einem Server zu kommunizieren. Dem Konstruktor wird das GUI Objekt übergeben, damit der NetworkClien informationen an die GUI übergeben kann. Etwa so:
So weit so gut. Jetzt möchte ich aber eine weiter GUI erstellen die auf dem gleichen NetworkClient aufsetzen soll. Ich würde in diese GUI2 die gleichen Funktionen implementiere (hier im Beispiel: refresh()). Nur kann ich nicht auf NetworkClient aufsetzen, da der Konstruktor die Klasse GUI verlangt.
Wie gehe ich hier vor? Ich könnte jetzt den ganzen NetworkClient neu programmieren damit er auch mit GUI2 klarkommt. Allerdings halte ich das für nicht besonders sinvoll da alles das gleiche ist nur die Klasse wird von GUI in GUI2 getauscht. Gibt es nicht eine möglichkeit im Konstruktor vom NetworkClient zu sagen
Ich habe folgendes Konstrukt. Eine GUI erstellt ein Objekt der Klasse NetworkClient um über die Klasse mit einem Server zu kommunizieren. Dem Konstruktor wird das GUI Objekt übergeben, damit der NetworkClien informationen an die GUI übergeben kann. Etwa so:
Code:
public class GUI{
public GUI(){
NetworkClient nc = new NetworkClient(this);
nc.sendData("Hallo");
}
public refresh(){
...
}
}
public class NetworkClient{
public NetworkClient(GUI gui){
....
}
public void sendData(String text){
....
gui.refresh();
}
}
So weit so gut. Jetzt möchte ich aber eine weiter GUI erstellen die auf dem gleichen NetworkClient aufsetzen soll. Ich würde in diese GUI2 die gleichen Funktionen implementiere (hier im Beispiel: refresh()). Nur kann ich nicht auf NetworkClient aufsetzen, da der Konstruktor die Klasse GUI verlangt.
Code:
public class GUI2{
public GUI2(){
NetworkClient nc = new NetworkClient(this); // ??????????
nc.sendData("Hallo2");
}
public refresh(){
...
}
}
Wie gehe ich hier vor? Ich könnte jetzt den ganzen NetworkClient neu programmieren damit er auch mit GUI2 klarkommt. Allerdings halte ich das für nicht besonders sinvoll da alles das gleiche ist nur die Klasse wird von GUI in GUI2 getauscht. Gibt es nicht eine möglichkeit im Konstruktor vom NetworkClient zu sagen
Code:
public NetworkClient(GUI oder GUI2 gui){
....
}