8 Design Patterns. Events



Ähnliche Dokumente
14 Schmiegeparabel und Freunde, Taylor-Reihe

4 Vererbung, Polymorphie

7 Dateien und Datenströme (Streams)

9 Multithreading. 1 Idee des Multithreading

Die Programmiersprache C99: Zusammenfassung

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

mit attraktiven visuellen Inhalten

Dokumentenverwaltung im Internet

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Professionelle Seminare im Bereich MS-Office

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen

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

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

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

So funktioniert das online-bestellsystem GIMA-direkt

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

Process4.biz Release Features Übersicht. Repository. Das Schützen von Diagrammen wurde optimiert (check-in, check-out)

Lizenzierung von SharePoint Server 2013

Abwesenheitsnotiz im Exchange Server 2010

Arbeiten mit UMLed und Delphi

Speicher in der Cloud

Fallbeispiel: Eintragen einer Behandlung

Serienbrief mit Works 7.0

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Vorbereitung einer Grafik zum Druck einer Glotze aus, Stadion an! -Zaunfahne Torsten Bunde, Stand 5. Juli 2014

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

Kontakte knüpfen und pflegen, Themen gemeinsam Diskutieren, Termine bekannt geben, oder die. ideal dazu, also sollten wir es auch nutzen!

Anmeldung zu Seminaren und Lehrgängen

Zugang zum VPN der Hochschule Fulda mit Cisco AnyConnect

Feiertage in Marvin hinterlegen

Animationen erstellen

Handout 6. Entwicklung von Makros

Der Kalender im ipad

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Lizenzierung von SharePoint Server 2013

Kreatives Gestalten mit Flash 5.0

Zwischenablage (Bilder, Texte,...)

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

3 Open BIM Workflow ARCHICAD und Allplan

Wie halte ich Ordnung auf meiner Festplatte?

Bedienungsanleitung Albumdesigner. Neues Projekt: Bestehendes Projekt öffnen:

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Schulungspräsentation zur Erstellung von CEWE FOTOBÜCHERN

Microsoft Outlook 2010 Handbuch

Lehrer: Einschreibemethoden

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

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Software- und Druckerzuweisung Selbstlernmaterialien

Professionelle Seminare im Bereich MS-Office

MINDMAP. HANDREICHUNG (Stand: August 2013)

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Was meinen die Leute eigentlich mit: Grexit?

ACDSee 10. ACDSee 10: Fotos gruppieren und schneller durchsuchen. Was ist Gruppieren? Fotos gruppieren. Das Inhaltsverzeichnis zum Gruppieren nutzen

Lieferschein Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!

Einführungskurs MOODLE Themen:

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Veröffentlichen von Apps, Arbeitsblättern und Storys. Qlik Sense Copyright QlikTech International AB. Alle Rechte vorbehalten.

Anleitung über den Umgang mit Schildern

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Informationsblatt Induktionsbeweis

Etikettendruck mit Works 7.0

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Microsoft Visual Studio Community 2015

Kontakte Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Datenbanken Kapitel 2

Bedienungsanleitung GYMplus

Windows Explorer Das unbekannte Tool. Compi-Treff vom 19. September 2014 Thomas Sigg

Verarbeitung von ZV-Dateien im Internetbanking. Inhalt. 1. Datei einlesen Datei anzeigen, ändern, löschen Auftrag ausführen...

icartoon HANDBUCH COMPOSING

Das Festkomitee hat die Abi-Seite neu konzipiert, die nun auf einem (gemieteten) Share Point Server

BENUTZERHANDBUCH für. Inhaltsverzeichnis. 1. Anmeldung. 2. Rangliste ansehen. 3. Platzreservierung. 4. Forderungen anzeigen

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

4.1 Wie bediene ich das Webportal?

Statuten in leichter Sprache

Umwandeln und Exportieren von Adobe-Illustrator-Dateien in Illustrator für Artcut

PowerPoint 2007 Folienmaster und Masterlayouts gestalten

Erstellen einer GoTalk-Auflage

Rock-Band. Einleitung. Scratch. In diesem Projekt lernst du, wie du deine eigenen Musikinstrumente programmieren kannst! Activity Checklist

Der Kunde zahlt die Gehälter.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Erstellen von x-y-diagrammen in OpenOffice.calc

Umzug der abfallwirtschaftlichen Nummern /Kündigung

Workshop. Zeitmanagement Hamburg, 24. November 2004

Tragen Sie bitte im Anmeldefeld die Daten ein, die Sie von uns erhalten haben.

Sie können diesen Service verwenden, um fast beliebig große Dateien auch über 2 GB zu versenden.

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Zählen von Objekten einer bestimmten Klasse

NODELOCKED LIZENZ generieren (ab ST4)

Nachts in der Stadt. Andrea Behnke: Wenn es Nacht wird Persen Verlag

4.4 AnonymeMärkteunddasGleichgewichtder"vollständigen Konkurrenz"

Tutorial Moodle 2 Rollenzuweisung

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

Transkript:

8 Design Patterns. Events Jörn Loviscach Versionsstand: 28. März 2015, 19:13 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Germany License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/de/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. Bitte hier notieren, was beim Bearbeiten unklar geblieben ist 1 Idee der Design Patterns Design Patterns = Entwurfsmuster sind eigentlich eine Idee aus der Architektur (Christopher Alexander, 70er Jahre): bewährte, verallgemeinerbare Lösungen für das Straßennetz einer Stadt ebenso wie für Säulen und Fenster. In den 80/90ern wurde dieser Gedanke auf die Architektur objektorientierter Software übertragen. Die entsprechenden Design Patterns beschreiben keine Algorithmen (z. B. Sortierverfahren), sondern wie Klassen/Objekte zusammenspielen können, um einen bestimmten Effekt zu erreichen. Die Namen der Patterns sind dabei eine Kommunikationshilfe. Je nach Zählung kommt man auf Dutzende von Patterns. Es folgen einige Beispiele. 1

2 SINGLETON 2 2 Singleton Dies ist wohl das einfachste Pattern und wird von einigen Leuten durchaus kritisch gesehen. Singleton (Einling = kein Zwilling) ist eine Lösung dafür, Klassen zu erzeugen, von denen es maximal eine Instanz geben darf zum Beispiel Klassen, die Gegenstände modellieren, die es nur einmal gibt (Maus, Systemlaufwerk,... ). Die grundsätzliche Idee ist, den Konstruktor privat zu machen, so dass niemand außer der Klasse selbst eine Instanz von ihr erzeugen kann. Statt dessen stellt die Klasse eine statische Methode bereit, mit der man die eine Instanz erhält: 1 3 Composite Das Pattern Composite (Verbundstoff) ist eine Lösung dafür, Zusammensetzungen auf dieselbe Art zu behandeln wie Einzelteile. Ein klassisches Beispiel dafür ist die Gruppierungsfunktion in Zeichensoftware: Eine Sammlung von Rechtecken, Kurven, Texten lässt sich zu einer Gruppe machen und dann insgesamt verschieben, drehen, skalieren, duplizieren usw., wie die einzelnen Zeichenobjekte. Die Lösung dafür besteht darin, eine abstrakte Mutterklasse Component zu haben, die auf zwei Arten realisiert wird: Leaf ist das normale Einzelelement; Composite ist ein Verbund von Components, also Einzelelementen oder anderen Composites. Es ergibt sich eine Baumstruktur mit den Instanzen von Leaf als Blättern; daher der Name Leaf: 2

4 STATE 3 So sieht das ansatzweise in Code für ein Zeichenprogramm aus: 3 4 State Das Pattern State (Zustand) erlaubt, endliche Automaten mit Objekten auszudrücken. Jeder Zustand des Automaten wird eine Instanz einer eigenen Unterklasse von State. Eine Instanz der anderen Klasse StateContext merkt sich den aktuellen Zustand. Auf Ereignisse hin wird passend von einem State zum anderen umgeschaltet; dazu ergänzt man zu jedem Ereignis eine entsprechende Methode in StateContext, in State und ggf. in den Kindklassen von State: 4

5 MODEL VIEW CONTROLLER 4 5 Model View Controller Insbesondere in Datenbankanwendungen (Buchungssysteme, Web-Shops,... ) verliert man leicht die Übersicht angesichts eines Gestrüpps an Funktionen, die Daten pflegen, und Funktionen, die zur Anzeige dienen. Die klassische Lösung dafür ist, die Funktionalität auf drei relativ eigenständige Klassen zu verteilen: Model (Datenmodell), View (Präsentation) und Controller (Steuerung): 5 6 Observer, Publish & Subscribe, Events Einige Patterns sind so wichtig, dass sie inzwischen von Programmiersprachen direkt unterstützt werden insbesondere das Observer-Pattern, auch Publish & Subscribe genannt: 6 In Java und C# gibt es Events (Ereignisse), um das Abonnieren zu vereinfachen. Wir kennen das schon aus Windows Presentation Foundation: 7 Die Ereignisbehandlungsroutinen in C# erhalten typischerweise ein object, in dem der Auslöser übergeben wird, und obendrein eine Sammlung von

6 OBSERVER, PUBLISH & SUBSCRIBE, EVENTS 5 Zusatzangaben, die je nach Ereignis verschieden sind, eine Ableitung von EventArgs. Ereignisse kann man auch selbst definieren. Das ist dann ein weiterer Typ von Elementen einer Klasse nach Attributen, Methoden und Properties. Hinter den Kulissen macht der Compiler allerdings aus Ereignissen wieder nur eine kunstvolle Zusammenstellung von Attributen und Methoden. 8