-LABORPRAKTIKUM- SOMMERSEMESTER 2005

Slides:



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

Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
mit Entwicklungsumgebungen (Eclipse) Software verbessern
Informatik II: Algorithmen und Datenstrukturen SS 2013
Abstrakte Klassen Basisklassen sollten in der Regel sehr allgemein sein. Oft ist es nicht notwendig, dass Objekte dieser generellen Basisklassen angelegt.
Harald Köbler Software Design Patterns Prototype.
1 Spezielle Packages des Java SDK (1.4) java.nio.
Finale Semantik und beobachtbares Verhalten
Objektorientierte Programmierung Definition von Klassen
Design Patterns- Entwurfsmuster
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Objektorientierter Entwurf (OOD) Teil 3: Qualitätsmodell
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
DOM (Document Object Model)
Komponentenbasierter Taschenrechner mit CORBA
Cassey - Common Answer Set Evaluation sYstem Jean Gressmann Benjamin Kaufmann Robert Lenk.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Sebastian Grahn Sebastian Kühn
Das Strukturmuster Kompositum von C. Günther, T. Hammerschmidt und D. Kuhn.
MVC – ein Architekturmuster
Diskrete Mathematik I Vorlesung Arrays-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
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 Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
Command Pattern Karola Schäuble,
Entwurfsmuster EDV Entwurfsmuster.
Abstrakte Klassen, Interface
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
1 Dienstbeschreibung mit DAML Ein graphischer Editor für DAML - Ting Zheng Betreuer: Michael Klein, Philipp Obreiter.
Template Pattern Richard Göbel.
FH-Hof Algorithmen und Datenstrukturen - Einführung Richard Göbel.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
FH-Hof Adapter & Facade Pattern Richard Göbel. FH-Hof Motivation Gegeben ist eine Klasse mit vorhandenen Methoden Gefordert ist eine Klasse, die ein bestimmtes.
René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Featherweight Java Inside every large language is a small language struggling.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Interpreter Seminar Entwurfsmuster Tobias Webelsiep
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. M. Thaller AM1: Re-usable Content in 3D und Simulationssystemen.
Konzepte der objektorientierten Programmierung
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
1.5 Das Entwurfsmuster Kompositum
Informatik Zustandsorientiertes Modellieren und Programmieren 2.4 Datenkapselung 2.4 Datenkapselung Objekte können miteinander kommunizieren, indem.
2. Zustandsorientiertes Modellieren 2.4 Datenkapselung
EPROG Tutorium #5 Philipp Effenberger
JUnit Grundkonzept Gruppe Markt. JUnit: Ziele Einfachheit: –Leicht erlernbare, bekannte Tools –Möglichst wenig Aufwand für die Implementierung von Testfällen.
SWT-Übung WS 10/ Zusammenfassung.
XML-Verarbeitung mit dem.NET-Framework. Inhalt 1.XML-Verarbeitung mittels XmlReader- und XmlWriter-basierter Klassen 2.XML-Verarbeitung mittels XmlDocument.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Software Design Patterns
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Entwurfsmuster (Design Pattern)
- Studienarbeit - Entwurf und Umsetzung von kombinierten Anfragen für die Ähnlichkeitssuche auf digitalen Bilder auf der Basis von Regionen und Features.
Laborpraktikum Umsetzung von Pattern SS 05 Prof. Paul, Dipl.-Inf. Fröhlich, Dipl.-Inf. Linke {paul | iti.cs.uni-magdeburg.de
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.
Abstrakte Klassen und das Interface-Konzept
Strategy Pattern Teachlet Autor: Sven Wende Replay durch Stephan Schwake Konzepte objektorientierter Programmiersprachen, SS 2006.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
1. Die rekursive Datenstruktur Liste 1
Informatik Softwareentwicklung – 4.3 Entwurfsmuster
2. Die rekursive Datenstruktur Baum 2.3 Baum und Kompositum
 Präsentation transkript:

-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

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

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

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

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

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

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

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

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

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

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