Model-View-Controller

Ähnliche Dokumente
Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik

MVC-Architektur am Beispiel von OLAT

Model-View-Controller

Einführung in die Programmierung für NF MI. Übung 11

Observer Chain of Responsibility Mediator

Einführung in die Programmierung für NF. Übung

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Objektorientierte und Funktionale Programmierung SS 2014

Strategy & Decorator Pattern

Design Patterns I. Observer, Listener & MVC

Design Patterns. 5. Juni 2013

MVVM (Model View ViewModel) in JavaFX

Software Design Patterns Zusammensetzung. Daniel Gerber

Objektorientierte Analyse (OOA) OOA-Pattern

VON MVC ZU MODEL-VIEW-VIEWMODEL

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

3-Tier-Architecture und J2EE

Entwurfsmuster - Iterator

Entwurfsmuster (Design Patterns)

Objektorientierteund FunktionaleProgrammierung

Verteidigung Großer Beleg

Design Patterns. 3. Juni 2015

Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC

Einführung in die Informatik II

Model View Controller Pattern

Design Pattern. Motivation, Beispiel Definition "Das" Buch der Gang of Four Ausführliches Beispiel: Facade Beispiele. Aufgabe

Das Model/View/Controller Paradigma

Paket Kommando. Command Command Processor Visitor

Komponenten & Frameworks Seite 1

Objektorientierte und Funktionale Programmierung

Entwurfsmuster - Iterator & Composite

Heiko Barth und Thorsten Schenkel, compeople AG. Databinding in Eclipse

Entwurfsmuster in Java

MVC Ein wichtiges Konzept der Software-Architektur

ASPECT-ORIENTED DESIGN PATTERNS

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)

Softwaretechnik. M. Jakob. 15. März Gymnasium Pegnitz

Entwurfsmuster Martin Fesser 00IN

Entwurfsmuster. Marc Monecke

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

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

Effizientes Programmieren

Effizientes Programmieren

Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

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

Mustersuche in Quellcode

Javakurs für Fortgeschrittene

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2009

Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Design Patterns. OO-GetTogether. Volker Michels

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster

Praxisbuch Objektorientierung

Entwurfsmuster (design pattern) spezielle Komponente, die eine allgemeine, parametrierbare Lösung für ein typisches Entwurfsproblem bereitstellt.

MVC mit Lazarus Reinheim. MVC mit Lazarus

Dabei sollen die Nutzern nach einer Authentifizierung entsprechend ihren Rechten Begriffe ändern, anlegen und kommentieren können.

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

class Mitarbeiter {...} class AussendienstMitarbeiter extends Mitarbeiter {...} class InnendienstMitarbeiter extends Mitarbeiter {...

Javakurs für Fortgeschrittene

Einführung in die Programmierung für NF. Übung

Abschnitt 20: Ein Grundprinzip der Software-Architektur

Bekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen

Modul Software Komponenten. Entwurfsmuster. Roland Gisler

Textbausteine. C# WPF-Framework Model-View-Viewmodel-Architektur Blog-Client-Applikation

Vorlesung Informatik II

Entwurfsprinzip. Entwurfsprinzip

Vorlesung Software-Engineering I

Architektur-Grobstruktur: Framework

Model-View-Controller. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1

Langlebige Softwarearchitekturen - technische Schulden beherrschen und abbauen

Objektorientierte Programmierung

Be dynamic! RichClient-Funktionalitäten mit dem Google Web Toolkit

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer

Technische Schulden in Architekturen erkennen und beseitigen

Multimedia im Netz Wintersemester 2012/13

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

3. Entwurfsmuster zur Entkopplung von Modulen

Einführung in die Programmierung für NF. Übung

Software Engineering. 7. Entwurfsmuster

Software Design basierend auf dem Plug-In Konzept

Softwaretechnik. Inhaltsverzeichnis. M. Jakob. 15. März Grundlagen der Projektorganisation

Software-Projekt. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Structural Patterns. B. Sc. Andreas Meißner

Interaktive Karten als Rich Internet Applications. Ruben Schempp Anwendungen

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

Varianten des Observer Pattern

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Praktische Softwaretechnologie Vorlesung 9

Programmiertechnik II WS 2017/18

Objektorientierte Programmierung (OOP)

Medientechnik Sommersemester 2016

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik

JavaFX Beispiel Lights Out (Teil 1: Ansicht)

Einsatz von Scalable Vector Graphics (SVG) zur Modellrepräsentation und -manipulation in Web-Anwendungen mit J2EE. Motivation und Zielsetzung

Transkript:

Software Design Pattern Model-View-Controller Michael Lühr

Gliederung Einführung und Problemstellung Ansatz durch MVC Detaillierte Darstellung der Komponenten Model View Controller Vor- und Nachteile Zusammenfassung

Einführung Ursprung: Smalltalk (1978) Problem: Erstellen einer Interaktiven GUI- Anwendung Portabilität auf unterschiedliche Endgeräte Änderungen bzw. Erweiterungen der Nutzerschnittstelle häufiger als an der Geschäftslogik Mix von Code für Darstellung und Geschäftslogik erschwert Erstellung einer portierbaren Anwendung

Anforderungen Änderungen der Oberfläche soll Code der Geschäftslogik nicht beeinflussen Portierung der Anwendung soll Verhalten der Anwendung nicht beeinflussen Datenänderungen sollen sichtbar sein

Ansatz durch MVC Strikte Trennung der Geschäftslogik von der Darstellung Entspricht Eingabe Verarbeitung Ausgabe Prinzip Unterteilt in 3 Komponenten Model (Verarbeitung) View (Ausgabe) Controller (Eingabe)

Ansatz durch MVC Model View Enthält Geschäftslogik, unabhängig von den anderen Komponenten Controller Enthält Darstellung der Daten des Models, daher Abhängigkeit zum Model Zwischenschicht, die Eingaben verarbeitet und zwischen View und Model vermittelt

Ansatz durch MVC MVC ist Strukturmuster Teilt Aufgaben auf verschiedene Klassen auf Einzelne Komponenten adaptieren andere Entwurfsmuster Model: Beobachter-Muster View: Composite-Muster Controller: Strategie-Muster

Detaillierte Darstellung der Komponenten Model View Controller

Model Beispiel

Model Enthält Daten und Geschäftslogik Implementiert Beobachter-Muster (aka Publish-Subscribe) Ist selbst das beobachtete Objekt Hat 1...n Beobachter => die Views

Model Jede Änderung der Daten verursacht Aktualisierung der Views Kennt die konkreten Views nicht (lose Kopplung) Besitzt Referenz auf View-Basisklasse

Model Bietet Mechanismus bei denen sich die Beobachter registrieren Datenänderung über update-methode der Views

Model-Beispielcode Schnittstellen nach außen hier durch setter/ getter Beim Ändern des Status wird Statusänderung nach außen sichtbar und Observer werden benachrichtigt

Model Vor- und Nachteile Vorteile Lose Kopplung zwischen Subjekt und Beobachter Unterstützung Broadcast- Kommunikation Nachteile Kommunikationsoverhead Aktualisierungen können weitere Änderungen an Models hervorrufen

View (Graphische) Darstellung der Daten Implementiert Composite Pattern Interaktion mit dem Nutzer Kann geschachtelt werden

View Kennt Model Kennt Controller Aktionen des Nutzers werden an Controller weitergegeben

View Statusänderung über Abfrage am Model durch getstate() Anschliessend Darstellung der geänderten Daten

View Model Interaktion Beispiel Konkrete View- Implementierung von View-Basisklasse abgeleitet Diese sorgt für die Registrierung der Views am Model

View-Model-Interaktion Views bieten Update- Methode, die vom Model bei jeder Statusänderung aufgerufen wird

View Vor- und Nachteile Vorteile Einheitliche Behandlung von komplexen und primitiven Objekten Vereinfachung des Klienten Vereinfachung Hinzufügen neuer Komponenten Nachteile Nicht garantiert zyklenfrei Zu allgemein, d.h. Typen der Komponenten schlecht einschränkbar

Controller Zwischenschicht zwischen Views und Model Reagiert auf Nutzereingaben (Tastatureingaben, Mausklicks, etc) Ermittelt ggf. weitere Views als Reaktion auf Benutzerinteraktion Ermittelt an den Daten die Models deren Daten sich ändern (Strategie Pattern)

Controller Kennt View und Model View stellt den Kontext dar Controller ermittelt an den Daten das von den Änderungen betroffene Model und nimmt ggf. Änderungen am View vor

MVC-Interaktion Listener sind hier die Controller Action führt zur Statusänderung des Models Views werden durch update-mechanismus aktualisiert

MVC-Interaktion

MVC Struktur

Controller Vor- und Nachteile Vorteile Hohe Wiedervendung von verwandten Algorithmen (im Bsp. ActionPerformed) Verringerung Bedingungsanwei sungen Schneller Austausch bzw.wartung der Algorithmen Nachteile Enge Kopplung an View Enge Kopplung an Modell

Vor- und Nachteile

Vorteile Mehrere Ansichten eines Models Austauschbarkeit von Views Leichtes Hinzufügen von Views Verbesserte Wartbarkeit und Wiederverwendung Synchronisierte Ansichten

Nachteile Hohe Änderungskosten bei vielen Observern, Overhead durch Information der Datenänderung an jeden Observer, auch wenn dieser die Daten evtl. gar nicht benötigt (z.b. Einfache Ansicht benötigt weniger Daten als Expertenansicht) ggf. Endlosschleifen, falls Observer wieder Änderungsoperationen aufruft Erhöhte Komplexität Enge Kopplung von Controller und View sowie View und Model

Zusammenfassung MVC trennt Logik von Darstellung Ist zusammengesetzes Muster (aus Observer, Composite, Strategy) Verbessert Wiederverwendung und Wartbarkeit Erhöht Komplexität

Quellen Gamma, E.; Helm, R.; Johnson, R.; Vlissides, J.; Entwurfsmuster, Addison Wesley, 2004 Freeman, E; Robson, E.; Sierra, K.; Bates B; Head First Design Patterns, o'reilly Media 2004 Kerievsky, J; Refactoring to Patterns; Addison- Wesley, 2005 http://java.sun.com/blueprints/patterns/mvc-detailed.h (zuletzt abgerufen am 16.06.2009) http://csis.pace.edu/~bergin/mvc/mvcgui.html (zuletzt abgerufen am 16.06.2009)

Vielen Dank für die Aufmerksamkeit