Entwurfsmuster (Design Pattern) ETIS SS05



Ähnliche Dokumente
Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Software-Entwurfsmuster

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

Factory Method (Virtual Constructor)

12.4 Sicherheitsarchitektur

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Übungen zu Softwaretechnik

SEP 114. Design by Contract

Prinzipien Objektorientierter Programmierung

Programmieren in Java

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Softwaretechnik (Allgemeine Informatik) Überblick

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

Objektorientierte Programmierung OOP

Übungsklausur vom 7. Dez. 2007

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Objektorientierte Programmierung

Objektorientierte Programmierung

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Test-Driven Design: Ein einfaches Beispiel

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

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

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Der lokale und verteilte Fall

Innere Klassen in Java

Probeklausur. Lenz Belzner. January 26, Lenz Belzner Probeklausur January 26, / 16

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

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Software Engineering Klassendiagramme Assoziationen

Client-Server-Beziehungen

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

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

Text-Zahlen-Formatieren

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Java Kurs für Anfänger Einheit 5 Methoden

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Applet Firewall und Freigabe der Objekte

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

Karriere in der IT und Informatik: Voraussetzungen für den Arbeitsplatz der Zukunft

Prüfung Software Engineering I (IB)

Java Enterprise Architekturen Willkommen in der Realität

Arbeiten mit UMLed und Delphi

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Gliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme

Objektbasierte Entwicklung

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

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

Programmierparadigmen

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

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich. Softwaretechnik I

Dokumentation für das Spiel Pong

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Java Einführung Abstrakte Klassen und Interfaces

Microsoft PowerPoint 2013 Folien gemeinsam nutzen

Die Online-Meetings bei den Anonymen Alkoholikern. zum Thema. Online - Meetings. Eine neue Form der Selbsthilfe?

Anleitung über den Umgang mit Schildern

Berufsprüfung ICT-Applikationsentwicklung

Was meinen die Leute eigentlich mit: Grexit?

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Konfiguration von Exchange 2000 zum versenden und empfangen von Mails & Lösung des SEND after POP Problems

Algorithmen und Datenstrukturen

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Objektorientiertes Software-Engineering

-Inhalte an cobra übergeben

Vorlesung Donnerstags, bis Uhr, HS12 Übung Dienstags, bis Uhr 4-5 ÜbungsbläMer (Programmieraufgaben)

Kapitel 2: Der Software-Entwicklungsprozess

Klassendiagramm. (class diagram)

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

Wir erledigen alles sofort. Warum Qualität, Risikomanagement, Gebrauchstauglichkeit und Dokumentation nach jeder Iteration fertig sind.

Verwendung des IDS Backup Systems unter Windows 2000

C# im Vergleich zu Java

Internet Explorer Version 6

Algorithmische Kryptographie

Einführung in die Programmierung

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Abschnitt 16: Objektorientiertes Design

Grundlagen verteilter Systeme

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

Vorlesung Betriebstechnik/Netzplantechnik Operations Research

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

Leichte-Sprache-Bilder

Der Einsatz von Social Media im Stadtmarketing. Alexander Masser, Hans-Jürgen Seimetz, Peter Zeile

Software Ergonomie und Usability. 2. Psychologische Grundlagen - Teil 3: Handlungen

Typumwandlungen bei Referenztypen

Studieren- Erklärungen und Tipps

SDD System Design Document

Fragen und Antworten

Übungen zur Softwaretechnik

Transkript:

Entwurfsmuster (Design Pattern) ETIS SS05

Gliederung Motivation Pattern allgemein Proxy-Pattern Zusammenfassung 2

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? 3

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 4

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) 5

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 6

Kombinierbar Pattern III 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 7

Klassifizierung Proxy-Pattern I Objektorientiertes Strukturmuster Name: Proxy Zweck: Kontrolle des Zugriffs auf ein Objekt mittels vorgelagerten Stellvertreterobjektes Auch bekannt als Surrogat 8

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: Mögliche BildProxies Eigentliches Bild 9

Proxy-Pattern - Motivation II DokumentEditor Grafik zeichne() gibausmasse() lade() if (bild == null){ bild = lade(); } bild.zeichne(); Bild BildProxy bildimp ausmasse zeichne() gibausmasse() lade() bild dateiname ausmasse zeichne() gibausmasse() lade() if (bild == null){ return ausmasse; } else { return bild.gibausmasse(); } 10

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 11

Proxy-Pattern - Struktur Klient Subjekt operation() EchtesSubjekt operation() echtessubjekt Proxy operation() echtessubjekt.operation(); 12

Proxy-Pattern - Teilnehmer Proxy 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 13

Interaktionen 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 14

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(); } 15

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) 16

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 17

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 18