Konstruktoren sollen sich gegenseitig aufrufen

A

afjo

Gast
Hi, ich habe hier zwei Klassen programmiert:
Das Problem war, dass ich auf beiden Seiten eine 1-n Beziehung programmieren will, aber wenn ich ein Objekt (Kunde) vor dem
anderen (Konto) erstelle, muss es ja auch eine 0-n Beziehung geben, da das andere Objekt (Konto) anfangs noch nicht existiert.
Wie löse ich das Problem am besten? Oder geht ds nicht so einfach?


Java:
public class Konto {
	
	private Kunde kunde;
	
	public Konto(Kunde kunde){
		kunde.setKonto(this);
	}
	public void setKunde(Kunde kunde){
		this.kunde=kunde;
	}
	public Kunde getKunde(){
		return kunde;
	}
	
}
Java:
public class Kunde {
	
	private Konto konto;
	
	public Kunde (Konto konto){
		konto.setKunde(this);
	}
	public void setKonto(Konto konto){
		this.konto=konto;
	}
	public Konto getKonto(){
		return konto;
	}
	
}
Java:
public static void main(String[] args) {
		Konto konto = new Konto(new Kunde(konto));
	}

Danke schon für Anregunden und Lösungen!
 

faetzminator

Gesperrter Benutzer
Ich würde mir einfach in Kunde alle Konti merken - verwaltet in einer [c]List[/c]. Der Kunde könnte sich immer noch beim Konto bekannt machen, aber warum willst du das?
 
A

afjo

Gast
Du würdest es also so machen:

Java:
public Kunde (Konto konto){
        konto.setKunde(this);
    }
Java:
public Kunde (Konto konto){
        list=new ArrayList();
        list.add(konto);
}
Java:
public Konto(){
}


Ja, so wollte ich es auch machen, aber dann habe ich ja auf der Kundenseite eine 0-n bidirektionale Beziehung; Und wenn man Konto als erstes erstellt, kennt Konto vor der Methode setKunde seinen Kunden nicht. Dass es nicht realitätsnah ist, ist mir schon klar, aber ich möcht nur wissen, ob mans so Programmiern kann (wie in meinem ersten Posting), dass sich beide gleich von Anfang an kennen.
 

Firestorm87

Bekanntes Mitglied
Wenn ein Konto nicht ohne Kunde existieren kann, dann lass doch das Konto sich selber beim Kunden eintragen,... wozu das selber beim aufruf tun?
(Halte die vorgehensweise aber generells so für kriminell, wollt hier nur mal eine Lösung für das explizite Problem darlegen)
Java:
public class Konto {
	
	private Kunde kunde;
	
	public Konto(Kunde kunde){
		setKunde(kunde);
		kunde.setKonto(this);
	}

	public void setKunde(Kunde kunde){
		this.kunde=kunde;
	}

	public Kunde getKunde(){
		return kunde;
	}
	
}
Java:
public class Kunde {
	
	private Konto konto;
	
	public Kunde (){
		//nix
	}

	public void setKonto(Konto konto){
		this.konto=konto;
	}
	public Konto getKonto(){
		return konto;
	}
	
}
Java:
public static void main(String[] args) {
		Konto konto = new Konto(new Kunde());
	}

/EDIT: Da war er selber shcneller :p ... ja so würde man das machen...
ABER: Die 2 Konstruktoren, sind nur einer :) also:
Java:
public Kunde (Konto konto){
        list=new ArrayList();
        list.add(konto);
        konto.setKunde(this);
}
 
Zuletzt bearbeitet:

Landei

Top Contributor
Also ich halte es für eine ganz, ganz, ganz schlechte Idee, dass ein Konto seinen Kunden kennt. Ersten: Wozu? Und zweitens: Wozu eine unnötige Abhängigkeit einführen? So könntest du die Klasse Konto nicht einfach auch für Zulieferer oder das Finanzamt verwenden, obwohl die benötigte Funktionalität ja eigentlich schon vorhanden ist.
 

fastjack

Top Contributor
Code:
public Kunde (Konto konto){
        list=new ArrayList();
        list.add(konto);
        konto.setKunde(this);
}

ohne weitere Methoden hat jeder Kunde so immer nur ein Konto und zwar das angegebene. Die Listeninitialisierung würde ich auch aus dem Konstruktor nehmen im Attribut machen. Das Konto würde ich auch nicht im Kundenkonstruktor manipulieren. Steckst Du ein falsches Konto hinein, so hat es plötzlich einen neuen Kunden (wenn Guthaben ohne Ende drauf ist, würde ich mich freuen, ansonsten eher nicht ;) ).

Ansonsten kann man sich solche Aufgaben auch erstmal aufmalen/überlegen: Ein Kunde hat meherere Konten (also braucht der Kunde eine Liste mit Konten). Ein Konto aber hat nur einen Kunden (Konto braucht ein Attribut vom Typ Kunde).

Dann bieten sich einige Methoden im Kunden an, mit denen man ihm ein Konto zuweisen oder entfernen kann etc. (addKonto(), removeKonto(...)). Im Konto ganz normale Getter/Setter um den Kunden zuzuweisen bzw. zu ermitteln.
 
Zuletzt bearbeitet:

Firestorm87

Bekanntes Mitglied
Also ich halte es für eine ganz, ganz, ganz schlechte Idee, dass ein Konto seinen Kunden kennt. Ersten: Wozu? Und zweitens: Wozu eine unnötige Abhängigkeit einführen? So könntest du die Klasse Konto nicht einfach auch für Zulieferer oder das Finanzamt verwenden, obwohl die benötigte Funktionalität ja eigentlich schon vorhanden ist.

Dass ein Konto seinen Kunden kennt kann durchaus Sinn machen...
Allerdings sollte man hier aupassen und vll. Kunde eher als Interface oder eher abstrakte Klasse "Partner" gestalten, welchen dann die Funktionen bereitstellt, die das Konto selber benötigt...

z.B. getName(), Anschrift etc, um Belege versenden zu können...

Und auch jeder Zulieferer kann ein Partner sein :)
 
A

afjo

Gast
Also ich halte es für eine ganz, ganz, ganz schlechte Idee, dass ein Konto seinen Kunden kennt. Ersten: Wozu? Und zweitens: Wozu eine unnötige Abhängigkeit einführen? So könntest du die Klasse Konto nicht einfach auch für Zulieferer oder das Finanzamt verwenden, obwohl die benötigte Funktionalität ja eigentlich schon vorhanden ist.

Gute Anmerkung, aber ich antworte mal einfach mit einem Zitat von mir:
Dass es nicht realitätsnah ist, ist mir schon klar, aber ich möcht nur wissen, ob mans so Programmiern kann...

Wenn ein Konto nicht ohne Kunde existieren kann, dann lass doch das Konto sich selber beim Kunden eintragen...
(Halte die vorgehensweise aber generells so für kriminell, wollt hier nur mal eine Lösung für das explizite Problem darlegen)

Sehr gute Idee, Danke! Wieso Kriminell? Weil man das normalerweise so nicht macht? Ja ich weiß!

Für alle folgenden Antworten, die ich jetzt schon vor dem Abschicken sehe, auch vielen Dank! So weit habe ich aber eigentlich garnicht gedacht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Verschiedene Konstruktoren mit gleichen Datentypen Java Basics - Anfänger-Themen 8
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
lougoldi Verkettung von Methoden und Konstruktoren Java Basics - Anfänger-Themen 4
J Konstruktoren und Grafik Java Basics - Anfänger-Themen 3
A Cannot find symbol mit Konstruktoren Java Basics - Anfänger-Themen 27
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
C Objekte und Konstruktoren Java Basics - Anfänger-Themen 2
M Methodenaufrufe im Konstruktoren Java Basics - Anfänger-Themen 31
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
M Vererbung Konstruktoren mit festen Werte Java Basics - Anfänger-Themen 2
F Mehrere Konstruktoren? Wofür? Java Basics - Anfänger-Themen 21
J Konstruktoren in Initialisierungsblöcke Java Basics - Anfänger-Themen 6
T Konstruktoren Java Basics - Anfänger-Themen 25
D was bedeutet this. bei Konstruktoren? Java Basics - Anfänger-Themen 4
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
C Die Klasse Menge mit Konstruktoren und einfachen Methoden Java Basics - Anfänger-Themen 5
F Mehrere Konstruktoren Java Basics - Anfänger-Themen 10
G Was ist der Nutzen von generischen Konstruktoren? Java Basics - Anfänger-Themen 4
Q Methoden Konstruktoren anlegen Java Basics - Anfänger-Themen 5
B Objekte in Konstruktoren übergeben Java Basics - Anfänger-Themen 5
D Zähler nicht sichtbar (Thema: Konstruktoren) Java Basics - Anfänger-Themen 2
A Überladen von Konstruktoren Java Basics - Anfänger-Themen 2
V Konstruktoren Java Basics - Anfänger-Themen 15
C Klassen StackOverflow bei erster Nutzung von Klassen/Konstruktoren Java Basics - Anfänger-Themen 9
F Konstruktoren Java Basics - Anfänger-Themen 4
M Erste Schritte Verständnis Problem Konstruktoren Java Basics - Anfänger-Themen 13
Y Klassen, Vererbung, Konstruktoren Java Basics - Anfänger-Themen 13
B Klassen Unterschied Konstruktoren. Java Basics - Anfänger-Themen 3
C Erste Schritte Konstruktoren verstehen Java Basics - Anfänger-Themen 7
W OOP Konstruktoren Erklärung Java Basics - Anfänger-Themen 14
N Abarbeitungsreihenfolge von Konstruktoren Java Basics - Anfänger-Themen 12
O Klassen und Konstruktoren Java Basics - Anfänger-Themen 7
V Konstruktoren -> Funktionsaufrufe Java Basics - Anfänger-Themen 7
Q Konstruktoren und Methoden Java Basics - Anfänger-Themen 2
C Konstruktoren Java Basics - Anfänger-Themen 7
J Konstruktoren Java Basics - Anfänger-Themen 10
M Konstruktoren & Veerbung Java Basics - Anfänger-Themen 6
T Konstruktoren Java Basics - Anfänger-Themen 6
P Enum Attribut in Konstruktoren Java Basics - Anfänger-Themen 10
R Vererbung Konstruktoren nicht erkannt Java Basics - Anfänger-Themen 17
H Klassen, Konstruktoren, Instanzen etc Java Basics - Anfänger-Themen 6
J OOP Konstruktoren, setMethode, getMethode usw. Java Basics - Anfänger-Themen 7
A überladene Konstruktoren Java Basics - Anfänger-Themen 7
L Frage zu Konstruktoren und dem this Operator Java Basics - Anfänger-Themen 16
W 2 Konstruktoren Java Basics - Anfänger-Themen 8
B Vererbung und Konstruktoren Java Basics - Anfänger-Themen 33
N Vererbung von Konstruktoren mit Parametern Java Basics - Anfänger-Themen 7
S Konstruktoren verketten Java Basics - Anfänger-Themen 6
B Konstruktoren Sichtbarkeit Java Basics - Anfänger-Themen 2
K Kann man Private-Konstruktoren doch aurufen? Java Basics - Anfänger-Themen 8
E Konstruktoren und Methoden Java Basics - Anfänger-Themen 10
E OOP individual + standard-Konstruktoren Java Basics - Anfänger-Themen 9
S Konstruktoren? Java Basics - Anfänger-Themen 5
K Konstruktoren Java Basics - Anfänger-Themen 13
H Konstruktoren – super! Java Basics - Anfänger-Themen 3
L Geschachtelte Konstruktoren Java Basics - Anfänger-Themen 4
hdi Kleine Design/Convention Frage zu Konstruktoren Java Basics - Anfänger-Themen 4
J Vererbung und Konstruktoren Java Basics - Anfänger-Themen 14
J Problem mit Konstruktoren Java Basics - Anfänger-Themen 2
G Überladen von Konstruktoren mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 4
H Befehl mit Konstruktoren Java Basics - Anfänger-Themen 2
L Konstruktoren bei Vererbung Java Basics - Anfänger-Themen 13
Z wie kann ich überladene Konstruktoren "umleiten"? Java Basics - Anfänger-Themen 11
D Blöde(?) Frage zu Konstruktoren und set-Methoden Java Basics - Anfänger-Themen 3
G Interface und Konstruktoren Java Basics - Anfänger-Themen 3
G Frage zu Konstruktoren Java Basics - Anfänger-Themen 12
G Verständnisfrage zu Konstruktoren Java Basics - Anfänger-Themen 5
G Konstruktoren Java Basics - Anfänger-Themen 9
A Konstruktoren überladen Java Basics - Anfänger-Themen 9
H Konstruktoren + Hilfe Java Basics - Anfänger-Themen 12
H Konstruktoren werden nie geerbt Java Basics - Anfänger-Themen 3
O Vor-/Nachteile/Unterschiede von Konstruktoren und Methoden Java Basics - Anfänger-Themen 3
Bierhumpen 2 Konstruktoren Java Basics - Anfänger-Themen 15
T mehrere Konstruktoren für eine Klasse Java Basics - Anfänger-Themen 7
J Instantvariablen und Konstruktoren Java Basics - Anfänger-Themen 2
Y Vererben - Konstruktoren Java Basics - Anfänger-Themen 2
Z übergabe von string[] an konstruktoren oder methoden Java Basics - Anfänger-Themen 3
L Klassen, Vererbung und Konstruktoren Java Basics - Anfänger-Themen 10
S Frage zu Konstruktoren Java Basics - Anfänger-Themen 7
G Problem mit Gültigkeit von Variabeln und Konstruktoren Java Basics - Anfänger-Themen 4
C Konstruktoren Java Basics - Anfänger-Themen 4
G Konstruktoren (was, wozu, wieso, warum) Java Basics - Anfänger-Themen 4
W Zwei Programme sollen auf eine Klasse zugreifen Java Basics - Anfänger-Themen 18
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
N while Schleife wird nicht beendet, obwohl Sie hätte breaken sollen Java Basics - Anfänger-Themen 4
F Kindklassen sollen Ihre Methoden selbst implementieren Java Basics - Anfänger-Themen 5
A Harshad Zahlen sollen in einem Intervall ausgegeben werden Java Basics - Anfänger-Themen 8
U Best Practice Buttons sollen ÜBER Labeln liegen, also quasi im Vordergrund. WIE? Java Basics - Anfänger-Themen 4
W Buttons sollen bei Mausklick einen String schreiben Java Basics - Anfänger-Themen 11
J Markierte Einträge (Dateien) in JList sollen in einen anderen Ordner verschoben werden. Java Basics - Anfänger-Themen 12
M Klassen sollen nicht instanzierbar sein Java Basics - Anfänger-Themen 6
A Mehrere Gegner sollen das gleiche Bild benutzen Java Basics - Anfänger-Themen 3
K mehrer applets sollen sich gegenseitig verständigen können Java Basics - Anfänger-Themen 3
F Input/Output Textzeilen in txt-Datei nebeneinander sollen untereinander Java Basics - Anfänger-Themen 5
M Zwei Panels, die sich gegenseitig 'notifyn' sollen Java Basics - Anfänger-Themen 12
L Gelöst: Negative Eingaben sollen verweigert werden Java Basics - Anfänger-Themen 3
H Ausgabe in Dos-Box - wo sollen da Exceptions auftreten? Java Basics - Anfänger-Themen 6
G Toolbar buttons sollen dialoge anzeigne statt pop up Java Basics - Anfänger-Themen 44
D Menü soll immer da bleiben - Frames sollen wechseln Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben