MVC.md
... ...
@@ -0,0 +1,57 @@
1
+# Model-View-Controller
2
+
3
+MVC ist ein Design-Pattern (zu deutsch: Entwurfsmuster), das sehr gut bei [OER-Informatik] (https://oer-informatik.de/gui_pattern_mvc) beschrieben wird.
4
+
5
+ Martin Fowler:
6
+> Make a strong separation between presentation (view & controller) and domain (model).
7
+
8
+
9
+
10
+## Graphische Darstellung
11
+
12
+Realisiert mit Mermaid in MarkDown:
13
+
14
+```mermaid
15
+classDiagram
16
+ class Model {
17
+ +getData() String
18
+ +setData(data: String) void
19
+ }
20
+
21
+ class View {
22
+ +displayData(data: String) void
23
+ +getUserInput() String
24
+ +update() void
25
+ }
26
+
27
+ class Controller {
28
+ +handleInput(input: String) void
29
+ +notifyModel(data: String) void
30
+ +notifyView() void
31
+ }
32
+
33
+
34
+ View --> Controller : sendet Benutzereingabe
35
+ Model --> Controller : liefert Daten
36
+ Controller --> Model : aktualisiert Daten
37
+ Controller --> View : erneuert Ansicht
38
+
39
+```
40
+
41
+## Das Model
42
+
43
+Das Model regelt und kapselt den Zugriff und die Verarbeitung der Daten der Problemdomäne und hält den Zustand, der diese Daten repräsentiert. Nur der Teil der Geschäftslogik, der direkt mit der Speicherung, Änderung, Löschung oder Erzeugung von Daten zusammenhängt, liegt im Verantwortungsbereich des Models, ebenso wie Operationen, die unmittelbar auf dem Model ausgeführt werden müssen (z.B. die Berechnung von abgeleiteten Attributen wie z.B. Durchschnitten oder anderen derivied values).
44
+
45
+## Die View
46
+
47
+Die View ist verantwortlich für die Präsentation der Daten eines Models. Es ist möglich, dass unterschiedliche Views die selben Daten unterschiedlich darstellen. Das selbe Model kann unter Umständen als Liste, Tabelle, Formular oder Diagramm dargestellt werden oder für unterschiedliche Endgeräte (als Website, DesktopApp oder für andere Geräte).
48
+
49
+## Der Controller
50
+
51
+Er nimmt die Anfragen des Benutzers entgegen (teilweise mittelbar über die View), gibt Datenänderungen an das Model weiter. Er ruft also unmittelbar die Getter- und Setter-Methoden des Models auf.
52
+Er wählt die korrekte View aus, stellt die nötigen Daten zusammen und sendet alles an den anfragenden Client oder aktualisiert die jeweilige Komponente der View.
53
+
54
+## Vorteil
55
+
56
+Die View kann ausgetauscht werden (statt Swing, nun HTML oder Qt) ohne dass Controller oder Model verändert werden müssen.
57
+Die Datenhaltung kann getauscht werden (JSON oder sqlite statt Datenbank) und View und Controller sind konstant.
... ...
\ No newline at end of file