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



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

Eine Anwendung mit InstantRails 1.7

8 Design Patterns. Events

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

Fragen Arthur Zaczek. Apr 2015

Software Engineering Interaktionsdiagramme

Übungen zur Softwaretechnik

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

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Kopfzeile. Inhaltsverzeichnis

Programmieren in Java

PowerPoint vertonen. by H.Schönbauer 1

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Ein wichtiges Konzept der Software-Architektur

NODELOCKED LIZENZ generieren (ab ST4)

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Informationsblatt Induktionsbeweis

Carolo Knowledge Base

Wie Sie mit Mastern arbeiten

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

Vgl. Kapitel 4 aus Systematisches Requirements Engineering, Christoph Ebert

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Updatehinweise für die Version forma 5.5.5

Zählen von Objekten einer bestimmten Klasse

Professionelle Seminare im Bereich MS-Office

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

Es gibt zwei Wege die elektronischen Daten aus Navision zu exportieren.

SharePoint Demonstration

desk.modul : ABX-Lokalisierung

Visual Basic Express erstes Projekt anlegen

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Anbindung des eibport an das Internet

Step by Step Remotedesktopfreigabe unter Windows Server von Christian Bartl

Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist

ltlasten in der Registrierdatenbank löschen

Bedienungsanleitung für den Online-Shop

Software Engineering Klassendiagramme Assoziationen

Registrierung Ihres Fachbesucher Tickets

DAUERHAFTE ÄNDERUNG VON SCHRIFTART, SCHRIFTGRÖßE

AutoTexte und AutoKorrektur unter Outlook verwenden

Einführung in die Programmierung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Guide DynDNS und Portforwarding

Informationen zum neuen Studmail häufige Fragen

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Partitionieren in Vista und Windows 7/8

Was ist Sozial-Raum-Orientierung?

Xesar. Die vielfältige Sicherheitslösung

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Anleitung: WLAN-Zugang unter Windows 8 - eduroam. Schritt 1

Acceptor-Connector. Acceptor-Connector

Programmieren 2 07 JavaFX-Properties und Data-Binding

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Responsive Webdesign am Beispiel der Steuerberatung Pfeffer

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Installation von Druckern auf dem ZOVAS-Notebook. 1. Der Drucker ist direkt mit dem Notebook verbunden

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

BIF/SWE - Übungsbeispiel

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Auktionen erstellen und verwalten mit dem GV Büro System und der Justiz Auktion

Professionelle Seminare im Bereich MS-Office

Programmierkurs Java

SJ OFFICE - Update 3.0

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

MSDE 2000 mit Service Pack 3a

SEP 114. Design by Contract

AutoCAD Dienstprogramm zur Lizenzübertragung

Internet online Update (Internet Explorer)

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

Objektorientierte Programmierung

In diesem Bereich wird beschrieben, wie Sie eine Datensicherung der Software Jack Plus durchführen können.

Windows 8.1. In 5 Minuten Was ist alles neu? Word

Netzwerkeinstellungen unter Mac OS X

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten.

Kapitalerhöhung - Verbuchung

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Testen mit JUnit. Motivation

In diesem Bereich wird beschrieben, wie Sie eine Datensicherung der Software Jack Plus durchführen können.

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

5. Bildauflösung ICT-Komp 10

Freie Software: Was bringt s mir? Peter Bubestinger, David Ayers. 17. Mai 2008

Einführung in das Arbeiten mit MS Excel. 1. Bearbeitungs

Microsoft Update Windows Update

Java: Vererbung. Teil 3: super()

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Version 0.3. Installation von MinGW und Eclipse CDT

Drahtlosnetzwerke automatisch konfigurieren mit WCN (Windows Connect Now) unter Windows Vista

Einführung in die Informatik Tools

Scala kann auch faul sein

Grundlagen der Informatik

ASA Schnittstelle zu Endian Firewall Hotspot aktivieren. Konfiguration ASA jhotel

FH-SY Chapter Version 3 - FH-SY.NET - FAQ -

Objektorientierte Programmierung

Der Leverage-Effekt wirkt sich unter verschiedenen Umständen auf die Eigenkapitalrendite aus.

Transkript:

Design Patterns 2 Model-View-Controller in der Praxis

Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden oft kombiniert ggf. sogar mit sich selbst

Separation of Concerns (Trennung der Zuständigkeiten) Eines der wichtigsten Prinzipien: Verbessert die Modularität, und macht damit den Code erweiterbarer, erlaubt mehr unabhängige Änderungen (Teamarbeit) und oft den Code sogar einfacher Viele Design Patterns helfen dabei: Iterator, Collection, Factory, MVC

MVC als Separation of Concerns MVC vereinfacht: View Controller Model Trennung der Zuständigkeiten! Model: Daten (und Datenlogik) View: Präsentation Controller: Kommunikation (= mediating-controller MVC, Model View Adapter MVA)

MVC MVC!= 3 Klassen: Model, View, Controller Eher: getrennte Packages! Dann wirklich umgesetzt, wenn man unterschiedliche Models/Views ermöglicht! MVC ist ein Pattern dass oft mehrfach in der gleichen Anwendung verwendet wird!

Hierarchisches MVC Beispiel JTextField View ActionListener Controller DataObject Model Aber was passiert im JTextField?

Hierarchisches MVC Beispiel TextUI View JTextField Controller Document Model Swing-Komponenten implementieren selbst eine Variante des MVC Patterns! Also: MVC in der View. auch im Model?

Logik im Controller oder Modell? Traditionell: dumme Datenobjekte, alle Logik ist im Controller ( setkontostand ) Zunehmend populär: Logik in intelligenten Datenobjekten Oft hybride Lösungen: UI Controller übersetzt UI-Events (Klicks etc.) in logische Operationen (Kommandos) Data Controller übersetzt Kommandos in Änderungen am Datenmodell

MVC komplexer UI Controller Spielzug Spielregeln Controller Ergebnis Daten Controller Klick Änderung UI Zustand Direkte Kommunikation sinnvoll? Spielfeld Zustand viele Instanzen des MVC Patterns!

MVC noch komplexer... Swing UI oder JavaFX UI Lokale Daten Sound- Effekte Kommunikation Controller Gamepad- Steuerung Netzwerk Daten

MVC auf Mikro-Ebene passiv? GameEngine Controller testcollission() hit() StoneRenderer View StoneChangedEvent StoneObject Model Im Kleinen oft leichter realisierbar Aufgabentrennung: Renderer vs. Model Manchmal eine passive view Manchmal Direktzugriff auf Modell sinnvoll

Vorteile Getrennte Entwicklung möglich Bspw. Soundeffekte eigene View Bspw. Steuerung eigene View Getrenntes Testen möglich: Statt Maus -Spieler: Computerspieler Statt graphischer Darstellung: Unittests Bei großen Projekten: einfacherer Code (weniger Abhängigkeiten) verschiedene Versionen möglich viel schnellere Entwicklung

Aggregate zur Verwaltung Game Object Renderer Model gehört zur View gehört zum Controller gehört zum Modell Hier: intern MVC Aggregation zur Verwaltung bspw. auf Ebene des Controllers Aber möglichst mehrere Views erlauben! (Bspw. Audio, Swing, Maus)

MVC als Kombination von Patterns View als Observer, Model als Observable View beobachtet das Modell Controller: als Strategy pattern View delegiert User-Eingaben an Controller View als Composite Besteht i.d.r. aus vielen Komponenten MVC daher für manche kein echtes Pattern sondern einfach nur eine mögliche Instanzierung von diesen bestehenden Pattern.

Strategy Pattern interface Formel { } double berechnen(double x, double y); public class Addition implements Formel { public double berechnen(double x, double y){ return x + y; } }

Strategy Pattern public class Rechner { Formel formel = new Addition();...... double ergebnis=formel.berechnen(x,y); } void setformel(formel formel) { } this.formel = formel;

Strategy Pattern Austauschbar und Modular Ideal für Zustände (state = new Ausverkauft()) Spielregeln Zugriffskontrolle Logging Konfiguration

State Pattern Eng verwandt mit dem Strategy Pattern Oft so verwendet: zustand = zustand.macheetwas(); neuer Zustand alter Zustand Ähnelt Automaten (vgl. Automatentheorie)