HSG |
|
Video auf youtube www.railsenvy.com, mvc_song.mp3, mvc1.txt, mvc2.txt, mvc4.txt
Das MVC-Muster sollte besser ein MVC-Muster heißen, da es verschiedene Interpretationen gibt. Eine Ausprägung beschreibt James Dempsey in seinem MVC-Song, der in youtube zu finden ist. Folgende Links sind eine Hilfe bei der Übersetzung.
Theodor Rau, MSS11, Abitur 2012 hat eine schöne Übersetzung erstellt.
Es soll ein Programm geschrieben werden, das mit Hilfe einer grafischen Benutzungsoberfläche die mehrmalige Berechnung des ggTs ermöglicht. Die GUI könnte etwa folgendermaßen aussehen:
Ein Programm mit grafischer Oberfläche soll so konzipiert sein, dass es arbeitsteilig im Team entwickelt werden kann und ein hohes Maß an Wiederverwertbarkeit besitzt. Eine strikte Trennung des Fachkonzepts (Model) von der grafischen Präsentation (View) erfüllt diese Vorgaben. Im Idealfall wissen Model und View nichts voneinander. Die notwendigen Verbindungen werden nur von einem drittem Bestandteil, dem Controller, ausgeführt. Der Controller braucht dazu eine präzise Beschreibung der Schnittstellen von Model und View.
Die Menge aller öffentlichen Signaturen einer Klasse gehört zur Schnittstelle der Klasse. Zusätzlich enthält eine Schnittstelle semantische Festlegungen. Diese werden oft informell in Kommentaren oder durch selbsterklärende Methodennamen geliefert.
Grob gesagt: Eine Schnittstelle einer Klasse enthält alles, was ein Nutzer über die Klasse wissen muss.
Im folgenden Diagramm werden zur Vereinfachung nur die Schnittstellen dargestellt.
Es muss eine Eingabemöglichkeit für die Türnummer (eTuer) geben und einen Button bWaehlen, der die Eingabe auslöst. Die Anzahl der Spiele und der gewonnenen Spiele und eventuell weitere Meldungen sollen angezeigt (lMeldung) werden.
Die View-Klasse kann weitgehend vom ggT-Beispiel übernommen werden (Copy&Paste-Warnung?).
from random import randint if autoplatz == 1: ziegentuer = randint(2,3) elif autoplatz == 2: if randint(1,2) == 1: ziegentuer = 1 else ziegentuer = 3 elif autoplatz == 3: ziegentuer = randint(1,2)
Ist in ziege2.py der Controller 'skinny' genug?
Teste Model aus ziege2.py, indem du auf der Shell 1000 Spiele mit der Wechseltaktik durchführst. Was ist zu erwarten?
Man kann ungestört mit den Klassen aus ziege2.py hantieren, wenn man die Erzeugung des Controllers auskommentiert.
Man sieht, dass man mit Model ohne den 'Ballast' View viele Experimente in kurzer Zeit durchführen kann. Ein weiterer Vorteil der MVC-Architektur.
Schreibe basierend auf das chuck-a-luck-model eine MVC-Realisierung des Spiels mit einer - einfachen - grafischen Oberfläche.
'Spukschloss' - Dr. Bernd Kokavecz, museum0.py, museum1.py