Model View Controller Pattern - Suche Hilfe bei Anwendung

Status
Nicht offen für weitere Antworten.

megachucky

Bekanntes Mitglied
Hallo.

Möchte eine Anwendung mit MVC schreiben, mir ist aber noch nicht so ganz klar was wohin gehört.

Ich möchte das Videothek-Umfeld nutzen mit Filmen, Kunden, Verleih, usw.


Hab mal Schnittstellen geschrieben für den Einstieg.

Passt das so? Oder ist im Model schon zuviel, wie zb die get-Methoden?

Mir ist nun leider nicht klar, was der Controller nun macht.

Kann mir bitte jemand an Hand diesem Beispiel etwas weiterhelfen. Danke.



VIEW:


Code:
public interface GUI_Interface 
{
	public String printAlleKundendaten(ArrayList<Kunde> kundenListe);
	public String printAlleMediendaten(ArrayList<Medium> medienListe);
}



MODEL:

Code:
public interface VerwaltungsdatenInterface 
{
	// Medium
	public void addMedium(Medium medium); 
	public void removeMedium(Medium medium);
	
	// Kunde
	public void addKunde(Kunde kunde);
	public void removeKunde(Kunde kunde);
	
	// Verwaltung
	public void setAusgeliehen(Medium medium); 
	public void setZurueckgegeben(Medium medium);
	public boolean isAusgeliehen(Medium medium); // gibt NULL zurück falls nicht ausgeliehen
	public ArrayList<Kunde> getAlleKunden();
	public ArrayList<Medium> getAlleMedien();
}
 

EOB

Top Contributor
hi, also der controller kontrolliert die aktionen die auftreten koennen. mal angenommen, du drueckst auf einen button (View). dann wird der passende controller (Controller) aufgerufen und der startet dann die aktionen (Modell). ich nehm als controller immer die klasse Action und binde die dann an den button. das hat den vorteil, dass man die action oefter verwenden kann. also du hast z.b. eine ExitAction, dann kannst du die ans menu und an einen button haengen usw., sparst somit code und kannst die action (also das was passieren soll) aendern, ohne in der gui rumfummeln zu muessen.

das ist uebrigens das command pattern, welches hier in swing implementiert ist. das commando ist vom invoker getrennt. es gibt auch die moeglichkeit, gleich in der action die funktionalitaet zu haben, ist aber IMHO nicht soo gut.

mal der controller code

Code:
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;

public class MyAction extends AbstractAction {
	
	public void actionPerformed(ActionEvent e) {
		//hier alles machen, z.b. programm verlassen etc
		
	}
}

viele gruesse
mørketid
 

megachucky

Bekanntes Mitglied
Danke.

Konsolenanwendung macht da denke ich keinen Sinn, da werd ich es gleich mit SWING versuchen. Hast du evtl irgendwo schon ein einfaches Beispiel, an dem man sich orientieren kann?

Dinge wie oben zb public ArrayList<Kunde> getAlleKunden(); gehören aber schon ins Model, nicht in den Controller, oder?
 

megachucky

Bekanntes Mitglied
Oh, den Code hab ich vorhin übersehen :) Aber hast du evtl ein komplettes Beispiel mit allen drei MVC Teilen? SWING, ActionListener usw hab ich nur vor langer Zeit mal kurz verwendet.
Da würd ich mich leichter tun.
 

EOB

Top Contributor
hi, den haste nicht uebersehen, den hab ich nachtraeglich eingefuegt :cool: . also ein komplettes bsp. hab ich jetzt hier nicht, aber mach das doch so:


1. ueberleg dir, was du fuer fenster brauchst (also videos hinzufuegen, nutzer loeschen etc)
2. ueberleg dir, wie du das speichern willst (serialisierung, datenbank, plain text)
3. mal dir auf, wies aussehen soll, dann versuch das ohne funktionalitaet nachzubauen (es gibt viele layout manager)
4. erstell dir ein jframe indem du davon erbst und packe alle komponenten (buttons, menues etc) die du willst da rein
5. dann fang der reihe nach an, deine funktionalitaet zu implementieren

das ist nur eine vorgehensweise, es gibt aber viele andere dinge (siehe vert. prototyping, horiz. prototyping etc). alles was zur oberflaeche gehoert, also alles was du sehen kannst ist der VIEW. also buttons, frames, dialoge und so weiter.

ein beispiel, wie man eine action anlegt, diese an einen button/menuitem added:


Code:
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;

public class ExitAction extends AbstractAction {

	//kann ueberschrieben werden
       /*du erweiterst AbstractAction, welche Action implementiert, welche von ActionListener erbt, welcher diese methode     bereitstellt
       */
	public void actionPerformed(ActionEvent e) {
		System.exit(0);

	}
}

dann mittels

Code:
deinButton.setAction(new ExitAction());
oder
deinMenuItem.setAction(new ExitAction());

die action anfuegen.


so, diese Action ist dein controller, welcher es ermoeglicht, dein programm zu verlassen. du hast also i de regel meherer controller fuer eine anwendung. im bsp. hab ich die funktionalitate gleich im controller, da es ja wenig ist. wenns mehr wird, am besten auslagern. also ein komplexeres bsp. waere ein controller zum dateilesen:

Code:
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;

public class ReadFileAction extends AbstractAction {
	
	public void actionPerformed(ActionEvent e) {
		//jetzt auslagern, da evtl. von dateityp abhaengig
               MyFilereader mfr = FileReaderFactory.createInstance(dateiNameAlsString);
	}
}

im beispiel verwende ich noch interfaces, welche ich jetzt mal nicht aufliste, das zu viel wird. kann ich aber, wenn du willst...sags einfach :).

so, bis jetzt haben wir:


VIEW: JFrames, JDialogs, Buttons, Menues und so weiter
CONTROLLER: bis jetzt nur ExitAction, werden aber spaeter sicher mehr bei deiner app.

was noch fehlt ist das modell. im modell ist dann der ganze rest. also die anwendungslogik. da liegen z.b. dann die klassen, die deine userdaten speichern, laden und so weiter. der MyFileReader waere im modell zum beispiel.

also am ende siehts so aus:


VIEW: JFrames, JDialogs, Buttons, Menues und so weiter
CONTROLLER: bis jetzt nur ExitAction, werden aber spaeter sicher mehr bei deiner app.
MODELL: der rest, wie z.b. MyFileReader

ich wurde dann auch gleich eine 3tier app machen, bestehend aus


praesentationsschicht
anwendungsschicht
persistenzschicht

du siehst also, dass das modell in die anwendungsschicht gehoert und die controller IMHO noch zur praesentationsschicht gehoeren...sagt dir das seeheim modell was? schlags mal nach
:wink: . man kann das natuerlich alles noch schoen mit facade muster und template method etc ausbauen . frag, wenn du naeheres wissen willst!


viele gruesse
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Model View Controller Java Basics - Anfänger-Themen 7
S Model View Controller: Verständnisproblem Java Basics - Anfänger-Themen 13
C OOP Model View Controller - Prinzip Java Basics - Anfänger-Themen 6
K Model-View-Controller Java Basics - Anfänger-Themen 15
K Frage zum Model View Controller Prinzip Java Basics - Anfänger-Themen 6
S Model-View-Controller Konzept Beispiel Java Basics - Anfänger-Themen 11
I Klassen Java Qt Model/View Datenhaltung Java Basics - Anfänger-Themen 4
G Einbindung von MVC (Model-View-Controll) Java Basics - Anfänger-Themen 8
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
G Model mit Models füllen Java Basics - Anfänger-Themen 9
W Befüllung einer Tabelle mit Checkbox, Trennung GUI und Model Java Basics - Anfänger-Themen 5
Q MVC Verständnisproblem: Controller vs model.modelChanged() Java Basics - Anfänger-Themen 0
M Problem mit JTable und Model Java Basics - Anfänger-Themen 3
C Bounded Range Model Java Basics - Anfänger-Themen 1
M Input/Output Vom Model zur Database? Java Basics - Anfänger-Themen 7
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
F MVC: Model Klasse erstellen Java Basics - Anfänger-Themen 3
N local variable model is accessed from within inner class; needs to be declared final Java Basics - Anfänger-Themen 4
L Eigenes List Model für Icon + String -> Speicherhungrig? Java Basics - Anfänger-Themen 8
S Forumlare nach dem MVC-Model Java Basics - Anfänger-Themen 5
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
hdi JList mit Model und Observer -> Chaos, blicke nicht durch Java Basics - Anfänger-Themen 22
K Problem mit Abstract Table Model Java Basics - Anfänger-Themen 5
C JTable Model - getValueAt (int) Java Basics - Anfänger-Themen 3
G JTable mit eigenen Model neu zeichnen Java Basics - Anfänger-Themen 4
L Model einer Table bekommen Java Basics - Anfänger-Themen 6
E Model und i18n bzw. Properties Java Basics - Anfänger-Themen 10
P Tabelle mit Model -> getSelectedRow Java Basics - Anfänger-Themen 4
M model übergeben? Java Basics - Anfänger-Themen 16
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
G SQL View query Java Basics - Anfänger-Themen 4
H Best Practice View probleme Java Basics - Anfänger-Themen 2
L Java Package View Java Basics - Anfänger-Themen 6
S Modell View Controller Verständnisfrage Java Basics - Anfänger-Themen 24
M Erste Schritte Eclipse + design view Java Basics - Anfänger-Themen 3
R aktualisierung des View im MVC-Pattern Java Basics - Anfänger-Themen 5
G Eclipse: In Problems View schreiben? Java Basics - Anfänger-Themen 10
A Datentypen Typecast im View Java Basics - Anfänger-Themen 4
A OOP MVC Frage View Java Basics - Anfänger-Themen 2
F View überwachen Java Basics - Anfänger-Themen 6
S JTree, Problem mit View Update Java Basics - Anfänger-Themen 2
K JAVA HEX View! Java Basics - Anfänger-Themen 2
M Controller + View: Fehlermeldungen Java Basics - Anfänger-Themen 2
E MVC - Was darf View Java Basics - Anfänger-Themen 15
E MVC - ein View für mehrere Models Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal Controller aus FXML Datei entfernen Java Basics - Anfänger-Themen 49
B Objekt von EJB in Controller (CDI) - Klasse füllen? Java Basics - Anfänger-Themen 3
H Eine befühlte Klasse weiter geben an Controller Java Basics - Anfänger-Themen 12
R Variablen Variable an FXML-Controller übergeben Java Basics - Anfänger-Themen 4
N JavaFX - (Controller) - Klasse verkleinern Java Basics - Anfänger-Themen 8
J MVC Pattern, mehrere Controller/Views/Models Java Basics - Anfänger-Themen 0
F MVC -> Probleme beim Controller Java Basics - Anfänger-Themen 6
F Viele Controller-Klassen Java Basics - Anfänger-Themen 5
Antoras Singleton oder Controller / Datenverwaltungsklasse? Java Basics - Anfänger-Themen 10
T Kommunikation zwischen Controller und GUI Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben