Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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));
}
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?
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.
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 ... 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);
}
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.
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.
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...
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.
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)