MVC - Model an folgemdem Beispiel?
-
Existieren tut der Controller schon (primär wohl in Form diverser Listener oder auch Actions), aber die werden halt für gewöhnlich anonym direkt in den Views implementiert anstatt sie logisch zu trennen.
Es kommt imo einfach darauf an, was man nun wirklich kapseln will. In den meisten Fällen will man doch einfach das Datenmodell von der GUI trennen, um es bei Bedarf auch unabhängig davon verwenden zu können. Dann schmeisst man meistens View und Controller zusammen, weils schneller geht. Möchte man hingegen auch die GUI unabhängig vom Datenmodell halten, sollte man natürlich auch dem Controller etwas mehr Beachtung schenken und denn evtl. logisch trennen bzw. generisch halten.
-
ok gut wo ortne ich dann meine berechnung einheit an?
ich hol mir daten aus er db .. berechne diese und speichere di daten in eine Datenobjekt, welches ich mit einer nderne Klasse darstelle...
-
Programmlogik (also die Berechnungen) gehört ins (Daten-)Modell.
-
Daten-Model== Model?
Wie kann ich eine Access Datenbank in ein MVC Model trennen?
M= Tabellen?
C= Abfrage ,Formulae (Eingabe)
V= Formulae ,Berichte (Ausgabe)
??
-
Unter View (V) fallen alle Elemente der GUI, die für den Benutzer sichtbar sind, also Fenster, Tabellen, Bäume aber auch Eingabeelemente wie Knöpfe oder Dialoge.
Das Model (M) repräsentiert die Daten als Objektstruktur (OOP), die Du nun in den Elementen der View darstellen willst.
Der Controller (C) steuert die kommunikation zwischen V und M. Also beispielsweise steuert ein Listener, was passieren soll, wenn man einen Button drückt. Zum Beispiel könnten sich dann die Daten im Model verändern oder eine Methode der Programmlogik aufgerufen werden.
Die Programmlogik (also etwaige Methoden oder Algorithmen, die Berechnungen auf den Daten des Modells durchführen oder dieses manipulieren) ist für gewöhnlich gemäß OOP Teil des Modells.
Wo Du die Daten für das Modell her holst, also z.b. aus einer Datei oder (wie in Deinem Fall) aus einer Datenbank einlesen bzw. direkt über die View erzeugen, das ist durch das MVC Prinzip nicht näher spezifiziert.
-
ok byto schon mal ganz nett.. und hiflreich.. aber könnte ich nun nich ein MVC modell quasie meien access daten und eingabem askene als eigenes MF cmodell sehen , und dann in meinem haupt programm welches ja daten aus der DB liest, die datenbank insgesamt als ein tel des Models sehen?
-
Ist schwer einzuschätzen, wie man die DB nun sinnvoll in das Konzept integriert, weil einfach zu wenig von Deinem Anwendungsfall bekannt ist. Es wird auf jeden Fall wohl sinnvoll sein, eine Art Persistenzschicht zwischen die DB und das Model zu legen, die sich um die Kommunikation kümmert (also Lesen und Schreiben der DB).
Wie genau man das nun macht, hängt wohl immer vom Anwendungsfall ab. Evtl. ist für Dich auch ne 3-Tier Architektur sinnvoll: http://de.wikipedia.org/wiki/Dreischichtige_Architektur
-
danke für die hilfe... aber das 3-schichtig modell kann uich nich einsetzen, da die DB bisher für diesen Protoypen immer Lokal auf dem rechner ist .. wird als kein netzwerk bzw. client-server konzept verwendet..
-
Ich weiss ja nicht, mit welcher Sprache Du entwickelst. Ich gehe mal von C++ aus, da kenne ich mich nicht gut aus. Aber ich schätze mal, da wird es auch schon fertige Lösungsansätze geben für das O/R-Mapping (also die Abbildung von Daten einer DB auf ein objektorientiertes Modell und umgekehrt). In Java gibts da einige Frameworks (z.B. Hibernate), so dass man das Rad nicht neu erfinden muss.
-
es geht darum das ich ja qusie zwei anwendungen habe Einmal DB Access
Da gebe ich ja über Formulare etc. daten ein welche dann in Tabellen gespeichert werden... da hab ich ja dann keeine (View) geh ich mal aus, da ich ja nur daten eingeben.. und durch button überprüfe etc.In der Anwendung in C++ hol ich mir dann daten der DB und arbeite damit
qusie 3 button :Daten laden
Daten berechnen
Daten anzeigen
habe also 2 MVC modelle einmal C++ Anwendung und einmel die DB odeR?
-
Warum denn zwei Anwendungen? Verstehe ich nicht. Der DB Access gehört doch zu der Anwendung dazu. Oder willst Du das jetzt irgendwie als separate Anwendung kapseln?
Grundsätzlich dient MVC der Trennung von Daten (Model) und GUI (View). Wenn eine Anwendung keine GUI hat, dann kannst Du also auch kein MVC da anwenden.
Lies es Dir am besten nochmal bei Wiki durch: http://de.wikipedia.org/wiki/MVC
Irgendwie habe ich das Gefühl, dass Du den Sinn und Zweck noch nicht wirklich kapiert hast.

-
Access DB ist ja quasie auch ne Anwendung wenn ich sie in Acess öfnnen oder nich?
weil ich ja da auch Dialog bzw. Formale habe mit denen ich arbeite..und wenn ich das extra als MVC kapsle ?? frag ich hier ob das sin macht..
die hauptanwendung öffnen ja nur die daten der DB und schreib da nix rein..
HAbe als einmal die DB Anwendung ins ACcess und die C++ Anwenudng?
oder soll ich das MFC konzept komplet weg lassen..
-
Benutze es nur, wenn Du ne GUI hast und Du die vom Rest unabhängig machen willst. MVC hat mit Datenbanken per se nix am Hut.
-
hmm.. ok.. dann werd ich das kapitel in dem ich die Anwendung ahnand des MVC Modell erklärt hätte weg... danke für eure hilfe;)