Entwurfsmuster (Design Pattern)

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Programmieren im Großen von Markus Schmidt und Benno Kröger.
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Design-Pattern.
Objektorientierte Programmierung
Harald Köbler Software Design Patterns Prototype.
Einführung in die Programmierung Zusammenfassung
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Freie Universität Berlin Institut für Informatik
Design Patterns- Entwurfsmuster
Ruby on Rails im Überblick
Objektorientierter Entwurf (OOD) Übersicht
Objektorientierter Entwurf (OOD) Teil 3: Qualitätsmodell
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Java: Objektorientierte Programmierung
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Fliegengewicht Ein objektbasiertes Strukturmuster.
Sebastian Grahn Sebastian Kühn
Das Strukturmuster Kompositum von C. Günther, T. Hammerschmidt und D. Kuhn.
MVC – ein Architekturmuster
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
XDoclet ETIS SS05.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Remote Methode Invocation (RMI)
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Folie 1 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: DECORATOR.
Software Design Patterns Extreme Programming (XP).
Entwurfsmuster – Iterator
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
Command Pattern Karola Schäuble,
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
Dependents, Publish-Subscribe, Listener
Entwurfsmuster EDV Entwurfsmuster.
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Ein Textadventure AIP Aufgabe Fabian Bergfeld Patrick Boeckhoven Christian Haberland Benjamin Jochheim Liem Nguyen.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Die Persistenzschicht
Entwurfs- und Implementationsdiagramme
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Seminar Softwareentwicklung Programmierstil Helmut Schmidauer
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
Objektorientierte Modellierung mit UML
Klassen und Klassenstruktur
Software Design Patterns
OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe.
Benutzerdefinierte Tags
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Laborpraktikum Umsetzung von Pattern SS 05 Prof. Paul, Dipl.-Inf. Fröhlich, Dipl.-Inf. Linke {paul | iti.cs.uni-magdeburg.de
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Software - Testung ETIS SS05.
Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ Muster:
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Dieser Vortrag wird gesponsort von:
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Rusch Philipp, Spiegel Philipp, Sieber Michael, Ucar Sahin, Wetzel Markus.
Objektorientierte (OO) Programmierung
Strategy Pattern Teachlet Autor: Sven Wende Replay durch Stephan Schwake Konzepte objektorientierter Programmiersprachen, SS 2006.
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
1 Eine Einführung in die objektorientierte Programmierung.
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
 Präsentation transkript:

Entwurfsmuster (Design Pattern) ETIS SS05

Gliederung Motivation Pattern allgemein Proxy-Pattern Zusammenfassung ETIS SS05 Nadine Fröhlich

Motivation I Wie gut sind eure Programme strukturiert? Wartbarkeit? - Verständlichkeit (für euch, für andere, bei wachsender Komplexität)? Wiederverwendbarkeit? Effizienz? Dauert es lange, gute Lösungen zu finden? Greift ihr auf gute Lösungen immer wieder zurück? Wie merkt ihr euch gute Lösungen? Könntet ihr eure Lösung problemlos weitergeben? Wäre es gut, Erfahrungen von Experten nutzen zu können? Pattern ETIS SS05 Nadine Fröhlich

Motivation II Wie sind Probleme (Lesbarkeit, Wiederverwendbarkeit, Wartbarkeit) lösbar? Geeigneter Entwurf Pattern halten erfolgreiche Lösungen (von Experten) fest Vermitteln bewährte Entwürfe (d.h. Entwurfs- und nicht Implementierungswiederverwendung) Keine trivialen Probleme Vermeiden „das Rad neu zu erfinden“ Auswirkungen Einfache, leichter verständliche Entwürfe + Dokumentation Schnelle, kostengünstige Software-Entwicklung Bessere Verständigung im Softwareentwicklungsprozess Pattern ETIS SS05 Nadine Fröhlich

Pattern I Was sind Pattern? (Ch. Alexander) Beschreibung im Entwurfskontext häufig auftretenden Problems Erläuterung des Kerns der Lösung dieses Problems Lösung beliebig oft anwendbar, aber i.d.R. nicht 2x gleich Grundlegende Elemente (Gamma et al.) Mustername (Stichwort) Problemabschnitt (Problem, Anwendbarkeit, Kontext) Lösungsabschnitt (Entwurfelemente, Beziehungen, Interaktionen) Konsequenzabschnitt (Vor- und Nachteile) Pattern ETIS SS05 Nadine Fröhlich

Pattern II Verschiedenste Anwendungsbereiche z.B. Architektur, Pädagogik, Informatik (verteilte Systeme, UIs) Unterschiedlichen Abstraktionsebenen Architekturmuster Softwaresysteme durch Subsysteme strukturiert z.B. MVC, Broker, Layers Entwurfsmuster Verfeinerung Subsysteme oder deren Beziehungen z.B. Proxy, abstrakte Fabrik, Kompositium Idiome Aspekte des Entwurfs in bestimmter Programmiersprache z.B. Singleton in C++, Smalltalk Pattern ETIS SS05 Nadine Fröhlich

Pattern III Kombinierbar in Katalogen abgelegt Konkrete Fabrik oft als Singleton implementiert Broker-Pattern benutzt Proxys + Bridge in Katalogen abgelegt Sammlung von Mustern (oft zu einem Thema) in strukturiertem, im Katalog einheitlichen, Format beschrieben Stellt auch Vernetzungen, Verwandtschaften der Pattern untereinander dar Pattern ETIS SS05 Nadine Fröhlich

Proxy-Pattern I Klassifizierung Name: Zweck: Auch bekannt als Objektorientiertes Strukturmuster Name: Proxy Zweck: Kontrolle des Zugriffs auf ein Objekt mittels vorgelagerten Stellvertreterobjektes Auch bekannt als Surrogat Pattern ETIS SS05 Nadine Fröhlich

Proxy-Pattern - Motivation I Volle Kosten der Objekt-Erzeugung + Objekt-Initialisierung verzögern, bis Objekt tatsächlich genutzt z.B. BildProxy Laden von Bildern in Dokumenten teuer Proxy als Platzhalter für Bild verwenden Bild-Objekte erst auf Verlangen erzeugt Beispiel: Eigentliches Bild Mögliche BildProxies Pattern ETIS SS05 Nadine Fröhlich

Proxy-Pattern - Motivation II DokumentEditor Grafik zeichne() gibAusmasse() lade() if (bild == null){ bild = lade(); } bild.zeichne(); Bild BildProxy bildImp ausmasse zeichne() gibAusmasse() lade() dateiname ausmasse zeichne() gibAusmasse() lade() if (bild == null){ return ausmasse; } else { return bild.gibAusmasse(); } bild Pattern ETIS SS05 Nadine Fröhlich

Proxy-Pattern - Anwendbarkeit Remote-Proxy Lokaler Stellvertreter für Objekt in anderem Adressraum z.B. RMI, Corba, … Virtuelles Proxy Teure Objekte auf Verlangen erzeugt z.B. Bildproxy Schutzproxy Zugriffskontrolle auf Originalobjekte z.B. KernelProxy Smart-Reference Ersatz für einfachen Zeiger, der zusätzliche Aktionen ausführt z.B. Test vor Zugriff auf Objekt, ob gelockt Pattern ETIS SS05 Nadine Fröhlich

Proxy-Pattern - Struktur Client Subjekt operation() … EchtesSubjekt Proxy … echtesSubjekt.operation(); operation() … echtesSubjekt operation() … Pattern ETIS SS05 Nadine Fröhlich

Proxy-Pattern - Teilnehmer Referenz auf EchtesSubjekt, d.h. hat Zugriff darauf Bietet identische Schnittstelle zu Subjekt, d.h. einsetzbar für EchtesSubjekt Kontrolliert Zugriff auf EchtesSubjekt Spezifische Zuständigkeiten (abhängig von der Art) Remote-Proxies: Anfragen, Argumente kodieren + an EchtesSubjekt in anderem Adressraum senden Virtuelle Proxies: Zugriff verzögern durch Zwischenspeichern zusätzlicher Informationen über EchtesSubjekt Schutzproxies: Test, ob Aufrufer notwendige Zugriffsrechte besitzt Subjekt gemeinsame Schnittstelle für EchtesSubjekt und Proxy, d.h. Proxy dort nutzbar, wo EchtesSubjekt erwartet EchtesSubjekt eigentliches, durch Proxy repräsentiertes, Objekt Pattern ETIS SS05 Nadine Fröhlich

Proxy-Pattern – Interaktionen + Konsequenzen Wenn angebracht, leitet Proxy Befehle an EchtesSubjekt weiter Konsequenzen Führt Ebene der Indirektion bei Objektzugriff ein Remote-Proxy versteckt Tatsache, dass Objekt in anderem Adressraum Virtuelles Proxy kann Optimierungen ausführen z.B. Objekterzeugung auf Verlangen Schutzproxies + Smart-References ermöglichen Durchführung zusätzlicher Verwaltungsaufgaben bei Objektzugriff Pattern ETIS SS05 Nadine Fröhlich

Proxy-Pattern - Implementierung public interface Subject { public void berechne(); } public class EchtesSubject extends Subject { public void berechne() { //schwierige lange dauernde //Berechnung } public class Proxy implements Subject { private EchtesSubject esub; protected void lade() { if (esub == null) esub = new EchtesSubject(); } public void berechne() { lade(); esub.berechne(); Pattern ETIS SS05 Nadine Fröhlich

Proxy-Pattern – Verwendung + Verwandte Muster Bekannte Verwendungen RMI, Corba, … Kernelproxies Verwandte Muster Adapter Adapter bietet andere Schnittstelle zum Objekt, das es anpasst Proxy bietet selbe Schnittstelle wie Subjekt Dekorierer Können ähnliche Implementierung wie Proxies haben Verfolgen anderen Zweck (Dekorierer erweitert Objekt um Zuständigkeiten, Proxy kontrolliert Zugriff auf Objekt) Pattern ETIS SS05 Nadine Fröhlich

Zusammenfassung Entwurfsmuster erfassen Erfahrungswissen, d.h. bewährte Lösungen, in strukturierter, leicht verständlicher Form Vermeiden „das Rad wieder zu erfinden“ Verbessern Wartung, Wiederverwendung, Verständlichkeit von Software Ermöglichen relativ einfaches Weitergeben von Erfahrungswissen Stellen einheitliches Vokabular dar Unterliegen ständigen Verbesserungen Probleme: Trotz allem: Lernaufwand relativ hoch Bei Wahl eines guten Pattern in falschem Kontext: Verschlechterung des Entwurfes Pattern ETIS SS05 Nadine Fröhlich

Literatur Gamma, E., Helm, R., Jonson, R., Vlissides, J., Entwurfsmuster, Addison-Wesley, Bonn, 1996 Buschmann, F., Meunier, R., Pattern orientierte Software Architektur, Addison-Wesley, Bonn, 1998 Pattern ETIS SS05 Nadine Fröhlich