Listen in GUI und Klassen / Packageverwaltung

schneubel

Grünschnabel
Hi,

ich bräuchte mal einen Tip zur Organisation von Klassen und Packages in Bezug auf GUIs und ListenModellen.

Im Speziellen habe ich ein Package "gui", das eine Klasse "MainWindow" enthält, die wiederum eine (bislang) private Klasse eines AbstractListModels enthält.

Wenn ich jetzt aus einem anderen Package heraus (in meinem Fall bspw. Klasse "Main") etwas in die Liste des MainWindow hineinlegen möchte, also eine Methode des Objektes des abstrakten Listenmodells aufrufen möchte (hier z.B.: addKunde()), ist diese natürlich nicht sichtbar, weil das ListenModel ja eine private Unterklasse von "MainWindow" ist.

Wäre es noch "guter Stil" die Klasse des AbstractListModels public zu machen, damit sie von außen sichtbar ist? Oder Sollte ich Sie generell aus der Klasse "MainWindow" herausnehmen?

Wie würdet Ihr hier den Zugriff, bzw. die Klassenorganisation auf solche Datenlisten in GUIs realisieren?

Achso, es handelt sich um eine Übungsaufgabe, deswegen ist die Datenhaltung hier nicht in Datenbanken oder Dateien vorgesehen, sondern die Listen halten alle Daten zur Laufzeit.

Vielen Dank für Hilfe!

Pseudo-Code:

Code:
/**
* ###############################
* Package: gui
* ###############################
**/
public class MainWindow extends JFrame{ // Instanzvariable des Listenmodells
private KundenListData kundenDat;
 // Zugriff auf Listenmodell
    public KundenListData getKundenDat() {
        return kundenDat;
    }
 // Konstruktor für das Hauptfenster der Anwendung
public MainWindow(){ //  ...
}
private class KundenListData extends AbstractListModel{        // Instanzvariable LinkedList, dass die Kundendaten speichert: private LinkedList<Object>llKundenData;
// Methode zum hinzufügen eines Kunden:
        public void addKunde(Kunde k){            
            llKundenData.addLast(k);
            fireContentsChanged(this, 0, llKundenData.size()-1);
        }

// Weitere Methoden...
}


/**
* ###############################
* Package: Kontoverwaltung
* ###############################
**/

package kontoverwaltung;
import gui.MainWindow;

public class Main {

    private static boolean legeAnZufallsKunden(MainWindow owner){Kunde k = new Kunde("123453", "horst");
owner.getKundenDat().addKunde(k);
 }
}
 
Hi,
ich persönlich finde innere Klassen als schlechten Programmierstil, aber das ist meine Meinung.
Ind der OOP sollte man aber strikt Grafisches von Daten trennen. Folglich soltlest du der ganzen inneren Klasse KundenListData ein eigenes Package widmen.
Ciao
DosCoder
 
Zurück