Das Entwurfsmuster Model-View-Controller

Slides:



Advertisements
Ähnliche Präsentationen
programmiert April-Juni 2003 von Knut Riechmann
Advertisements

Programmieren im Großen von Markus Schmidt und Benno Kröger.
Ein Beispiel in Java.
Kapselung , toString , equals , Java API
2. Review SWT Praktikum SS062 Allgemeines Editor stellt eine webfähige Entwicklung der IT-basierten Dienstleistungen dar Kunde soll mit Hilfe.
Wenn man hot potatoes startet erhält man folgenden Bildschirm.
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Bastian Cramer, Universität Paderborn Entwurfsmuster für Webanwendungen Projektgruppe: Generierung von Webanwendungen aus visuellen Spezifikationen.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
MVC.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Die Türme von Hanoi Die Lösungsfindung nach dem Prinzip der Rekursion wird noch einmal textuell und grafisch erläutert
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Das Java-Hamstermodell
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Entwurfsmuster EDV Entwurfsmuster.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
UML Begleitdokumentation des Projekts
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Java programmieren mit JavaKara
Kapitel 1 – Erste Schritte
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Dateien Datei = File (engl.) Mögliche Inhalte einer Datei
1.2 Attribute und Methoden Aufbau einer Java-Klasse:
Rationalisierung sollte man bei uns verbieten!!!
Gruppe: Gewinnt Überblick 1.0 (Martin Kapfhammer)
Eine Präsentation von Peter Rasser
Internet und SMS Internet und SMS Daniel Rickenbacher Jeremy Deuel.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Gestern: Kara Steuerung: Endliche Automaten.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Dieser Vortrag wird gesponsort von:
Programmieren mit Delphi Informatik. Inhalt Projekt Reaktion Objekte im Programm Reaktion Klassen Klassen im Programm Reaktion Objekte verfügen über Methoden,
Neukonzeptionierung des SVNCheckers > Malte Legenhausen > DLR > Folie 1 Observer - Pattern Malte Legenhausen, Robert Werschnitzke Asea Brown.
Tutorium Software-Engineering SS14 Florian Manghofer.
SE: Systementwurf, © Till Hänisch 2003 Systemarchitektur nach Sommerville, Software Engineering, Addison Wesley.
© Tenbusch Oberstufenzentrum Informations- und Medizintechnik Objektorientierte Programmierung mit Java.
Die allgemeine Liste.
Schlange und Stapel.
Eine Präsentation von Sandro Schluep und Leon Wink.
Schnittstellen.
Venusspiegel und Marsschild
Datentypen: integer, char, string, boolean
Die Klasse Geist.
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Die Klasse Vielfrass in Java
Allgemeine Befehle für die allgemeine Liste
Die Struktur einer Java-Klasse
Gewachsene Architektur Das kann nicht funktionieren!
SS 04 Christiane Rauh Christian Hellinger
Von Cem, Maurice und lars
Programmiermethodik Übung 9
Mögliche Stoffverteilung im Grundkurs
Objects first mit BlueJ und Greenfoot
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
1. Die rekursive Datenstruktur Liste 1
9. Vererbung und Polymorphie
Informatik Softwareentwicklung – 4.3 Entwurfsmuster
 Präsentation transkript:

Das Entwurfsmuster Model-View-Controller

Die Geschichte hinter MVC Bereits sehr früh in der Geschichte der Softwareentwicklung machten Programmierer die Erfahrung, dass Programme mit wachsender Größe die Tendenz haben, so unübersichtlich zu werden, dass niemand mehr den Code verstehen kann. Um dem entgegenzuwirken, erfand man in den 1970er Jahren Model-View-Controller (MVC), das eine systematische Ordnung in den Code zu bringen versuchte. Dies geschah also lange vor der Erfindung von Java in einer heute kaum noch bekannten objektorientierten Sprache namens Smalltalk. MVC hat sich über die Jahre so sehr bewährt, dass es zum ältesten und bis heute noch einem der komplexesten Entwurfsmuster wurde.

MVC unterteilt den Code in drei Komponenten: Aufbau von MVC MVC unterteilt den Code in drei Komponenten: Das Modell (engl. Model) enthält die eigentlichen Funktionalitäten des Programms. Die Sicht (oder Präsentation, engl. View) übernimmt den Dialog mit dem Benutzer. Einerseits stellt sie alle relevanten Informationen des Models übersichtlich dar. Andererseits nimmt sie Eingaben des Benutzers entgegen. Die Steuerung (engl. Controller) überwacht die Tätigkeit von Model und View und gibt beiden die notwendigen Befehle. Der Controller enthält also nur die Programmlogik und wird damit meistens schlank im Vergleich zu Model und View. Das ist ein großer Vorteil gegenüber Nicht-MVC-Projekten, bei denen die Logik oft über viele Klassen verstreut ist.

„Klassendiagramm“ von MVC Das Zusammenwirken der drei Komponenten lässt sich wie folgt veranschaulichen: Controller View Model beobachtet > informiert > < steuert steuert > Das Zusammenspiel zwischen View und Model wird dabei mit dem Entwurfsmuster Beobachter realisiert. Dadurch hat der Controller zunächst nichts mit der Kommunikation zwischen View und Model zu tun, sondern die View reagiert selbstständig auf jede relevante Veränderung im Model. Auch dieser Ansatz hält den Controller schlank.

Verwendung von Schnittstellen Sinnvollerweise programmiert man zunächst Schnittstellen für Model, View und Controller und schreibt erst dann konkrete Klassen für jeden der drei Teile. Das hat den Vorteil, dass alle drei Teile unabhängig voneinander austauschbar sind. In unserem Labyrinthspiel wären zum Beispiel folgende Ersetzungen denkbar: Model: Statt dicken Wänden könnte man dünne Wände benutzen. Man könnte mehrere Stockwerke bauen. View: Statt in 3D könnte man das Labyrinth in 2D darstellen (oder einfach nur als beschreibenden Text). Controller: Man könnte unter bestimmten Umständen erlauben, durch Wände zu gehen (z. B. bei Geheimtüren).

Schritte der MVC-Programmierung Wir haben in unser Labyrinthspiel zusätzlich zum Ladenknopf auch noch einen Speichernknopf eingebaut. Dazu waren folgende Schritte nötig: In der View: Wir haben den Knopf erzeugt und ins Layout eingefügt. speichernknopf = new JButton ("Labyrinth speichern"); dialograum.add (speichernknopf); Wir haben dafür gesorgt, dass der Speichernknopf von der View beobachtet wurde. speichernknopf.addActionListener (this); Wenn der Speichernknopf gedrückt wurde, haben wir die Benutzerin gefragt, in welche Datei sie das Labyrinth speichern will, und dann dem Controller mitgeteilt, dass er dafür sorgen soll, dass das Labyrinth gespeichert wird. controller.speichereLabyrinth (...);

Schritte der MVC-Programmierung (2) Im Controller: Wir haben die Methode speichereLabyrinth () geschrieben, die den Auftrag, das Labyrinth zu speichern, an das Model weitergibt. model.speichereLabyrinth (labyrinthDatei); Nach dem Speichern haben wir nochmaliges Speichern verboten. view.erlaubeSpeichern (false); Wenn das Spiel sich durch Bewegen oder Marken setzen verändert hat, haben wir Speichern wieder erlaubt. view.erlaubeSpeichern (true);

Schritte der MVC-Programmierung (3) Im Model: Wir haben die Methode speichereLabyrinth () geschrieben. In der View: Wir haben die Methode erlaubeSpeichern () geschrieben, die den Speichernknopf ein- und ausschaltet. public void erlaubeSpeichern (boolean erlaubt) { speichernknopf.setEnabled (erlaubt); } Wir haben insgesamt also in allen drei Bestandteilen Model, View und Controller programmieren müssen, um die neue Funktionalität einzubauen. In jedem Bestandteil mussten wir die Schnittstelle und die implementierende Klasse ändern. Das war viel Arbeit, hielt aber den Code übersichtlich.