Design Patterns MVC. Marcus Köhler Markus Merath Axel Reusch. Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 1



Ähnliche Dokumente
Model-View-Controller

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

Design Patterns 2. Model-View-Controller in der Praxis

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Struts 2 Das Imperium schlägt zurück?

Model View Controller Pattern

Integrierte und automatisierte GUI-Tests in Java

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Eine Anwendung mit InstantRails 1.7

Präsentation zur Vorstellung meiner Bachelor-Arbeit beim BSE- Seminar. Vortrag von Patrick Bitterling

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Aus unserer Projekt- und Schulungserfahrung Oracle TechNet

Implementation of a Framework Component for Processing Tasks within Threads on the Application Level

Übungen zu Softwaretechnik

Komponenten & Hypermedia Seminar Prof. Dr. Frank Thiesing Struts Java-Framework für Web-Applikationen. Referenten: Fabian Bartelt Jens de Witt

Application Frameworks

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Ein wichtiges Konzept der Software-Architektur

Fragen Arthur Zaczek. Apr 2015

IBM Software Demos Rational Software Delivery Platform - Änderungen an Design und Architektur einer Anwendung

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Java Webentwicklung (mit JSP)

Ein Tool für automatische Performancetests von Java3D Applikationen

Print2CAD 2017, 8th Generation. Netzwerkversionen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Mobiles SAP für Entscheider. Permanente Verfügbarkeit der aktuellen Unternehmenskennzahlen durch den mobilen Zugriff auf SAP ERP.

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Ein mobiler Electronic Program Guide

AutoTexte und AutoKorrektur unter Outlook verwenden

SUB-ID- VERWALTUNG MIT GPP SETUP-GUIDE FÜR PUBLISHER

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

IINFO Storyboard

Fsr Amazon Konfiguration

Netzwerkversion PVG.view

Inhalt. 1 Übersicht. 2 Anwendungsbeispiele. 3 Einsatzgebiete. 4 Systemanforderungen. 5 Lizenzierung. 6 Installation.

Mobiler. Vernetzter. Emotionaler. Wie SBG auf die Entwicklung des Internets reagiert

WLGauge: : Web Link Gauge to Measure the Quality of External WWW Links. Andreas Lübcke

Existierende Systeme I Bibliotheken & Frameworks

Workflows verwalten. Tipps & Tricks

Wir machen neue Politik für Baden-Württemberg

SinnREICH. Professionelle Geschäftsausstattung. Preisliste für Existenzgründer. Marketing & Beratung

Praktikum: Einstieg: Arbeitsplatz, JCreator

HOTEL BÄREN. Familie Sauter Beobachtungen & Problembereiche. Interview mit Stefan Sauter (Miteigentümer)

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach Bremen. Friedrich-Mißler-Straße Bremen

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Auswahl alter Klausuraufgaben aus einer ähnlichen Vorlesung Maßgeblich für die Prüfung sind die Vorlesungsinhalte!

Anleitung über den Umgang mit Schildern

MARCANT - File Delivery System

Ihr IT-Administrator oder unser Support wird Ihnen im Zweifelsfall gerne weiterhelfen.

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Von Perimeter-Security zu robusten Systemen

GEONET Anleitung für Web-Autoren

Checkliste. zur Gesprächsvorbereitung Mitarbeitergespräch. Aktivität / Frage Handlungsbedarf erledigt

Hallo! Social Media in der praktischen Anwendung Warum macht man was und vor allem: wie? Osnabrück, den 07. Juli 2014.

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Orientierungshilfen für SAP PI (Visualisierungen)

Xesar. Die vielfältige Sicherheitslösung

Matrix42. Matrix42 Cloud Trial Erste Schritte. Version

teamsync Kurzanleitung

Mit OSGi Webanwendungen entwickeln Was geht, was nicht?

Die Backup-Voreinstellungen finden Sie in M-System Server unter dem Reiter "Wartung".

Wir bringen Ihre Notes/Domino Anwendungen sicher ins Web , Bilster Berg Drive Resort Michael Steinhoff, agentbase AG.

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Objektorientierte Programmierung

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Eignet sich Eclipse RCP als Enterprise Plattform? 2. Mai 2006 Lars Stucki & Edwin Steiner

Von Windows-Forms zu WPF mit Expression Blend? Thomas Müller conplement AG Nürnberg

Tracking-Beispiele. Inhalt: Standard Tracking / Cookie Tracking Anchor-Tracking Direct Tracking Referer Tracking Tracking von Produkt-Feeds

EndTermTest PROGALGO WS1516 A

Man liest sich: POP3/IMAP

INDIVIDUELLE SOFTWARELÖSUNGEN CUSTOMSOFT CS GMBH

Informatik, Mathematik und Naturwissenschaften

Google Earth und Telefonbücher im Internet

Mehr Interaktion! Aber einfach und schnell!

Die richtigen Partner finden, Ressourcen finden und zusammenführen

JSP und Servlet Programmierung

Erfahrungen mit Hartz IV- Empfängern

Menü auf zwei Module verteilt (Joomla 3.4.0)

Virtuelle Fachbibliothek Ethnologie:

Diana Lange. GENERATIVE GESTALTUNG Arten des Zufalls

Verteilte Paarprogrammierung mit Eclipse

Transkript:

Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 1

Agenda! Allgemeines! Aufgabenverteilung! Alltagsbeispiel! Beurteilung! Konkretes Code-Beispiel! Einsatz im Web! Webbeispiel! Fazit & Ausblick Marcus Köhler Axel Reusch Markus Merath Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 2

Allgemeines Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 3

Das Problem! In Anwendungen waren die Anwendungsdaten mit dem GUI-Code verwoben! Das Design, die Daten und die Logik wurden in einer zentralen Datei unter gebracht Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 4

! Unübersichtlichkeit Die Folgen des Problems! Schwere Wartbarkeit! Schlechte Erweiterungsmöglichkeit! Schlechte Widerverwendungsmöglichkeit des Codes Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 5

Was wollen wir?! Ein Muster durch das bei der Implementierung eine klare Trennung von Datenhaltung, Design und Logik entsteht.! Lösung der Probleme wie! Unübersichtlichkeit! Schwere Wartbarkeit! Schlechte Erweiterung! Schlechte Struktur des Programms! Schlechte Arbeitsteilung Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 6

Wir stellen vor:! Das Model-View-Controller Pattern Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 7

! Definition 1: Erste Definitionen! (nach Mark Guzdial in seinem Buch Squeak ): Das MVC Modell beschreibt im Grunde genommen eine Benutzerschnittstelle in Form von einem Model der realen Welt, welches durch ein View präsentiert wird, wobei Benutzereingaben durch ein oder mehrere Controller gehandhabt werden Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 8

! Definition 2: Erste Definitionen! (nach Simon Lewis in seinem Buch The Art and Science of Smalltalk ): Das MVC-Modell ist ein grundlegender Architekturbaustein von Smalltalk, in welchem die Funktionalität einer Applikation mit einer graphischen Benutzerschnittstelle (GUI) in die drei Bereiche Model, View und Controller gegliedert wird Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 9

Die Geschichte! MVC wurde etwa 1978 im Xerox PARC (Palo Alto Research Center) im Zusammenhang mit Smalltalk-80 entwickelt! Die Entwicklung von MVC wird Trygve Reenskaug (Norwegen) zugerechnet Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 10

! Erste Veröffentlichung über MVC: Die Geschichte A Cookbook for Using the Model-View- Controller User Interface Paradigm in Smalltalk-80! Von Glenn Krasner und Stephan Pope im Journal of Object-Oriented Programming (JOOP)! im August/September 1988 Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 11

Die Geschichte! Der Siegeszug begann in Smalltalk! Übertragung in Java/Swing! Verwendung des Musters heute ebenfalls in Webanwendungen! Andere Namen des Patterns! PAC Presentation-Abstraction- Control! ICM Interface-Control-Model Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 12

Beschreibung von MVC (klassisch)! Ziel: die Präsentation eines Programms von seiner Logik und den Daten zu trennen! Das Model entspricht der Verarbeitung, die View der Ausgabe, sowie der Controller der Eingabe! Model enthält die Kernfunktionalität und die Daten der Anwendung. Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 13

Beschreibung von MVC (klassisch)! View stellt Informationen für den Benutzer graphisch dar! Controller verarbeitet die Benutzereingabe! Jeder dieser Komponenten sollte als eigener Baustein implementiert werden Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 14

! Beispiel einer Anfrage MVC und das Web Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 15

Aufgabenverteilung Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 16

Die Komponenten im Überblick Aufgabenverteilung Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 17

Aufgabenverteilung Die Komponenten im Überblick: Model Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 18

Aufgabenverteilung Die Komponenten im Überblick: View Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 19

Aufgabenverteilung Die Komponenten im Überblick: Controller Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 20

Zusammensetzung von MVC! MVC ist im Prinzip nichts anderes als ein Satz von verschiedenen Mustern, die in diesem Entwurf zusammenarbeiten:! Model: Observer Pattern! View: Composite Pattern, Strategy Pattern! Controller: Strategy Pattern Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 21

Zusammensetzung von MVC Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 22

Zusammensetzung von MVC Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 23

Zusammensetzung von MVC Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 24

Design Patterns MVC Marcus Köhler Axel Reusch Markus Merath Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 25

Agenda! Allgemeines! Aufgabenverteilung! Alltagsbeispiel! Beurteilung! Konkretes Code-Beispiel! Einsatz im Web! Webbeispiel! Fazit & Ausblick Marcus Köhler Axel Reusch Markus Merath Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 26

! MVC im Alltag Alltagsbeispiel Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 27

! MVC im Alltag! Ansprechen von 2 Views Alltagsbeispiel Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 28

Alltagsbeispiel! MVC im Alltag! Alltag in der Matrix! View 1: Neo in der Großstadt Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 29

Alltagsbeispiel! MVC im Alltag! Alltag in der Matrix! View 2: Neo auf m Land Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 30

! MVC im Alltag! Alltag in der Matrix Alltagsbeispiel! Nur die visuelle Umgebung ändert sich! Daten und Methoden bleiben gleich!! View1: Stadt! View2: Land! Model: Personen, Gegenstände! Controller: Interaktion der Personen mit Gegenständen / Personen Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 31

! Weitere Beispiele Alltagsbeispiel Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 32

Beurteilung! Vorteile! Bessere Wartbarkeit! Bessere Erweiterbarkeit! Bessere Übersichtlichkeit! Modularisierung Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 33

Beurteilung! Nachteile! Evtl. Performance-Verlust! Höhere Komplexität Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 34

Konkretes Code-Beispiel! Kleines Count-Programm! View: Ergebnis! Anderer View: Farbe! Controller: Counting, Kommunikation! Model: momentaner Datenbestand! >> im Eclipse Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 35

Design Patterns MVC Web MVC Marcus Köhler Axel Reusch Markus Merath Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 36

Agenda! Allgemeines! Aufgabenverteilung! Alltagsbeispiel! Beurteilung! Konkretes Code-Beispiel! Einsatz im Web! Webbeispiel! Fazit & Ausblick Marcus Köhler Axel Reusch Markus Merath Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 37

Inhalt! Inhalt! Umgebung! Ablauf! Bestandteile in einem Beispiel! Model! View! Controller! Beispiel Demo Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 38

Das Web / MVC Entwicklung! früher: statisches HTML! offensichtlich: zu unflexibel! CGI und Skriptsprachen! zu wenig strukturiert! zu viel Mehrfacharbeit! J2EE, Frameworks, Application Server! Entwicklung noch aktiv (Java Server Faces!)! Model 1 & 2 Architekturen: MVC Variationen Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 39

! "seiten-zentrisch" Das Web / Model 1! Trennung von View und Model z. Bsp. über Beans! provoziert aber doch Vermengung! Arbeitstrennung trotzdem problematisch! Status über Get/Post! traditionelle, harte Verlinkung von JSPs! starke Kopplung :(! kein zentraler Controller! bspw. Input-Validierung auf jeder Seite Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 40

Der Ablauf im Model 1 Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 41

Der Ablauf im Model 1 Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 42

Der Ablauf im Model 1 Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 43

Der Ablauf im Model 1 Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 44

Der Ablauf im Model 1 Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 45

Das Web / Model 2! empfohlen für mittlere bis große Projekte! "servlet-zentrisch"! ein zentrales Controller-Servlet arbeitet als Dispatcher! relevante Patterns: Front Controller, Application Controller! validiert Eingabe, wählt Sprache, etc.! wählt View aus! Views sind JSPs! interagiert mit Model (typischerweise JavaBean(s))! gibt Response zurück an Servlet! z.bsp. Struts oder JavaServer Faces Framework Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 46

Der Ablauf im Model 2 Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 47

Der Ablauf im Model 2 Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 48

Der Ablauf im Model 2 Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 49

Der Ablauf im Model 2 Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 50

Der Ablauf im Model 2 Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 51

Der Ablauf im Model 2 Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 52

! Beispielszenario MVC im Web! Beispiel Applikation welche eine Kantenlänge eines Quadrates durch Benutzereingabe aufnehmen kann und entweder den Flächeninhalt generiert.! Beispiel ist im JavaServer Faces Framework angelegt. Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 53

! faces-config.xml Die Komponenten View Model Controller Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 54

Die Komponenten! Anwendungskonfigurationsdatei faces-config.xml:! JSF-spezifische Konfigurationsdatei! Enthält Angaben zum Beanmanagement! Definiert die Navigation! Verschiedene weitere Angaben zur JSF- Anwendung Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 55

Die Komponenten Faces-config.xml Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 56

Die Komponenten Faces-config.xml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd"> <faces-config> <managed-bean> <managed-bean-name>playground</managed-bean-name> <managed-bean-class>test.playgroundbean </managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> <navigation-rule> <from-view-id>/eingabe.jsp</from-view-id> <navigation-case> <from-outcome>druecken_flaeche</from-outcome> <to-view-id>/ausgabe.jsp</to-view-id> </navigation-case> </navigation-rule> </faces-config> Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 57

! Bean Die Komponenten View Model Contro ller Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 58

Die Komponenten / die Bean package test; public class PlaygroundBean{ private int length; private int area; public PlaygroundBean(){ } public void setarea(int i) { this.area = i; } public int getarea() { return this.length * this.length; } public void setlength(int i) { this.length = i; } public int getlength() { return this.length;}} Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 59

! View Die Komponenten View Model Contro ller Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 60

Die Komponenten / JSP-Eingabe <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <f:view> <h:outputlabel> <h:form id="inputform"> <h:outputlabel> <h:inputtext value="#{playground.length}"/> <h:commandbutton value="berechnen" action= flaeche" /> </h:form> </f:view> Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 61

Die Komponenten / JSP-Ausgabe <%@ tagliburi="http://java.sun.com/jsf/html" prefix="h" %> <%@ tagliburi="http://java.sun.com/jsf/core" prefix="f" %> <f:view> <h:form id="inputform"> <h:outputlabel> <h:outputtext value="#{playground.length}"/> <h:outputtext value="#{playground.area}"/> </h:form> </f:view> Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 62

! Beispiel MVC im Web! Ansicht im Browser und Eclipse Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 63

! Zusammenfassung MVC im Web! Ist in der Praxis sehr üblich! Notwendig bei unterschiedlichen Ausgabegeräten! Sehr übersichtlich! Gut wartbar! Sehr flexibel! Wieder benutzbar! Lohnt sich erst ab einer gewissen Größe Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 64

MVC im Web! Vielen Dank für eure Aufmerksamkeit! Zeit für Fragen!!! Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 65