# [MVC] Main --Klassen--> Controller <--Variablen-- Model



## GNA (22. Jan 2011)

Hallo,
ich hab eine Frage zum MVC-Prinzip unter Java.

Ich habe 3 Klassen, Main, Controller und Model, die weiteren sind in diesem Fall nicht wichtig.

Ich übergebe per Model dem Controller die jeweiligen Unterklassen. Dann versuche ich noch vom Model dem Controller 3 Variablen zu übergeben. Das klappt aber nicht so wie ich mir das vorstelle.

Was muss ich ändern? Wenn dazu noch ein zwei Worte Erklärung dabei wären, wär das natürlich super 

Thx 4 help 

PS: Die 3 Klassen sind natürlich gekürzt um euch unnötiges Lesen zu ersparen, wenn doch noch etwas von Relevanz sein sollte, kann ich das natürlich ergänzen  . 

Model:

```
/**
*Hier übergebe ich den anderen Klassen die jeweiligen klassen auf die sie zugreifen dürfen.
*/
        Model model = new Model();
        View view = new View(model);
        Controller controller = new Controller(model, view);
```

Controller:


```
/**
* Hier mache ich die anderen Klassen die von der Main Methode übergeben wurden, verfügbar und mir Variablen vom Model zu holen.
*/

    private Model model;
    private View view;
    private boolean fertig;
    private int cache;
    private char[] feld;
    private char gewinner;
    private char spieler;

public Controller(Model model, View view, char[] feld, char gewinner, char spieler) {
        this.view = view;
        this.model = model;
        this.feld = feld;
        this.gewinner = gewinner;
        this.spieler = spieler;
    }
```

Model:


```
/**
* Hier versuche ich diese 3 Variablen dem Controller zu übergeben, damit diese auf andere Klassen weiterverteilt werden können.
*/

    private char[] feld = new char[10];
    private char spieler;
    private char gewinner;

    public Model(char[] feld, char spieler, char gewinner) {
        this.feld = feld;
        this.spieler = spieler;
        this.gewinner = gewinner;
```


----------



## XHelp (22. Jan 2011)

GNA hat gesagt.:


> Ich übergebe per Model dem Controller die jeweiligen Unterklassen. Dann versuche ich noch vom Model dem Controller 3 Variablen zu übergeben. Das klappt aber nicht so wie ich mir das vorstelle.



Dein Model weiß doch gar nichts vom Controller, wie willst du ihm irgendwas übergeben?
Generell sollte Model dem Controller auch keine Werte übergeben. Evtl die Listener (die der Controller ggf. beim Model anmeldet) benachrichtigen, dass sich Werte geändert haben, dann holt sich der Controller selber die Werte.


----------



## GNA (22. Jan 2011)

achso, also gibt es effektiv keine Möglichkeit, das die Variablen vom Model zum Controller kommen, da das Model ja laut Objektorientierung nichts vom Controller wissen darf.

Also muss ich defakto alle Variabeln die ich in den oberen Klassen brauche, im Controller auflisten und diese dann auf die unteren Klassen übergeben, hab ich das richtig verstanden?


----------



## XHelp (22. Jan 2011)

Das hat nichts mit Objektorientierung zu tun, wenn, dann mit MVC.
Ich verstehe nicht so ganz war du überhaupt willst, deswegen kann ich dir auch keine konkretere Antwort geben:
- Warum willst du dem Controller Variablen übergeben
- Was heißt "Variablen im Controller auflisten"
- Welche Unterklassen?
usw


----------



## GNA (22. Jan 2011)

Ich will dem Controller Variablen übergeben, damit ich sie auf andere Klassen weiterverteilen kann. Die Idee ist bei genauerer Betrachtung total blödsinnig, da wie du schon sagtest das Model vom Controller ja garnichs weiß!
Unterklassen in dem Sinne, dass sie in der Hierarchie unter dem Controller stehen, also nicht auf ihn zugreifen dürfen, aber umgekehrt schon.

- Was heißt "Variablen im Controller auflisten"
Da weiß ich nicht, was du meinst  .

Ich denke ich hab es jetzt verstanden. Ich muss die Variablen im Controller haben, damit ich sie verteilen kann. Wenn ich sie ändern muss, kann ich das entweder über den Rückgabewert der Methoden oder über den von dir erwähnten Listener machen. Damit ist die Frage erledigt, es funktioniert. THX 4 HELP


----------

