OM Entwurfsmuster. OM Entwurfsmuster. 7.1 Entwurfsmuster, Frameworks, Klassenbibl. Definition Entwurfsmuster (design pattern)

Ähnliche Dokumente
Objektorientierte und Funktionale Programmierung SS 2014

Objektorientierteund FunktionaleProgrammierung

Entwurfsmuster. Marc Monecke

Software Engineering. 7. Entwurfsmuster

Einführung in die Informatik II

Objektorientierte und Funktionale Programmierung

Entwurfsmuster, Klassenbibliotheken und Frameworks unterscheiden können. Wichtige Entwurfsmuster kennen und erklären können, wo sie eingesetzt werden

OOSE 8 Entwurfsmuster (Hörsaalübung)

3. Übung Softwaretechnik

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

Entwurfsmuster Martin Fesser 00IN

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

Factory Method (Virtual Constructor)

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

OOP. Tagesprogramm. Software-Entwurfsmuster. Factory-Method. Prototype

Entwurfsmuster (Design Patterns)

Effizientes Programmieren

Effizientes Programmieren

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

185.A Software-Entwurfsmuster 1 OOP. Software-Entwurfsmuster

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

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

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

Design Patterns. OO-GetTogether. Volker Michels

Structural Patterns. B. Sc. Andreas Meißner

Entwurfsmuster in Java

Zweck: sequentieller Zugriff auf Elemente eines Aggregats. mehrere Abarbeitungen des Aggregatinhalts

Zweck: sequentieller Zugriff auf Elemente eines Aggregats

OOP. Tagesprogramm. Aspekte und Annotationen. Software-Entwurfsmuster. Factory-Method. Prototype

Software Engineering. 10. Entwurfsmuster II. Franz-Josef Elmer, Universität Basel, HS 2015

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26

Design Patterns. 3. Juni 2015

Software-Architektur. Design Patterns. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Lehrbuch der Objektmodellierung

3. Entwurfsmuster zur Entkopplung von Modulen

Programmiermethodik Entwurfsmuster SS 2002

Software-Entwurfsmuster

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

SE Besprechung. Übung 4 Architektur, Modulentwurf

3. Entwurfsmuster zur Entkopplung von Modulen. Übersicht zu Entwurfsmustern

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

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

Ausnahmebehandlung in Java

Inhaltsverzeichnis. Vorwort Geleitwort von Grady Booch Einleitung... 23

R O O T S Ferientutorien Softwaretechnologie 2010

Special on Design Patterns Übungen zur objektorientierten Programmierung und Modellierung

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

Software Engineering II

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

Software Engineering II (IB) Design Patterns

Entwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr

Software Engineering II (IB) Design Patterns

Objektorientierte Systementwicklung

Architektur-Grobstruktur: Framework

Design Patterns. 5. Juni 2013

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

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

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

Software-Architektur Design Patterns

Strategie. (Strategy. / Policy) Ein objektbasiertes Verhaltensmuster. Stephan Munkelt, Stefan Salzmann - 03IN

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

Praxisbuch Objektorientierung

Entwurfsprinzip. Entwurfsprinzip

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

Praktische Softwaretechnologie Vorlesung 9

Entwurfsmuster - Iterator

Model-View-Controller

Verteidigung Großer Beleg

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

MVVM (Model View ViewModel) in JavaFX

Tutorium Softwaretechnik I

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

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

Ein Design Tool für objektorientierte portable Programmierschnittstellen

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite!

Programmierkurs. 13. Vorlesung. Sven Mallach. 27. Januar Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 1/ 69

Objektorientierte Programmierung

Software Design Patterns Zusammensetzung. Daniel Gerber

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Objektorientiertes Programmieren mit C++ für Fortgeschrittene

Objektorientierte Entwurfsmuster

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

INSPIRE - Modellierung

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

Entwurfsmuster und Frameworks Singleton

Entwurfsmuster. Rainer Schmidberger

Objektorientierte Programmierung (OOP)

Softwarearchitektur, UML, Design Patterns und Unit Tests

Matthias Geirhos. Entwurfsmuster. Das umfassende Handbuch. Rheinwerk. Computing

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Tutorium Softwaretechnik I

Programmiermethodik 3. Klausur Lösung

Programmierung Nachklausurtutorium

Entwurfsmuster - Iterator & Composite

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Softwaretechnik (Allgemeine Informatik) Überblick: 6. Objektorientiertes Design

Objektorientierte Analyse (OOA) OOA-Pattern

UML (Unified Modelling Language) von Christian Bartl

ASPECT-ORIENTED DESIGN PATTERNS

Transkript:

1 Inhalt: Entwurfsmuster 7.1 Entwurfsmuster, Frameworks, Klassenbibliotheken 7.2 Fabrikmethode-Muster 7.3 Singleton-Muster 7.4 Kompositum-Muster 7.5 Proxy-Muster 7.6 Fassaden-Muster 7.7 Beobachter-Muster 7.8 Schablonenmethode-Muster 2 7.1 Entwurfsmuster, Frameworks, Klassenbibl. Definition Entwurfsmuster (design pattern) Bewährte generische Lösung für ein immer wiederkehrendes Entwurfsproblem, das in bestimmten Situationen auftritt Beschreibung eines Entwurfsmusters Name des Musters Problembeschreibung Wann ist das Muster anwendbar? Lösungsbeschreibung Abstrakte Lösung Konsequenzen Für Evaluierung von Entwurfsalternativen

3 7.1 Entwurfsmuster, Frameworks, Klassenbibl. Klassifikation der Mustern Erzeugungsmuster (creational patterns) Helfen, ein System unabhängig davon zu machen, wie seine Objekte erzeugt, zusammengesetzt und repräsentiert werden Strukturmuster (structural patterns) Befassen sich mit der Zusammensetzung von Klassen und Objekten zu größeren Strukturen Verhaltensmuster (behavioral patterns) Befassen sich mit der Interaktion zwischen Objekten und Klassen Beschreiben komplexe Kontrollflüsse, die zur Laufzeit schwer nachvollziehbar sind 4 7.1 Entwurfsmuster, Frameworks, Klassenbibl. Weitere Klassifikation der Muster Klassenbasierte Muster Behandeln Beziehungen zwischen Klassen Ausgedrückt durch Vererbungsstrukturen Festgelegt zur Übersetzungszeit Objektbasierte Muster Beschreiben Beziehungen zwischen Objekten, die zur Laufzeit geändert werden können Benutzen auch bis zu einem gewissen Grad die Vererbung

5 7.1 Entwurfsmuster, Frameworks, Klassenbibl. Klassenbibliothek Organisierte Softwaresammlung, aus der ein Entwickler nach Bedarf Einheiten verwendet Topologien Baum-Topologie Gemeinsame Wurzelklasse Wald-Topologie Bibliothek besteht aus mehreren Baumhierarchien Vorteil: Flachere Vererbungshierarchie im Vergleich zur Baum-Topologie Baustein-Topologie Unabhängige Klassen Verwendung des Konzepts der generischen Klasse zur spezifischen Anpassung 6 fundamentale, allgemein nutzbare, systemnahe Klassen wie Listen, strings, 7.1 Entwurfsmuster, Frameworks, Klassenbibl. bags, maps, queues usw. Klassenbibliotheken Fundamental- Klassenbibliotheken GUI- Klassenbibliotheken Grafik- Klassenbibliotheken Klassenbibliotheken zum Zugriff auf Datenbanken Klassen fürgrafische Benutzungsoberflächen, wie widgets, menubar, scrollbar, window, list box, text edit Klassen zur Entwicklung komplexer, interaktiver Grafikanwendungen: Diagramme, spreadsheets, Skalen, Vektorgrafiken Klassen zur Ansteuerung von (relationalen) Datenbanksystemen Klassenbibliotheken zur Interprozeßkommunikation Anwendungsspezifische Klassenbibliotheken Klassen zur Kommunikation zwischen Prozessen: dispatcher, data representation, message header, name-service

7 7.1 Entwurfsmuster, Frameworks, Klassenbibl. Framework Def.: Menge von zusammenarbeitenden Klassen, die einen wiederverwendbaren Entwurf für einen bestimmten Anwendungsbereich implementieren Besteht aus konkreten und? insbesondere? aus abstrakten Klassen, die Schnittstellen definieren Definition von Unterklassen zur Verwendung und Anpassung des Frameworks Selbstdefinierte Unterklassen empfangen Botschaften von vordefinierten Framework- Klassen Hollywood-Prinzip:»Don t call us, we ll call you«. 8 7.1 Entwurfsmuster, Frameworks, Klassenbibl. Frameworks sind immer spezifisch auf einen Anwendungsbereich ausgelegt Beispiele Erstellung grafischer Editoren Erstellung von Finanzsoftware Spezialisierung eines Frameworks für eine konkrete Anwendung durch Ableiten von Unterklassen aus den abstrakten Framework-Klassen Realisierung der Frameworks mittels Programmiersprachen Frameworks können also ausgeführt und direkt wiederverwendet werden Frameworks ermöglichen hohe Wiederverwendung

9 7.1 Entwurfsmuster, Frameworks, Klassenbibl. Frameworks bestimmen die Architektur der Anwendung definieren die Struktur der Klassen und Objekte und deren Verantwortlichkeiten legen fest, wie Klassen und Objekte zusammenarbeiten legen fest, wie der Kontrollfluß aussieht Anwendungsprogrammierer kann sich auf die Details der Anwendung konzentrieren 10 7.1 Entwurfsmuster, Frameworks, Klassenbibl. Muster vs. Framework Entwurfsmuster sind abstrakter als Frameworks Werden nur beispielhaft durch Programmcode repräsentiert Anwendung von Entwurfsmustern mit einer neuer Implementierung verbunden Entwurfsmuster sind kleiner als Frameworks Ein typisches Framework enthält mehrere Entwurfsmuster Entwurfsmuster sind weniger spezialisiert als Frameworks Keine Beschränkung auf einen bestimmten Anwendungsbereich

11 7.2 Fabrikmethode-Muster (factory method) Motivation Verwendung eines Frameworks für eine Anwendung, die mehrere Dokumente gleichzeitig anzeigen kann Verwendung der beiden abstrakten Klassen Application und Document und Modellierung einer Assoziation zwischen ihren Objekten Document open() close() save() revert() docs * Application createdocument() newdocument opendocument() Document *doc = createdocument(); docs.add(doc); doc >open(); MyDocument «creates» MyApplication createdocument() return new MyDocument 12 7.2 Fabrikmethode-Muster Klasse Application ist für die Erzeugung neuer Dokumente zuständig Softwarekonstrukteur leitet von diesen beiden Klassen seine anwendungsspezifischen Klassen ab Problem Erzeugung eines neuen Objekts von MyDocument aus der Klasse MyApplication Framework muß Objekte erzeugen, kennt aber nur die abstrakten Oberklasse, von der es keine Objekte erzeugen darf

13 7.2 Fabrikmethode-Muster Lösung Unterklassen von Application überschreiben die abstrakte Operation createdocument() Exemplar von MyDocument wird zurückgegeben Nach der Erzeugung eines Objekts von MyApplication, kann diese spezifische Dokumente erzeugen, ohne deren exakte Klasse zu kennen Operation createdocument() heißt Fabrikmethode Sie ist für die»fabrikation«eines Objekts verantwortlich 14 7.2 Fabrikmethode-Muster Anwendbarkeit Verwendung des Muster, wenn eine Klasse die von ihr zu erzeugenden Objekte nicht im voraus kennen kann die Unterklassen festlegen sollen, welche Objekte sie erzeugen Struktur (klassenbas. Erzeugungsmuster) Product Creator factorymethod() anoperation() product = factorymethod() ConcreteProduct «creates» ConcreteCreator factorymethod() return new ConcreteProduct

15 7.3 Singleton-Muster Motivation Bei manchen Klassen soll genau ein Objekt existieren Einfacher Zugriff auf dieses Objekt von mehreren anderen Objekten Struktur (Objektbas. Erzeugungsmuster) Singleton uniqueinstance singletondata instance() singletonoperation() getsingletondata() return uniqueinstance 16 7.3 Singleton-Muster Deklaration class Singleton {public:static Singleton* instance(); protected:singleton(); private: static Singleton* uniqueinstance; }; Singleton* Singleton::uniqueInstance = 0; Implementierung Singleton* Singleton::instance() { if (uniqueinstance == 0) { uniqueinstance = new Singleton; } return uniqueinstance; }

17 7.4 Kompositum-Muster (composite) Motivation Zusammensetzen von Grafiken zu komplexen Grafiken Komplexe und einfache Grafikobjekte sollen aus Sicht des Klienten gleich behandelt werden :Text :Line :Pictur e :Pictur e :Rectangle :Rectangle 18 7.4 Kompositum-Muster Lösung mittels Stückliste Graphic draw() add(graphic) remove(graphic) getpart(int) graphics * 0..1 Line Rectangle Text Picture draw() draw() draw() draw() add(g:graphic) remove(graphic) getpart(int) for all g in graphics g.draw() add g to list of graphics

19 7.4 Kompositum-Muster Struktur (Objektbasiertes Strukturmuster) Client 1 Component operation() add(component) remove(component) getpart(int) parts * Leaf Composite 0..1 operation() operation() add(component) remove(component) getpart(int) for all g in parts g.operation() 20 7.5 Proxy-Muster (proxy) Motivation Integration grafischer Objekte in einen Text Darstellung großer Bilder benötigt viel Computerleistung Lösung Verwendung eines Platzhalters Proxy? anstelle des echten Bildes Der Bild-Proxy erzeugt das tatsächliche Bild erst, wenn es benötigt wird :TextDocument image :ImageProxy im Hauptspeicher filename :Image data auf der Festplatte

21 7.5 Proxy-Muster Proxy kontrolliert den Zugriff auf ein Objekt mit Hilfe eines vorgelagerten Stellvertreter-Objekts Text Document * Graphic draw() getextent() store() load() Image imageimp extent draw() getextent() store() load() 1 «creates» image Image Proxy filename extent draw() getextent() store() load() if(image==o) image=loadimage(filename) image >draw() if(image==o) return extent; else return image >getextent(); 22 7.5 Proxy-Muster Anwendung in folgenden Situationen Remote-Proxy als lokaler Vertreter für ein Objekt auf einem anderen Computer Virtuelles Proxy erzeugt»teure«objekte auf Verlangen (wie im Beispiel) Schutz-Proxy kontrolliert Zugriff auf das Original Smart reference als Ersatz für einen einfachen Zeiger, der zusätzlich folgende Funktionen anbietet Zählen der Referenzen auf das eigentliche Objekt Automatische Freigabe, wenn es keine Referenzen mehr besitzt Laden eines persistenten Objekts, wenn es erstmalig referenziert wird Testen eines Objekts auf locking, bevor darauf zugegriffen wird

23 7.5 Proxy-Muster Struktur (Objektbasiertes Strukturmuster) Client 1 Subject request() RealSubject request() 1 real Subject Proxy request() realsubject >request() 24 7.6 Fassaden-Muster (facade) Motivation Entwurfsziel Lose Kopplung von Paketen Lose Kopplung erleichtert den Austausch der Pakete und deren unabhängige Implementierung Fassadenklasse zeigt eine vereinfachte Schnittstelle für die? umfassendere? Funktionalität des Pakets Vereinfachte Sicht genügt vielen Klienten Klienten, denen diese Schnittstelle nicht reicht, müssen hinter die Fassade schauen

25 7.6 Fassaden-Muster Struktur (Objektbasiertes Strukturmuster) Client Client Package Package Facade 26 7.6 Fassaden-Muster Anwenden des Musters, wenn einfache Schnittstellen zu einem komplexen Paket angeboten werden sollen es zahlreiche Abhängigkeiten zwischen Klienten und einem Paket gibt Fassade entkoppelt beide Komponenten Fördert die Unabhängigkeit und Portabilität des Pakets Pakete in Schichten organisiert werden sollen Fassade definiert den Eintritt für jede Schicht Vereinfachung der Pakete, indem ausschließlich über eine Fassade kommuniziert wird

27 7.6 Fassaden-Muster Die Fassaden-Klasse weiß, welche Paket-Klassen für die Bearbeitung einer Botschaft zuständig sind delegiert Botschaften vom Klienten an das zuständige Paket definiert keine neue Funktionalität Die Klassen im Paket führen die von der Fassade zugewiesenen Aufgaben durch wissen nichts von der Fassade 28 7.7 Beobachter-Muster (observer) Motivation Objekt enthält Anwendungsdaten Darstellung dieser Daten auf verschiedene Arten Kreisdiagramm soll sich ändern, wenn die Daten in der Tabelle verändert werden und umgekehrt x y z a b c 60 30 10 50 30 20 80 10 10 a b c a = 50% b = 30% c = 20% Benachrichtigung über Änderung Anfragen, Veränderungen

29 7.7 Beobachter-Muster Struktur Subject kennt alle seine Beobachter (observer) und informiert sie über alle Änderungen Beobachter kennen sich untereinander nicht Synchronisation jeden Beobachters mit dem Zustand des Subject Subject attach(observer) detach(observer) notify() for all o in observers o >update() observers * Observer update() Concrete Subject subjectstate getstate() setstate() subject 1 return subjectstate Concrete Observer observerstate update() observerstate= subject > getstate() 30 7.7 Beobachter-Muster Interaktionen des Beobachter-Musters :Concr etesubject Observer 1 Observer 2 input() setstate() notify() update() getstate() getstate() update()

31 7.8 Schablonenmethode-Muster Motivation Framework, das die Klassen Document und Application bereitstellt Document open() save() close() doread() * docs Application adddocument() opendocument() docreatedocument() canopendocument() abouttoopendocument() MyDocument doread() «creates» MyApplication docreatedocument() canopendocument() abouttoopendocument() 32 7.8 Schablonenmethode-Muster Schablonenmethode opendocument() Definiert den Rahmen eines Algorithmus Delegiert Teilschritte an Unterklassen void Application::openDocument (const char* name) { if (!canopendocument(name) ) return; Document* doc = docreatedocument(); if (doc) { docs->adddocument(doc); abouttoopendocument(doc); doc->open(); doc->doread(); }}

33 7.8 Schablonenmethode-Muster Anwenden des Musters um die invarianten Teile eines Algorithmus genau einmal festzulegen Konkrete Ausführung der variierenden Teile wird den Unterklassen überlassen wenn gemeinsames Verhalten von Unterklassen in einer Oberklasse realisiert werden soll Vermeidung der Duplikation von Code 34 7.8 Schablonenmethode-Muster Struktur (Objektbasiertes Verhaltensmuster) AbstractClass templatemethod() primitiveoperation1() primitiveoperation2() primitiveoperation1() primitiveoperation2() ConcreteClass primitiveoperation1() primitiveoperation2()

35 Aufgabe 1 Modellieren und Erkennen von Mustern Erstellen Sie Klassen- und Sequenzdiagramm Welches Muster liegt vor? ClassSpecification mit AttributeSpecs ClassTree mit AttributeList ClassSymbol mit AttributeSpecs 36 Aufgabe 2 a Systematisches Identifizieren von Entwurfsmustern a. Grafik #Koordinate #istsichtbar +zeigen() +loeschen() +verschieben() zeigen().. loeschen() Kreis #Radius +zeigen() +loeschen() +vergroessern() +verkleinern()

37 Aufgabe 2 b b. Dateiobjekt verschieben() kopieren() loeschen() * Verknuepfung oeffnen() Datei oeffnen() Verzeichnis 0..1 durchsuchen() hinzufuegen() zeigeinhalt() 38 Aufgabe 2 c c. Element Diagram draw() delete() tools * createelement() showelement() activeelement() tool = createelement() Link Object MyDiagram createelement()