Swing Grundsätzliche Fragen zu MVC

C

Camino

Gast
Hallo,

nachdem ich erstmal munter drauflos programmiert habe und meine Swing-Anwendung immer umfangreicher und unübersichtlicher geworden ist, versuche ich nun, das Ganze mal mehr nach dem MVC-Prinzip zu strukturieren. Hab mir das Grundprinzip zu MVC nun auch angelesen. Dazu hab ich nun ein paar grundsätzliche Fragen. Die Anwendung handelt sich um eine Verwaltung von u.a. Personendaten, die in einer Datenbank abgelegt werden.

1.) Wenn ich nun mehrere Bereiche in der Datenbank bzw. Anwendung habe, z.B. Personen, Anträge, Semesterdaten..., lege ich mir dann als Struktur jeweils zu den Bereichen ein Package an, mit den Unterpaketen oder Klassen model, view und control? Oder lege ich mir die Packages model, view und control an und dort dann die Unterbereiche (Personen, Anträge...)? Oder ist das egal und beides ok, je nachdem, wie es mir besser gefällt?

2.) Ich hab eine Klasse Person mit allen Datenfeldern aus der Datenbank (Vorname, Nachname, Geburtsdatum, Anschrift...), und auch mit den dazugehörigen Getter- und Setter-Methoden. Gehört diese Klasse Person auch in den Bereich 'model', also zum Datenmodell? Wenn ich nun aus allen oder mehreren Datensätzen aus der Datenbank Personenobjekte erstelle und in einer ArrayList sammel, wo wird dann diese ArrayList untergebracht? Wird dazu am besten eine eigene Klasse im Model-Bereich angelegt, in welcher die ArrayList gefüllt, an die View weitergeleitet wird und vom Controller bearbeitet wird bzw. dann auch wieder in die DB zurückgeschrieben wird? Ich hab also im Model-Bereich die Klasse Person und eine Klasse mit der ArrayList? Oder gehört diese ArrayList eher in den Controller oder gleich in die View?

Das waren erst mal meine Fragen, um grundsätzlich die MVC-Struktur zu verstehen und anzuwenden.

Vielen Dank für eure Hilfe und viele Grüsse
Camino
 
C

Camino

Gast
Mir ist noch 'ne Frage eingefallen:

3.) Wenn ich nun für die gleiche Sammlung von Datensätzen (ArrayList mit Personobjekten) unterschiedliche Ansichten (Views) haben möchte, wie gehe ich da vor?
Speziell jetzt in meiner Anwendung hab ich z.B. die aus der Datenbank geholten Personendaten einmal in einem Personen-Suchdialog in einer Tabelle, die ich nach Vor-, Nachnamen oder Matrikelnummer filtern kann. Dort brauche ich auch aus den Datensätzen nur diese 3 Daten. Bisher hab ich dafür ein eigenes TableModel erstellt.
Und ein anderes Mal in einer Eingabemaske, in der zwar nur jeweils 1 Datensatz angezeigt werden kann, es soll aber mit 2 Buttons innerhalb der Datensätze navigiert d.h. durchgeblättert werden können.

Für beide Fälle könnte ich ja auf die gleiche ArrayList zugreifen und mir die jeweiligen Daten in der View anzeigen lassen. Oder brauche ich dafür auch zwei verschiedene Model, weil das eine eine JTable ist und das andere ein Eingabeformular.
 

XHelp

Top Contributor
1.) Wenn ich nun mehrere Bereiche in der Datenbank bzw. Anwendung habe, z.B. Personen, Anträge, Semesterdaten..., lege ich mir dann als Struktur jeweils zu den Bereichen ein Package an, mit den Unterpaketen oder Klassen model, view und control? Oder lege ich mir die Packages model, view und control an und dort dann die Unterbereiche (Personen, Anträge...)? Oder ist das egal und beides ok, je nachdem, wie es mir besser gefällt?
Sicher, dass du MVC Prinzip verstanden hast? :) Model, View und Control sind keine Packages, sondern Komponenten. Du kannst dir zwar ein Package "data" anlegen, wo du dann die Klassen für Personen, Anträge etc abspeicherst, aber mit MVC direkt haben die nicht viel zu tun.

2.)Wenn ich nun aus allen oder mehreren Datensätzen aus der Datenbank Personenobjekte erstelle und in einer ArrayList sammel, wo wird dann diese ArrayList untergebracht? Wird dazu am besten eine eigene Klasse im Model-Bereich angelegt, in welcher die ArrayList gefüllt, an die View weitergeleitet wird und vom Controller bearbeitet wird bzw. dann auch wieder in die DB zurückgeschrieben wird?
Du kannst entweder im Model
Code:
List<Person>
haben oder du erstellst eine Klasse, die für Verwaltung von Personen zuständig ist (wo dann deine Liste ist) und erstellst davon eine Instanz im Model.
Außerdem wird die Liste nicht an View weitergeleitet, sonder View bezieht die Daten aus dem Model.

Oder gehört diese ArrayList eher in den Controller oder gleich in die View?
Definitiv nicht, Daten solltest du lieber im Model halten.

3.) Wenn ich nun für die gleiche Sammlung von Datensätzen (ArrayList mit Personobjekten) unterschiedliche Ansichten (Views) haben möchte, wie gehe ich da vor?
...
Naja. Dein Model bleibt unverändert. Du machst 2 Views mit den dazugehörenden Controllern, aber die greifen auf das selbe Model zu. Außerdem brauchst du jetzt nicht zwingen 2 Views dazu, sondern kannst es auch in einem unterbringen.
 
C

Camino

Gast
Sicher, dass du MVC Prinzip verstanden hast? :) Model, View und Control sind keine Packages, sondern Komponenten. Du kannst dir zwar ein Package "data" anlegen, wo du dann die Klassen für Personen, Anträge etc abspeicherst, aber mit MVC direkt haben die nicht viel zu tun.
Hmm, bei den Packages ging es mir eher um die Struktur, wie und wo ich die Komponenten anlege, da es in der Anwendung mehrere verschiedene Bereiche gibt, die alle ihre Models, Views und Controller haben. Hat zwar nicht direkt was mit dem MVC-Prinzip zu tun, aber dient der Übersichtlichkeit.


Du kannst entweder im Model
Code:
List<Person>
haben oder du erstellst eine Klasse, die für Verwaltung von Personen zuständig ist (wo dann deine Liste ist) und erstellst davon eine Instanz im Model.
Außerdem wird die Liste nicht an View weitergeleitet, sonder View bezieht die Daten aus dem Model.
OK, dann heisst das, dass z.B. das Control bestimmt, welcher Datensatz aus dem Model (Liste) in der View (Eingabeformular) angezeigt wird, z.B. über eine Methode im Model wie
Code:
getPerson(index)
, welche dann ein Person-Objekt zurückliefert und die Daten vom View im Formular angezeigt werden...


Naja. Dein Model bleibt unverändert. Du machst 2 Views mit den dazugehörenden Controllern, aber die greifen auf das selbe Model zu. Außerdem brauchst du jetzt nicht zwingen 2 Views dazu, sondern kannst es auch in einem unterbringen.
OK, das mit dem nur einen Model hab ich mir irgendwie gedacht, aber warum nur 1 View, wenn ich verschiedene Ansichten der Daten habe? Einmal einen Dialog, der mir 3 Datenfelder der Datensätze (komplette Liste des Models) in Tabellenform anzeigt, welche dann gefiltert werden können, und zum zweiten das Eingabeformular, in dem immer nur 1 Datensatz komplett angezeigt wird, aber durch die Liste geblättert werden kann.

Zum MVC-Pattern kannst du mal die FAQ besuchen und die entsprechenden Beiträge lesen.
OK, werde ich mir anschauen...

Danke euch beiden erst mal für die Antworten...
 
G

Gast2

Gast
MVC ist nur ein Paradigma für deine GUI. Darüber hinaus musst du dir noch Gedanken machen wie du zu deiner Datenbank kommst und die Daten speicherst... Indem Link ist ein Bsp. dabei.
 
C

Camino

Gast
MVC ist nur ein Paradigma für deine GUI. Darüber hinaus musst du dir noch Gedanken machen wie du zu deiner Datenbank kommst und die Daten speicherst... Indem Link ist ein Bsp. dabei.
Ja, danke. Werde ich mir mal genauer anschauen. Um das MVC für meine GUI ging es mir ja auch. Wie ich schon geschrieben hatte, läuft die Anwendung ja schon so einigermassen (ist aber immer noch inder Entwicklung). Mein Problem war nur, dass ich mir wohl zu Beginn zu wenige Gedanken über die Programmstruktur gemacht habe und erstmal einfach drauf los programmiert habe. Jetzt wird mir das Ganze etwas zu chaotisch und unübersichtlich und ich möchte das besser strukturieren. Ist halt immer mehr dazugekommen und ich hatte dann irgendwann angefangen, das in Packages zu gliedern. Das mit der Datenbank funktioniert schon. Ist aber auch nicht so besonders gut gelöst.

Viele Grüsse
Camino
 
C

Camino

Gast
Indem Link ist ein Bsp. dabei.
Hey cool. Ich hab mir den Java-Code aus dem Beispiel mal ausgedruckt, damit ich das übersichtlicher vor mir habe und sehen kann, was womit zusammenhängt. Dann hab ich mal versucht, das in meinem Projekt umzusetzen. Hab also ein Model und einen Controller angelegt, die View war ja schon vorhanden (ist halt ein bisschen umfangreich und besteht aus mehreren Modulen/Klassen). Aber jetzt kann ich mit den zwei JButtons in der View (< und >) durch die Datensätze blättern und mir die jeweiligen Personendaten im Eingabeformular anzeigen lassen. Bin damit schonmal einen grossen Schritt weiter und kann jetzt dort hoffentlich weiter dran arbeiten. DANKE! Falls noch Fragen auftauchen, melde ich mich nochmal...

Viele Grüsse
Camino
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
T Grundsätzliche Frage zu undo/redo AWT, Swing, JavaFX & SWT 3
N Grundsätzliche Frage zur Internationalisierung AWT, Swing, JavaFX & SWT 2
thor_norsk Allgemeine Fragen AWT, Swing, JavaFX & SWT 6
thor_norsk Allgemeine Fragen AWT, Swing, JavaFX & SWT 4
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
K JavaFX Allgemeine Fragen zu dem Aufbau eines Programms hinsichtlich der Klassen AWT, Swing, JavaFX & SWT 1
D Fragen zur GUI AWT, Swing, JavaFX & SWT 4
M NetBeans JFrame Grundlangen fragen AWT, Swing, JavaFX & SWT 6
T JavaFX Allgemeine Fragen zu JavaFX (uA zu Properties) AWT, Swing, JavaFX & SWT 6
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
K Fragen zu JavaFx Canvas AWT, Swing, JavaFX & SWT 0
N Swing Fragen zu non-modal JDialog AWT, Swing, JavaFX & SWT 1
Q Fragen zur JMenuBar & Co. AWT, Swing, JavaFX & SWT 3
F DefaultTreeCellEditor - Fragen zur Groesse und zum Icon beim Editieren AWT, Swing, JavaFX & SWT 4
Kenan89 JMenu Fragen AWT, Swing, JavaFX & SWT 5
Luk10 (LWJGL) Fragen zu VBOs AWT, Swing, JavaFX & SWT 21
M Swing JTextPane + Scrollbar = Fragen AWT, Swing, JavaFX & SWT 15
S Fragen zu JList AWT, Swing, JavaFX & SWT 3
J Das erste Projekt und ein Haufen von Fragen. Der SudokuReader. AWT, Swing, JavaFX & SWT 4
Luk10 Fragen zum Laden von Fonts AWT, Swing, JavaFX & SWT 4
Luk10 Fragen zum Koordinaten System AWT, Swing, JavaFX & SWT 3
M JTable Grundlegende Fragen AWT, Swing, JavaFX & SWT 4
B Prozentrechner GUI Fragen AWT, Swing, JavaFX & SWT 4
H Fragen zu JPanel und JButton AWT, Swing, JavaFX & SWT 3
Q Swing Zeichenprogramm, grundlegende Fragen AWT, Swing, JavaFX & SWT 8
U Swing Fragen bezüglich Multithreaded GUIs (Grundlagen): AWT, Swing, JavaFX & SWT 3
R LayoutManager GridBagLayout Fragen AWT, Swing, JavaFX & SWT 10
A diverse Layout-Fragen AWT, Swing, JavaFX & SWT 4
M LayoutManager Einige Fragen zum GridBagLayout AWT, Swing, JavaFX & SWT 13
H Swing Zwei Fragen AWT, Swing, JavaFX & SWT 5
S 2D-Grafik Diverse Fragen zu Imagemanipulation in Java AWT, Swing, JavaFX & SWT 11
F 3 Fragen zu Applets AWT, Swing, JavaFX & SWT 4
L Klick auf JTable -> EditorPane manipulieren, Fragen zu TableModel AWT, Swing, JavaFX & SWT 9
S Fragen zu GridBagLayout AWT, Swing, JavaFX & SWT 6
B Zeichnen in Swing - Jede Menge Fragen! AWT, Swing, JavaFX & SWT 2
D Fragen zu Swing, paintComponent() und repaint AWT, Swing, JavaFX & SWT 6
D GridBagLayout und JEditorPane (mehrere fragen) AWT, Swing, JavaFX & SWT 2
A Swing einfache fragen zu frame AWT, Swing, JavaFX & SWT 10
P Mehrere Fragen AWT, Swing, JavaFX & SWT 4
A Fragen zu Microber AWT, Swing, JavaFX & SWT 4
C Mehrer Fragen zu großem kompletten Swing Beispiel AWT, Swing, JavaFX & SWT 5
T Fragen zu JList und DnD AWT, Swing, JavaFX & SWT 13
I Einige Fragen zu JList AWT, Swing, JavaFX & SWT 6
I Drei Fragen/Probleme mit einer JTable AWT, Swing, JavaFX & SWT 9
G Fragen zum FileChooser AWT, Swing, JavaFX & SWT 5
M 2 Kleine Fragen zum JOptionFrame AWT, Swing, JavaFX & SWT 5
G performance fragen zu AWT, Swing AWT, Swing, JavaFX & SWT 14
J Fragen zu JTable und JScrollpane AWT, Swing, JavaFX & SWT 2
R Frage zu Listfeld oder jTable, auch andere Fragen AWT, Swing, JavaFX & SWT 5
C Fragen zur Darstellung einer JTable mittels Renderer AWT, Swing, JavaFX & SWT 2
ModellbahnerTT Fragen zu AWT AWT, Swing, JavaFX & SWT 3
S Fragen Databinding? AWT, Swing, JavaFX & SWT 3
J Fragen zu AWT Komponenten AWT, Swing, JavaFX & SWT 5
U 2 Fragen zu BufferedImages AWT, Swing, JavaFX & SWT 19
J Fragen zur Vererbung und Update AWT, Swing, JavaFX & SWT 12
J Fragen zum SyntaxHighlighting (DefaultStyledDocument) AWT, Swing, JavaFX & SWT 2
I Ein paar SWT Fragen AWT, Swing, JavaFX & SWT 10
P Zwei Fragen zu Bildern in Applets AWT, Swing, JavaFX & SWT 2
isowiz Einige Fragen zur ersten eigenen Sing-Applikation AWT, Swing, JavaFX & SWT 4
G 2 Fragen JDesktopPane AWT, Swing, JavaFX & SWT 4
S Fragen zu einem Beispiel(Swings und AWT) AWT, Swing, JavaFX & SWT 33
G Fragen zum Ocean Look and Feel AWT, Swing, JavaFX & SWT 3
G Neue Komponente erstellen - Fragen/Probleme mit MouseEvents AWT, Swing, JavaFX & SWT 2
Y 2 Fragen- JList Inhalt ändern und Fenster invisible setzen AWT, Swing, JavaFX & SWT 5
C Gemischte Fragen AWT, Swing, JavaFX & SWT 10
G Fragen zu JList AWT, Swing, JavaFX & SWT 12
K 2 fragen:JCheckBoxMenuItem und ComboBox AWT, Swing, JavaFX & SWT 2
T Mehrere Fragen zu JToolBar AWT, Swing, JavaFX & SWT 2
N 2 Fragen (zu binärem Suchen und Scrollbar) AWT, Swing, JavaFX & SWT 6
B Einige Fragen zum GUI AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben