-LABORPRAKTIKUMSOMMERSEMESTER 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 Zweck und Motivation - Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ 1) Zweck und Motivation 2) Anwendbarkeit 3) Struktur 4) Konsequenzen 5) Implementierung 6) Verwendung und verwandte Muster 02/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000 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 - Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ 1) Zweck und Motivation 2) Anwendbarkeit 3) Struktur 4) Konsequenzen 5) Implementierung 6) Verwendung und verwandte Muster Dokument Anwendung Speichere() Öffne() Schliesse() LiesEin() FügeDokumentHinzu() ÖffneDokument() ErzeugeDokument() KannDokumentÖffnen() VorDokumentÖffnen() MeinDokument LiesEin() 03/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000 MeineAnwendung ° ErzeugeDokument() KannDokumentÖffnen() VorDokumentOeffnen() return new MeinDokument Anwendbarkeit - Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ 1) Zweck und Motivation 2) Anwendbarkeit 3) Struktur 4) Konsequenzen 5) Implementierung 6) Verwendung und verwandte Muster Eine Schablonenmethode sollte verwendet werden: um invariante Teile eines Algorithmus genau einmal festzulegen um die Verdopplung von Code zu vermeiden 04/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000 um Erweiterungen durch Unterklassen zu kontrollieren Struktur - Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ AbstrakteKlasse 1) Zweck und Motivation 2) Anwendbarkeit 3) Struktur 4) Konsequenzen 5) Implementierung 6) Verwendung und verwandte Muster Schablonenmethode() ° PrimitiveOperation1() PrimitiveOperation2() Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000 PrimitiveOperation1() … PrimitiveOperation2() … KonkreteKlasse 05/11 … PrimitiveOperation1() PrimitiveOperation2() Struktur - Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ 1) Zweck und Motivation 2) Anwendbarkeit 3) Struktur 4) Konsequenzen 5) Implementierung 6) Verwendung und verwandte Muster 06/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000 Beispiel Benutzungsschnittstelle eines Dateisystems: Konsequenzen - Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ 1) Zweck und Motivation 2) Anwendbarkeit 3) Struktur 4) Konsequenzen 5) Implementierung 6) Verwendung und verwandte Muster 07/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000 - grundlegende Technik zur Wiederverwendung von Code - führt zu einem invertierten Kontrollfluss („Hollywood-Prinzip“) - ruft folgende Arten von Operationen auf: 1) konkrete Operationen der konkreten oder Klienten-Klassen 2) konkrete Operationen der abstrakten Klasse 3) abstrakte Operationen 4) Fabrikmethoden 5) Einschubmethoden Konsequenzen - Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ 1) Zweck und Motivation 2) Anwendbarkeit 3) Struktur 4) Konsequenzen 5) Implementierung 6) Verwendung und verwandte Muster Einschubmethoden: - bieten Defaultverhalten, dass von Unterklassen bei Bedarf erweitert werden kann - Schablonenmethode sollte klar unterscheiden zwischen: a.) Einschubmethoden und 08/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000 b.) abstrakten Operationen Implementierung - Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ 1) Zweck und Motivation 2) Anwendbarkeit 3) Struktur 4) Konsequenzen 5) Implementierung 6) Verwendung und verwandte Muster Implementierungsaspekte: 1) Verwendung der C++ -Zugriffskontrolle 2) Minimierung primitiver Operationen 3) Namenskonventionen 09/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000 Verwendung und verwandte Muster - Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ 1) Zweck und Motivation 2) Anwendbarkeit 3) Konsequenzen 4) Struktur 5) Implementierung 6) Verwendung und verwandte Muster 10/11 Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000 bekannte Anwendung: • 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 ByteArrays Verwendung und verwandte Muster - Laborpraktikum – Sommersemester 2005 „Umsetzung von Pattern“ 1) Zweck und Motivation 2) Anwendbarkeit 3) Konsequenzen 4) Struktur 5) Implementierung 6) Verwendung und verwandte Muster Beziehungen zu anderen Mustern: Fabrikmethode Aufruf Frank Bauske Corinna Benecke Fernstudium Informatik Matrikel 2000 Aufruf Schablonenmethode Extraktion 11/11 Brücke Verwandte Muster: Erbauer Dekomposition Strategie