Christian Fein
Erfahrenes Mitglied
Snape hat dir wie er sagt eine mögliche Lösung zugesandt, dann kann ich mich
darauf beschränken, etwas anderes anzumeckern
Mir wird der Zweck deines Codes nicht so ganz klar.
Du erweiterst einen Vector der letztendliche eine Instanz einer von Frame abgeleiteten
Klasse besitzt?
Laut OOP sollte mann Vererbung dann benutzen wenn eine "ist - ein " Beziehung besteht.
Die Frage ist:
Ist ein Geburstag ein Frame? klingt unlogisch.
Auch Instanzvariablen sollten nach dem Prinzip "hat ein" genutzt werden.
Hat eine AdressenList einen Frame
auch das ist nicht ganz logisch.
Genaus hat bei dir der Geburtstag Frame eine Adressenliste, du hast hier
also eine 1 - 1 beziehung.
Wenn du diesen Umstand änderst, erreichst du zudem das du keine Klasse erschaffen musst die eine Vorhanden nur unwesentlich erweitert.
Zudem trennst du die Logic nicht von der Ansicht. Das heisst letztendlich baust du den Controller direkt in eine Ansicht ein die hier der GeburtstagFrame ist.
Besser du hälst dich an MVC und hälst dir einen Controller.
Dieser Controller kann die Ansicht steuern und die Daten (hier adressliste) ändern.
Ich weiss ja nicht was der Geburtstagsframe koennen sollte, aber ich gehe aufgrund
von AdressenList davon aus du willst eine Art Verwaltung von Gästen für eine Geburtstagparty programmieren (veilleicht aus den Fingern gesaugt)
Damit hast du deinen Frame komplett von der Adressen Liste entkoppelt und du arbeitest nur mit dem Controller (hier Party) der Zwischen der Ansicht und den Daten vermittelt.
Vorteil ist das du freier bist die Ansicht zu wechseln. Deine Ansicht muss als einzige Vorraussetzung haben MyView zu implementieren (bzw davon abzuleiten).
Ist nur eine Möglichkeit. Das wichtigste ist das du Daten und Ansicht voneinander komplett trennst.
darauf beschränken, etwas anderes anzumeckern
Mir wird der Zweck deines Codes nicht so ganz klar.
Code:
Meine Unterklasse
import java.util.*;
import java.util.Vector.*;
import java.io.*;
public class AdressListe extends Vector
{
Geburtstag geb;
public void adresseEintragen(Geburtstage temp)
{
this.add(temp); //Liste wird hinzugefügt
}
public void adresseAuslesen (){
geb.auslesen(); //Aufruf der Methode aus der Hauptklasse
}
Klasse besitzt?
Laut OOP sollte mann Vererbung dann benutzen wenn eine "ist - ein " Beziehung besteht.
Die Frage ist:
Ist ein Geburstag ein Frame? klingt unlogisch.
Auch Instanzvariablen sollten nach dem Prinzip "hat ein" genutzt werden.
Hat eine AdressenList einen Frame
auch das ist nicht ganz logisch.
Genaus hat bei dir der Geburtstag Frame eine Adressenliste, du hast hier
also eine 1 - 1 beziehung.
Wenn du diesen Umstand änderst, erreichst du zudem das du keine Klasse erschaffen musst die eine Vorhanden nur unwesentlich erweitert.
Zudem trennst du die Logic nicht von der Ansicht. Das heisst letztendlich baust du den Controller direkt in eine Ansicht ein die hier der GeburtstagFrame ist.
Besser du hälst dich an MVC und hälst dir einen Controller.
Dieser Controller kann die Ansicht steuern und die Daten (hier adressliste) ändern.
Ich weiss ja nicht was der Geburtstagsframe koennen sollte, aber ich gehe aufgrund
von AdressenList davon aus du willst eine Art Verwaltung von Gästen für eine Geburtstagparty programmieren (veilleicht aus den Fingern gesaugt)
Code:
public class Party {
private Vector adressVector;
private MyView view;
public Party(MyView view) { this.view = view }
public void addAdress(Adress adress) {
adressVector.add(adress);
view.setAdressList(adressVector);
view.repaint();
}
....
}
Damit hast du deinen Frame komplett von der Adressen Liste entkoppelt und du arbeitest nur mit dem Controller (hier Party) der Zwischen der Ansicht und den Daten vermittelt.
Vorteil ist das du freier bist die Ansicht zu wechseln. Deine Ansicht muss als einzige Vorraussetzung haben MyView zu implementieren (bzw davon abzuleiten).
Ist nur eine Möglichkeit. Das wichtigste ist das du Daten und Ansicht voneinander komplett trennst.