Anwendung des MVC Konzepts

Status
Nicht offen für weitere Antworten.

maxth

Aktives Mitglied
Hallo,

ich bin gerade dabei ein Programm zuschreiben nach dem MVC Konzept. Dabei habe ich einige Fragen. In meinem Model habe ich eine Arraylist mit Werten die aus einer Datenbank kommen. Dieser Werte möchte ich später in meinem Programm, im IE und in einem PDF angezeigt bekommen. Wie koordiniere ich das mit dem Controller. Ich hab keinerlei Erfahrung mit Controllern, aber das Konzept bietet mir die besten Möglichkeiten.

Ich hoffe mir kann vielleicht jemand einen Denkanstoß geben oder vielleicht sogar einen Ansatz.

Vielen Dank im vorraus.
 

maxth

Aktives Mitglied
Hier ist meine Model Klasse.

Vermieter

Java:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
 

 
public class Vermieter {
    
    String s;
    ArrayList VermieterListe = new ArrayList();

    Verbindung vb = new Verbindung();
    
  

    
    public Vermieter() {
        
        vb.verbinden();
       
            	 
             s = "SELECT * FROM vermieter";
             
             ResultSet r =  vb.execSql(s);
             
             try {
				while(r.next()) {
				  // System.out.println("ID : " + r.getString(1));
					int z = 0;
					 z = z + 1; 
					 
					VermieterListe.add(z + ". Wohnung"); 
					
				   VermieterListe.add(r.getString(1));
				   
				   VermieterListe.add(r.getString(2));
				 
				 }
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
               
               System.out.println(VermieterListe);
              
            
        
  
       
    }
 
    
}

VermieterController KLasse

Java:
public class VermieterController {
	
	Vermieter vermieter = new Vermieter();
	
	
	public VermieterController(){
		
		
		
	}
	
		
	}

um mal ein bisschen konkreter zu werden, ich weiß nicht genau wie die Controller Klasse aufgebaut ist und wie sie genau funktioniert. Über die Aufgabe des Controllers bin ich mir im klaren.
Der Benutzer soll später im Programm die Möglichkeit haben, die Datenbankinhalte im Programm angezeigt bekommen und im IE oder PDF so als zusatz features.

Mit GUIs habe ich schon gearbeitet da werde ich nicht so viele Probleme bekommen, aber dieser Controller:bahnhof:;(
 

Michael...

Top Contributor
ich weiß nicht genau wie die Controller Klasse aufgebaut ist und wie sie genau funktioniert
Den Aufbau musst Du festlegen, abhängig davon was der Controller machen soll. Wie der Name schon sagt dient der Controller zum Steuern.
Ein konkretes Beispiel wäre:
Du hast eine GUI mit Liste und Buttons als View, welche spezielle Models darstellen kann, Dein VermieterModel entspricht dieser Art des Models (z.B. aufgrund von Vererbung/Implementierung). Dann hast Du einen Controller, beim Starten erzeugt er eine Instanz des Vermietermodels und eine Instanz der GUI, ausserdem teilt er der GUI mit, dass sie die Instanz des Vermietermodels darstellen soll. Wenn jetzt ein Anwender einen Eintrag der Liste selektiert und auf den Löschen-Button drückt, empfängt der Controller diese Aktion und ruft dann die löscheEintrag(xy) Methode auf dem Model aus.
 

maxth

Aktives Mitglied
Danke für deine Antwort.


Jetzt komme ich zu dem Problem das MVC in der PRaxis anzuwenden.

Jetzt habe ich ein View geschrieben und ein Model, und in dem VIEW soll jetzt ein Eintrag gelöscht werden, ich habe es mal probiert, aber alles andere als nach dem MVC Konzept.

Vielleicht könnt ihr mir helfen und zeigen wie das aussehen soll.

Model
Java:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
 

 
public class WohnungErsteller   {
    
    String s;
   

   ArrayList<Wohnung> list = new ArrayList<Wohnung>();

    Verbindung vb = new Verbindung();
    
  
    
    public WohnungErsteller() {
        
        vb.verbinden();
       
    int counter = 0;

             s = "SELECT * FROM vermieter";
             
             ResultSet r =  vb.execSql(s);
             
             try {
				while(r.next()) {
				  
					//counter++;
					
					//System.out.print(r.getString(1));
					
					list.add(new Wohnung("ID: " + r.getString(1) ,"Wohnung: " + r.getString(1), "Name: " + r.getString(2)));
					//list.add(new Wohnung("Villa", "Peter"));
					
			
					
				
				 }
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			
			
           
            
    }
 
    public String getWohnung(){
		
    	return s;
    	
    	
    }
    
}

View

Java:
import java.awt.*;
import java.awt.event.*;
import java.sql.ResultSet;
import java.util.ArrayList;
 
import javax.swing.*;
 
public class WohnungAnzeigen extends JFrame {
    Verbindung vb = new Verbindung();
    WohnungErsteller wohnung = new WohnungErsteller(); //Klasse der Arraylist
    //ArrayList<Wohnung> list = new ArrayList<Wohnung>();
    
    int counter = 0;
    
    
	
    private JTextField textField1;
    private JTextField textField2;
    private JTextField textField3;
    
    
    private JButton next;
    private JButton back;
    private JButton loeschen;
    private JButton aendern;
    
    
    public WohnungAnzeigen() {
    	super("Anzeige");
        this.setLayout(new GridLayout(3, 1));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setBounds(0, 0, 300, 200);
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        this.setLocationRelativeTo(null);
        
        textField1 = new JTextField();
        textField2 = new JTextField();
        textField3 = new JTextField();
        
    	
    	
    
        
        next = new JButton("Next");
        next.addActionListener(new ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
            	
             showNext();
             
            }
        });
        
        back = new JButton("Back");
        back.addActionListener(new ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
            	showLast();
            	
            	
            }
        });
        
        
        aendern = new JButton("edit");
        aendern.addActionListener(new ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
            	
            }
        });
        
        
        loeschen = new JButton("delete");
        loeschen.addActionListener(new ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
            	deleteCurrent();
            }
        });
        
        
        this.getContentPane().add(textField1);
        this.getContentPane().add(textField2);
        this.getContentPane().add(textField3);
        //this.getContentPane().add(transferButton);
        this.getContentPane().add(back);
        this.getContentPane().add(next);
        this.getContentPane().add(aendern);
        this.getContentPane().add(loeschen);
    }
	
    
    public void showNext() {
	    
		counter++;
		
	    if (counter>=wohnung.list.size()) counter = 0;
	    textField1.setText(wohnung.list.get(counter).getName());
	    textField2.setText(wohnung.list.get(counter).getMieterName());
	    textField3.setText(wohnung.list.get(counter).getID());
	
}
    public void deleteCurrent(){
    	
    	String d;
    	String s; 
    	
    	d = (wohnung.list.get(counter).getID());
    	vb.verbinden();
    	
    	s = "DELETE FROM `mkb`.`vermieter` WHERE `vermieter`.`ID` =" + d;
    	 
    	
    	
    	 
    	
    	
    }
  public void showLast() {
	    
		counter--;
		
	    if (counter>=wohnung.list.size()) counter = 0;
	    textField1.setText(wohnung.list.get(counter).getName());
	    textField2.setText(wohnung.list.get(counter).getMieterName());
	
	
}
    
    public static void main(String[] args) {
        new WohnungAnzeigen().setVisible(true);
    }
}

Vielen Dank im vorraus für eure Hilfe.
 
B

bygones

Gast
Hier ist meine Model Klasse.
das ist keine Model klasse... du hast logik ueber die SQL befehle drin.

Java:
public class WohnungErsteller   {   
    private String s;
    private List<Wohnung> list = new ArrayList<Wohnung>();

   // getter und vll setter hoechstens
}
das waere eine Modelklasse (wobei der Name mehr nach Controller klingt... ?!)

das befuellen der Daten ist sache des controllers - damit hat das Model bzw auch die View gar nix zu tun
 

maxth

Aktives Mitglied
Okay, also ist mein vorhin gedachtes model eher ein Controller,
kann man den als Controller lassen oder muss da noch mehr geändert werden.

Ich hab ja noch eine Klasse die "WohnungsObjekte" erstellt, würde dies heißen dass das meine Model KLasse wär oder wie?

Model
Java:
public class Wohnung {
	
	
    private String name;
    private String mieter;
    private String id;
    
    
    
    public Wohnung( String id, String name, String mieterName) {
        
    	this.name = name;
        this.mieter = mieterName;
        this.id = id;
       
    }
    
    public Wohnung() {
		// TODO Auto-generated constructor stub
	}

	public String getName() {
        return name;
    }
    
    public String getMieterName() {
        return mieter;
    }
    
    public String getID() {
        return id;
    } 
   

}
 
B

bygones

Gast
Ich hab ja noch eine Klasse die "WohnungsObjekte" erstellt, würde dies heißen dass das meine Model KLasse wär oder wie?
genau. ModelKlassen sind im Objektgraph ganz unten, also Blaetter... heisst sie erzeugen keine weiteren Objekte / Strukturen sondern speichern nur und bieten sie moegl. an
 

MrWhite

Bekanntes Mitglied
genau. ModelKlassen sind im Objektgraph ganz unten, also Blaetter... heisst sie erzeugen keine weiteren Objekte / Strukturen sondern speichern nur und bieten sie moegl. an

Das ist streng-genommen falsch. Das Model im MVC-Konzept stammt aus dem Business-Logic Layer und kann allen möglichen Schund tun.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
P JavaFX Anwendung beendet sich selbst nur als Jar Allgemeine Java-Themen 40
OSchriever Externe Anwendung beenden Allgemeine Java-Themen 41
I Eine Anwendung so gut wie möglich beschützen Allgemeine Java-Themen 9
J exe Anwendung CPU-/Speicherverbauch Allgemeine Java-Themen 5
alderwaran Hoher Sys-Load bei Multithreaded Anwendung Allgemeine Java-Themen 8
S Anwendung die alle Abhaengigkeiten einer Library listet..? Allgemeine Java-Themen 5
P Methoden Anwendung der allMatch()-Methode Allgemeine Java-Themen 5
D Anwendung öffnet hinter Taskleiste Allgemeine Java-Themen 7
I Anwendung auf Netzlaufwerk von mehreren Usern gleichzeitig nutzbar. Allgemeine Java-Themen 3
A Garbage Collector in NetBeans vs. exe Anwendung Allgemeine Java-Themen 33
D Java Anwendung mit dll File Allgemeine Java-Themen 5
B JAVA Prozesse in einer eigenen Anwendung laufen lassen Allgemeine Java-Themen 9
D RMI Einfache Chat-Anwendung mit RMI Allgemeine Java-Themen 0
J Jasper ireport - wieso beendet die Anwendung wenn ich die Preview schließe Allgemeine Java-Themen 1
Tort-E Datenmodell / Struktur der Anwendung Allgemeine Java-Themen 4
E Anwendung verhält sich unter Mac anders als Unter Windows. Allgemeine Java-Themen 4
S Anwendung zum ausrechnen der Differenz von zwei Tagen Allgemeine Java-Themen 9
B Web-Anwendung funktioniert mit Java 1.8, aber nicht mit Java 1.7 (auf Client) Allgemeine Java-Themen 5
L Stack overflow bei einer endrekursiven Funktion (Anwendung: Spezialform des Package Merge) Allgemeine Java-Themen 4
P Anwendung läuft nur mit JDK Allgemeine Java-Themen 2
D Java-Anwendung mit DB, GUI, etc. Allgemeine Java-Themen 3
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
F Unlimited Strength Policy. Frage Verbreitung der Anwendung Allgemeine Java-Themen 1
T Bot für Mql-Anwendung Allgemeine Java-Themen 10
F Java Anwendung Remote starten geht nicht Allgemeine Java-Themen 0
D neuen Prozess starten und anwendung beenden. Allgemeine Java-Themen 3
L Input/Output IO Anwendung Allgemeine Java-Themen 6
M Suche Framework/API für Monitoring-Anwendung Allgemeine Java-Themen 3
M Problem beim Starten der Anwendung Allgemeine Java-Themen 3
C Anwendung läuft nicht auf Mac OS X Allgemeine Java-Themen 2
M Java Anwendung ausführen Allgemeine Java-Themen 5
eskimo328 Swing Client Anwendung für MAC OS (Update Routine) Allgemeine Java-Themen 6
M Process wird gestoppt und nach beenden der Anwendung fortgeführt Allgemeine Java-Themen 4
J Interpreter-Fehler Anwendung startet nicht Allgemeine Java-Themen 5
W Framework für RichClient Anwendung? Allgemeine Java-Themen 4
D Mini Webserver für GUI Anwendung Allgemeine Java-Themen 5
Ollek MVC - Anwendung auf mein Projekt Allgemeine Java-Themen 18
U (Land-)Karten in Java Anwendung einbinden (GoogleMaps/OpenStreetMap) Allgemeine Java-Themen 7
S "Katalog"-Anwendung in Java eine gute Idee? Allgemeine Java-Themen 12
S Wie eine verteilte Anwendung in die Cloud? Allgemeine Java-Themen 4
E Anwendung nutzt plötzlich nicht mehr 100% CPU Allgemeine Java-Themen 2
R Geht das? JRE 1.4 global, 1.6.20 nur für eine Anwendung? Allgemeine Java-Themen 9
K Anwendung bringt JAVA Speicherfehler Allgemeine Java-Themen 11
C Java Anwendung nur einmalig starten Allgemeine Java-Themen 10
eskimo328 Offline/Online Web-Anwendung, Datensynchronisation etc. Allgemeine Java-Themen 9
E Anwendung starten Allgemeine Java-Themen 3
W Java Anwendung in HTML Allgemeine Java-Themen 2
DEvent Aktuelle Uhrzeit per Anwendung Allgemeine Java-Themen 4
C Idee für Anwendung/ Bücher Allgemeine Java-Themen 8
Y Anwendung starten(JAR) - Entscheidung Konsole oder Swing Allgemeine Java-Themen 5
P Java Anwendung mehr Speicher zur Verfügung stellen?? Allgemeine Java-Themen 3
C Kontextmenü erweitern und mit Java Anwendung verknüfen. Allgemeine Java-Themen 3
7 Problem mit webbasierter Anwendung Allgemeine Java-Themen 6
D Java Anwendung in der Shell Allgemeine Java-Themen 5
D Versuch Server - Client anwendung Allgemeine Java-Themen 9
T Welcher Server? JSP und Client-Anwendung Allgemeine Java-Themen 4
R Ausführbare Java Anwendung Allgemeine Java-Themen 27
A Java-Anwendung "richtig" schließen ohne JVM zu beenden Allgemeine Java-Themen 2
B In Anwendung jar file bauen Allgemeine Java-Themen 2
A Webspace für Grails-Anwendung Allgemeine Java-Themen 3
M WebStart Anwendung nicht dauerhaft Cachen Allgemeine Java-Themen 3
A An alle Cracks: Anwendung beenden mit ShutdownHook? Allgemeine Java-Themen 13
D Anwendung startet im Remote Desktop nicht Allgemeine Java-Themen 14
S Testen einer Anwendung durch klicken von Koordinaten Allgemeine Java-Themen 7
M SMS aus Desktop-Anwendung verschicken Allgemeine Java-Themen 8
G Unterschied Enterprise Anwendung und Web Anwendung Allgemeine Java-Themen 30
? Swing Anwendung aus Konsole starten Allgemeine Java-Themen 7
G Weboberfläche für Java Anwendung? Allgemeine Java-Themen 10
Y ProcessBuilder, Prozess wird gestartet, aber Anwendung nicht Allgemeine Java-Themen 5
S jar aus anwendung heraus ausführen Allgemeine Java-Themen 2
J Konsolen Anwendung mit while(true) Allgemeine Java-Themen 6
-MacNuke- Frage zu einer 3-Tier Anwendung Allgemeine Java-Themen 9
M Anwendung nur einmal starten / Zeichen in String zählen Allgemeine Java-Themen 7
F Hilfe beim Starten einer Java Anwendung unter Windows gesuch Allgemeine Java-Themen 8
L Java 1.5 - Anwendung unter 1.6 JRE sehr langsam geworden Allgemeine Java-Themen 8
B getResourceAsStream - standalone Anwendung vs. Web-Anwendung Allgemeine Java-Themen 2
J I18n einer existierenden Anwendung Allgemeine Java-Themen 2
C Java-Anwendung beenden Allgemeine Java-Themen 3
G Auslesen mit welcher Java-Version Anwendung kompiliert wurde Allgemeine Java-Themen 2
C Anwendung nur einmal Starten Allgemeine Java-Themen 11
Z Uralt-Applet in JFrame Anwendung konvertieren Allgemeine Java-Themen 12
J OpenOffice.org Events in eigene Anwendung umleiten Allgemeine Java-Themen 4
T Socket Server Anwendung - Empfang eines Byte-Arrays Allgemeine Java-Themen 7
G Datenbank-Anwendung schnell erstellen. Allgemeine Java-Themen 7
M Versionswechsel bei einer Web-Anwendung Allgemeine Java-Themen 5
A Client/Server-Anwendung Allgemeine Java-Themen 3
G java als anwendung? Allgemeine Java-Themen 11
N externe Anwendung aktivieren (nicht starten!) Allgemeine Java-Themen 3
L Speicherverbrauch einer Anwendung unter Windows Allgemeine Java-Themen 2
C Fehler bei der Anwendung von Transformen. Allgemeine Java-Themen 2
M 1. Probleme mit MouseListener, 2. Anwendung in Infobar Allgemeine Java-Themen 8
P Anwendung minimiert starten Allgemeine Java-Themen 11
G Java Anwendung für Multi-User Allgemeine Java-Themen 2
N Linux-Commands über Java Anwendung ausführen Allgemeine Java-Themen 12
E Anwendung ließt .ini-Datei nicht Allgemeine Java-Themen 3
M Java-Anwendung von CD-ROM Allgemeine Java-Themen 19
E externe Anwendung aufrufen und sich selbst beenden Allgemeine Java-Themen 8
M Datei auf Anwendung ziehen und starten Allgemeine Java-Themen 11
T unsatisfiedlinkerror -> Diese Anwendung konnte nicht gest Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben