Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

-LABORPRAKTIKUM- SOMMERSEMESTER 2005

Ähnliche Präsentationen


Präsentation zum Thema: "-LABORPRAKTIKUM- SOMMERSEMESTER 2005"—  Präsentation transkript:

1 -LABORPRAKTIKUM- SOMMERSEMESTER 2005
„Umsetzung von Pattern“ Muster: Schablonenmethode (Template Method) Gruppe: Frank Bauske Corinna Benecke Quelle: Gamma, E., Helm, R., Jonson, R., Vlissides, J., „Entwurfsmuster“, Addison Wesley, Bonn, 1996

2 Zweck und Motivation Allgemein:
- Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ Zweck und Motivation Allgemein: Definition eines Grundgerüsts eines Algorithmus unter Verwendung abstrakter Operationen (Schablonenmethode) Überschreiben durch Unterklassen zulässig, um konkretes Verhalten zu erzielen Zweck und Motivation Anwendbarkeit Struktur Konsequenzen Implementierung Verwendung und verwandte Muster Mehrere Klassen implementieren einen Algorithmus, der sich aber nur in einigen wenigen Details unterscheidet. Dadurch beinhalten viele Klassen gleichen Code, was einerseits einen größeren Zeitaufwand bei der Implementierung verursacht und andererseits muss bei Änderungen der gleiche Code an mehreren Stellen angepasst werden. Mit Hilfe der Schablonenmethode wird nun versucht diese Probleme zu umgehen. 02/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000

3 Zweck und Motivation MeinDokument Anwendung Dokument
- Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ Zweck und Motivation Anwendung Dokument Zweck und Motivation Anwendbarkeit Struktur Konsequenzen Implementierung Verwendung und verwandte Muster FügeDokumentHinzu() ÖffneDokument() ErzeugeDokument() KannDokumentÖffnen() VorDokumentÖffnen() Speichere() Öffne() Schliesse() LiesEin() MeineAnwendung Die abstrakte Klasse Anwendung definiert mit der Operation ÖffneDokument den Algorithmus zum Öffnen und Einlesen eines Dokuments. Die ÖffneDokument-Operation definiert jeden einzelnen Schritt zum Öffnen eines Dokumenst. Sie prüft, ob das Dokument überhaupt geöffnet werden kann, erzeugt das anwendungsspezifische Dokumentobjekt, fügt es in eine Liste von geöffneten Dokumenten ein und liest das Dokument aus der Datei ein. ÖffneDokument stellt die Schablonenmethode dar. Unterklassen der Klasse Anwendung implementieren die einzelnen Schritte des Algorithmus, so die Überprüfung, ob das Dokument geöffnet werden kann (KannDokumentÖffnen) und wie das Dokument zu erzeugen ist (ErzeugeDokument). Die Dokumentklassen implementieren den Schritt des Einlesens eines Dokuments (LiesEin). Die Schablonemethode definiert desweiteren eine Operation, die es den Unterklassen ermöglicht, sich einzuhaken, wenn der Kontrollfluß kurz vor dem Öffnen des Dokuments steht (VorDokumentÖffnen), sofern es für sie eine Bedeutung hat. Die Schablonenmethode legt mit Hilfe der Definition abstrakter Operationen die Reihenfolge der abzuarbeitenden Schritte fest. Die Anwendungs- und Dokumentunterklassen können aber zumindest innerhalb dieser Schritte ihren Bedürfnissen entsprechende Anpassungen vornehmen. MeinDokument LiesEin() ErzeugeDokument() ° KannDokumentÖffnen() VorDokumentOeffnen() 03/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000 return new MeinDokument

4 Anwendbarkeit Eine Schablonenmethode sollte verwendet werden:
- Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ Anwendbarkeit Eine Schablonenmethode sollte verwendet werden: um invariante Teile eines Algorithmus genau einmal festzulegen um die Verdopplung von Code zu vermeiden um Erweiterungen durch Unterklassen zu kontrollieren Zweck und Motivation Anwendbarkeit Struktur Konsequenzen Implementierung Verwendung und verwandte Muster 04/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000

5 Struktur … AbstrakteKlasse Schablonenmethode() ° PrimitiveOperation1()
- Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ Struktur Zweck und Motivation Anwendbarkeit Struktur Konsequenzen Implementierung Verwendung und verwandte Muster AbstrakteKlasse PrimitiveOperation1() PrimitiveOperation2() Schablonenmethode() ° PrimitiveOperation1() PrimitiveOperation2() AbstrakteKlasse (Anwendung): definiert abstrakte primitive Operationen, die von konkreten Unterklassen definiert werden, um die Schritte eines Algorithmus zu implementieren implementiert eine Schablonenmethode zur Definition eines Grundgerüsts eines Algorithmus Die Schablonenmethode ruft sowohl primitve Operationen als auch in AbstrakteKlasse oder anderen Klassen definierte Operationen auf. Konkrete Klasse (z. B. ZeichenAnwendung): implementiert die primitiven Operationen, welche die unterklassenspezifischen Schritte des Algorithmus ausführen Die KonkreteKlasse geht dabei davon aus, dass ihre AbstrakteKlasse die invarianten Schritte des Algorithmus vorgibt. KonkreteKlasse PrimitiveOperation1() PrimitiveOperation2() 05/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000

6 Struktur Beispiel Benutzungsschnittstelle eines Dateisystems:
- Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ Struktur Beispiel Benutzungsschnittstelle eines Dateisystems: Zweck und Motivation Anwendbarkeit Struktur Konsequenzen Implementierung Verwendung und verwandte Muster Die write-Methode der Klasse Node ist die Schablonenmethode, die primitive Operationen isWritable() und WriteBody() benutzt. Algorithmus: Falls isWriteable() wahr, führe WriteBody() aus, andernfalls erzeuge Fehlermeldung „NotWriteable“ Bei der Klasse Directory ergibt isWriteable() immer falsch In der Klasse File wird GetProtection ausgewertet, um isWriteable() zu entscheiden, WriteBody() wird implementiert Die Klasse Link ruft primitive Operationen des Originals auf. 06/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000

7 Konsequenzen grundlegende Technik zur Wiederverwendung von Code
- Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ Konsequenzen grundlegende Technik zur Wiederverwendung von Code führt zu einem invertierten Kontrollfluss („Hollywood-Prinzip“) ruft folgende Arten von Operationen auf: konkrete Operationen der konkreten oder Klienten-Klassen konkrete Operationen der abstrakten Klasse abstrakte Operationen Fabrikmethoden Einschubmethoden Zweck und Motivation Anwendbarkeit Struktur Konsequenzen Implementierung Verwendung und verwandte Muster 07/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000

8 Konsequenzen Einschubmethoden:
- Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ Konsequenzen Einschubmethoden: - bieten Defaultverhalten, dass von Unterklassen bei Bedarf erweitert werden kann - Schablonenmethode sollte klar unterscheiden zwischen: a.) Einschubmethoden und b.) abstrakten Operationen Zweck und Motivation Anwendbarkeit Struktur Konsequenzen Implementierung Verwendung und verwandte Muster 08/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000

9 Implementierung Implementierungsaspekte:
- Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ Implementierung Zweck und Motivation Anwendbarkeit Struktur Konsequenzen Implementierung Verwendung und verwandte Muster Implementierungsaspekte: Verwendung der C++ -Zugriffskontrolle Minimierung primitiver Operationen Namenskonventionen C++-Zugriffskontrolle: Die von einer Schablonenmethode aufgerufenen primitiven Operationen können in C++ geschützt deklariert werden. Dies stellt sicher, dass sie nur von der Schablonenmethode aufgerufen werden können. Minimierung primitiver Operationen: Ein wichtiges Ziel beim Entwurf von Schablonenmethoden ist die Minimierung der Anzahl an primitiven Operationen, die eine Unterklasse zum Ausfüllen des Algorithmus überschreiben muss. Namenskonventionen: Sie können die zu überschreibenden Operationen durch das Hinzufügen eines Präfixes vor ihrem Namen kennzeichnen, z. B. wird beim MacApp-Framework für Schablonenmethoden das Präfix „Do-“ verwendet. 09/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000

10 Verwendung und verwandte Muster
- Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ Verwendung und verwandte Muster bekannte Anwendung: Zweck und Motivation Anwendbarkeit Konsequenzen Struktur Implementierung Verwendung und verwandte Muster Stream I/O API von Java ein OutputStream bietet eine Methode zum Schreiben eines Byte-Arrays Methode für das einzelne Byte ist jedoch noch abstrakt Klassen wie FileOutputStream können diese Methode überschreiben und „erben“ damit eine funktionierende Methode zum Schreiben eines Byte- Arrays 10/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000

11 Verwendung und verwandte Muster
- Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ Verwendung und verwandte Muster Beziehungen zu anderen Mustern: Zweck und Motivation Anwendbarkeit Konsequenzen Struktur Implementierung Verwendung und verwandte Muster Fabrikmethode Brücke Aufruf Aufruf Schablonenmethode Extraktion Dekomposition Erbauer Strategie Verwandte Muster: 11/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000


Herunterladen ppt "-LABORPRAKTIKUM- SOMMERSEMESTER 2005"

Ähnliche Präsentationen


Google-Anzeigen