expertenaustausch > comp.lang.* > comp.lang.java

Markus (22.02.2006, 15:19)
Wie im Titel schon steht, bin ich auf der Suche nach einem einfachen
Beispiel, in dem ein Java-GUI mit den Komponenten Model, View ud
Controller implementiert ist (hab selbst noch keine genaue Vorstellung,
wie das zu implementieren ist).

Die MVC-Komponenten sollten dabei auch in eigenen Klassen liegen.
Das Beispiel hier find ich gar nich so schlecht aber hier ist halt
keine strikte Trennung zwischen Controller und View:

Oder hab ich da was falsch verstanden?

Danke schonmal für eure Hilfe

Markus
Alfred (22.02.2006, 21:03)
Markus wrote:
> Wie im Titel schon steht, bin ich auf der Suche nach einem einfachen
> Beispiel, in dem ein Java-GUI mit den Komponenten Model, View ud
> Controller implementiert ist (hab selbst noch keine genaue Vorstellung,
> wie das zu implementieren ist).


1.Swing Tables
Model = TabelModel
View = JTable
Controller = passende Listener
2.Struts:
Model = Form
View = JSP
Controler = Action
3.Enterprise Application
Model = Enitity Beans resp. DTO's
View = Presentation Layer
Controler = Session Facade

etc.

Alfred
Michael Hüttermann (22.02.2006, 21:06)
Markus schrieb:

> Wie im Titel schon steht, bin ich auf der Suche nach einem einfachen
> Beispiel, in dem ein Java-GUI mit den Komponenten Model, View ud
> Controller implementiert ist (hab selbst noch keine genaue Vorstellung,
> wie das zu implementieren ist).
> Die MVC-Komponenten sollten dabei auch in eigenen Klassen liegen.
> Das Beispiel hier find ich gar nich so schlecht aber hier ist halt
> keine strikte Trennung zwischen Controller und View:
>
> Oder hab ich da was falsch verstanden?
> Danke schonmal für eure Hilfe


was soll es denn werden, eine client application oder eine web
anwendung.

Michael
Markus (22.02.2006, 22:03)
Es soll nur ein kleines Java-GUI mit Swing werden, an dem ich halt klar
sehen kann, was Model, View und Controller sind und wie man diese
implementiert.

Markus
Michael Hüttermann (22.02.2006, 22:29)
Markus schrieb:

> Es soll nur ein kleines Java-GUI mit Swing werden, an dem ich halt klar
> sehen kann, was Model, View und Controller sind und wie man diese
> implementiert.


ein lupenreines MVC wird von swing nicht unterstützt da muss ich dich
enttäuschen. allerdings kannst du hier weniger falsch machen als bei
web-anwendungen. prinzipiell ist es so das swing das "separable model
design" hat das so aussieht das ein model existiert (jede visuelle hat
ihr model zB TableModel, ListModel...) und auf der anderen seite eine
UI-Komponente die letztendlich view und controller vereinigt.

als entwickler stellt sich die sache so da dass normalerweise die die
view/controller Facette der Komponente von der Komponente selbst
abgedeckt wird (also zB von JButton, JTree...inkl. der Listener).
Diese Komponentenklasse delegiert die View-relevanten Dinge (abhängig
vom L&F) zum assozierten UI object welches von der aktuell
installierten L&F bereitgestellt wird.

als entwickler kannst du (bzw. musst du wie bei der Tabelle) sowohl das
Model als auch das View der Komponente neu zuweisen. dafür stehen
funktionen bereit wie zB setUI.

Michael
Markus (23.02.2006, 10:16)
Na ich hab mir das eigentlich so vorgestellt:
Model: Eine Klasse die irgendwelche Daten verarbeitet (z.B: wie in dem
o.g. Beispiel Einheiten umrechnen)
View: Eine Klasse, die zur Ein- und Ausgabe dient (z.B. ein GUI oder
ein Kommandozeilentool)
Controller: Da weiss ich halt noch nicht so genau, was der da genau
machen soll. In dem Beispiel sind ja View und Controller in dem GUI
vereint.

Ich such nun ein Beispiel wo man diese drei Teile wirklich in separaten
Klassen liegen hat, so dass ich seh, wer wen wie steuert.

Markus
Karsten Lentzsch (23.02.2006, 12:24)
Markus schrieb:

> Wie im Titel schon steht, bin ich auf der Suche nach einem einfachen
> Beispiel, in dem ein Java-GUI mit den Komponenten Model, View ud
> Controller implementiert ist [...]


Schau Dich nach geeigneten Swing- oder
Desktop-Mustern um, klebe nicht an MVC.

Swing selbst ist in einer Form implementiert,
die mit MVC nur noch den Ursprung und die
Motivation gemein hat. Für Swing-Anwendungen
bieten sich das MVP-Mustern an und
"Presentation Model". Beide findest Du bei
Martin Fowler in einem Draft beschrieben.
Fowler zeigt auch Quelltextbeispiele.

Ich habe Fowlers Musikalbenbeispiel in einem
Swing-Tutorial mittels "Presentation Model"
implementiert. Das Tutorial ist Teil der
quelloffenen JGoodies Binding-Bibiliothek,

Ich biete Diagramme zu Presentation Model und
MVP in einer Präsentation zu Desktop-Mustern,

Die Präsentationen sind zum Vortragen gedacht;
sind aber mehr als gar nichts.

-Karsten
Michael Rauscher (23.02.2006, 12:45)
Markus schrieb:
> Na ich hab mir das eigentlich so vorgestellt:
> Model: Eine Klasse die irgendwelche Daten verarbeitet (z.B: wie in dem
> o.g. Beispiel Einheiten umrechnen)
> View: Eine Klasse, die zur Ein- und Ausgabe dient (z.B. ein GUI oder
> ein Kommandozeilentool)
> Controller: Da weiss ich halt noch nicht so genau, was der da genau
> machen soll. In dem Beispiel sind ja View und Controller in dem GUI
> vereint.


Das ist ja das Problem, das Michael und Karsten ansprechen. Beim
"echten" MVC kümmert sich der Controller um die Eingabe.

Man kann also nur ein Quasi-MVC nachbilden, d. h. man ignoriert einfach
den Umstand, dass die Eingabe an ganz anderer Stelle behandelt wird.
Dann lassen sich Listener als Controller auffassen.

> Ich such nun ein Beispiel wo man diese drei Teile wirklich in separaten
> Klassen liegen hat, so dass ich seh, wer wen wie steuert.


Vor einiger Zeit habe ich mal etwas in der Richtung gepostet. Muss ich
suchen... Da isser:



Gruß
Michael
Sven Drieling (23.02.2006, 17:38)
Michael Rauscher wrote:

Hallo,

> Man kann also nur ein Quasi-MVC nachbilden, d. h. man ignoriert einfach
> den Umstand, dass die Eingabe an ganz anderer Stelle behandelt wird.
> Dann lassen sich Listener als Controller auffassen.


TikeSwing ist eine Lösung, die eine MVC-Schicht über Swing legt.

Tomi Tuomainen, "Use high-level MVC and POJOs with Swing - An introduction
to the TikeSwing framework", 20-Jun-2005, javaworld.com


Im Guide und übersichtlichen Quelltext kann man nachschauen wie das
aufgebaut ist.

tschuess
[|8:)
Michael Rauscher (24.02.2006, 06:51)
Sven Drieling schrieb:
> Michael Rauscher wrote:
> Hallo,
>>Man kann also nur ein Quasi-MVC nachbilden, d. h. man ignoriert einfach
>>den Umstand, dass die Eingabe an ganz anderer Stelle behandelt wird.
>>Dann lassen sich Listener als Controller auffassen.

> TikeSwing ist eine Lösung, die eine MVC-Schicht über Swing legt.


Ein Quasi-MVC.

> Tomi Tuomainen, "Use high-level MVC and POJOs with Swing - An introduction
> to the TikeSwing framework", 20-Jun-2005, javaworld.com


Gut, "High-Level" MVC hört sich natürlich schöner an :)

Gruß
Michael
Michael Hüttermann (24.02.2006, 15:07)
Markus schrieb:

> Na ich hab mir das eigentlich so vorgestellt:
> Model: Eine Klasse die irgendwelche Daten verarbeitet (z.B: wie in dem
> o.g. Beispiel Einheiten umrechnen)
> View: Eine Klasse, die zur Ein- und Ausgabe dient (z.B. ein GUI oder
> ein Kommandozeilentool)
> Controller: Da weiss ich halt noch nicht so genau, was der da genau
> machen soll. In dem Beispiel sind ja View und Controller in dem GUI
> vereint.
> Ich such nun ein Beispiel wo man diese drei Teile wirklich in separaten
> Klassen liegen hat, so dass ich seh, wer wen wie steuert.


MVC ist ein Architectural Pattern. Versteife Dich nicht zu sehr darauf.
Beherzige auch Design Patterns.

Michael
Ähnliche Themen