Interpreter Seminar Entwurfsmuster Tobias Webelsiep

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Asymptotische Notation
Sortieren I - Bubblesort -
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Seminar Textmining WS 06/07 Themen Übung 11 unsupervised vs. supervised Symbolfolgen, Kunstsprachen Page Rank.
Rekursion Was ist Rekursion? Was sind rekursive Methoden?
Christian A. Kopf Institut für Informatik FU Berlin Episode Recognizer Framework - Rahmenwerk zur Episodenerkennung.
Design Patterns- Entwurfsmuster
Grammatiken, Definitionen
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Grammatiken beschreiben Sprachen L µ *, indem.
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Java: Objektorientierte Programmierung
Motivation Richard Göbel.
Java: Grundlagen der Objektorientierung
Anfragesprachen – Dipl. Ing. Ulrich Borchert / FH Merseburg1/7 Datenbanken werden als Anhäufung von Werten eines Wertebereiches aufgefasst und Datenbankabfragen.
DOM (Document Object Model)
Dynamische Programmierung (2) Matrixkettenprodukt
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (04 – Entwurfsverfahren) Prof. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Parsing regulärer Ausdrücke
Sebastian Grahn Sebastian Kühn
Das Strukturmuster Kompositum von C. Günther, T. Hammerschmidt und D. Kuhn.
XDoclet ETIS SS05.
Übung Datenbanksysteme UML
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Entwurfsmuster – Iterator
14StrukturKlasse1 Von der Struktur zur Klasse von C zu C++ Von Jens Hoffmann
Entwurfsmuster EDV Entwurfsmuster.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Bestimmung des ggT zweier Zahlen
Einstiegsunterricht - Informatik -. Möglichkeiten des Einstiegsunterricht Benutzung und Analyse eines dokumentierten Systems Einführung in die Programmierung.
Modellierung von Baumstrukturen mit einem einzigen Polygonnetz
Von der Sprache zum Programm
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Entwicklung der Programmiersprachen
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. M. Thaller AM1: Re-usable Content in 3D und Simulationssystemen.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Effiziente Algorithmen
Einführung in die Programmierung
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Dynamische Programmierung mit Anwendung auf Sequence Alignment Problem
Gruppe: Gewinnt Überblick 1.0 (Martin Kapfhammer)
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
2.4 Rekursion Klassifikation und Beispiele
Algorithmen und Datenstrukturen Übungsmodul 8
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Agenda Motivation und Einordnung Syntaxgerichtete Übersetzung
Software Design Patterns
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Einführung in die Programmierung mit Java
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.
Objektorientierte (OO) Programmierung
Strategy Pattern Teachlet Autor: Sven Wende Replay durch Stephan Schwake Konzepte objektorientierter Programmiersprachen, SS 2006.
1. Betreuer: Prof. Dr. Jörg Striegnitz 2. Betreuer: Dr. Martin Schindler Kontextsensitive Autocompletion für Klassendiagramme in der UML/P Florian Leppers.
Rechen- und Kommunikationszentrum (RZ) Selektionsstrategien auf Graphstrukturen Sven Porsche Seminarvorträge Aachen.
Seminar Softwareproduktlinien Domänenspezifische Sprachen Sascha Draffehn von.
© Tenbusch Oberstufenzentrum Informations- und Medizintechnik Objektorientierte Programmierung mit Java.
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
2. Die rekursive Datenstruktur Baum 2.3 Baum und Kompositum
 Präsentation transkript:

Interpreter Seminar Entwurfsmuster Tobias Webelsiep Korreferenten Prof. Dr. Burkhardt Renz Prof. Dr. Wolfgang Henrich 18.06.2003

Inhaltsverzeichnis Einführung in Verhaltensmuster Interpreter: Definition und Motivation Beispiel: Interpreter für römische Zahlen Interpreter – Entwurfsmuster Struktur, Aufbau Anwendbarkeit, Vor- und Nachteile Beispiel: Projektdaten einlesen Kritische Würdigung Entwurfsmuster - Interpreter Tobias Webelsiep

Einführung in Verhaltensmuster Definition Beschreiben allgemeine Algorithmen Befasst sich mit der Zuweisung von Zuständigkeiten Regeln Interaktionen zwischen Objekten bzw. Klassen Ermöglicht Beschreibung komplexer Kontrollflüsse Unterschiedliche Arten Klassenbasiert (Vererbung): Interpreter, Schablonenmethode Objektbasiert (Objektkomposition): Vermittler, Strategie, Zustandsmuster Entwurfsmuster - Interpreter Tobias Webelsiep

Interpreter - Definition "Definiere für eine gegebene Sprache eine Repräsentation der Grammatik sowie einen Interpreter, der die Repräsentation nutzt, um Sätze in der Sprache zu interpretieren." [GoF] "Löse ein Problem, indem es rekursiv in kleinere unabhängige Probleme unterteilt wird. Die resultierenden Teilprobleme können getrennt voneinander gelöst und zu einer um fassenden Lösung zusammengefügt werden." [Applied Java Patterns] Entwurfsmuster - Interpreter Tobias Webelsiep

Interpreter - Motivation Direkt Interpretation von Sprachen und Grammatiken Parsen von Eingabeströmen (String, Datei) Indirekt Finde für ein Problem eine Grammatik: Zerlege das Problem in Teile Schreibe jedes Teilproblem als Satz der Sprache Füge die Sätze zu einer Grammatik zusammen  Lösung des gleichen Problemtyps mit einem einzigen Interpreter Entwurfsmuster - Interpreter Tobias Webelsiep

Interpreter – Beispiel (1) Interpreter für Römische Zahlen Eingabe römischer Zahlen Ausgabe Interger-Zahlen Grammatik <Roman> := <Tausend> <Hundert> <Zehn> <Eins> <Tausend> := {'M'} <Hundert> := {'C'} | 'CD' | 'D' {'C'} | 'CM' <Zehn> := {'X'} | 'XL' | 'L' {'X'} | 'XC' <Eins> := {'I'} | 'IV' | 'V' {'I'} | 'IX' Entwurfsmuster - Interpreter Tobias Webelsiep

Interpreter – Beispiel (2) Struktur und Aufbau Entwurfsmuster - Interpreter Tobias Webelsiep

Interpreter – Beispiel (3) Quellcode Teilnehmer ZahlenParser: Hauptklasse, liest römische Zahl ein, gibt die Integer-Zahl aus. ZahlenKontext: Speichert aktuelle Integer-Zahl während des Parsvorgangs ZahlInterpreter: Abstrakte Basisklasse, enthält die interpretiere()-Methode ZahlEins: Interpretiert 1, 4, 5, 9 ZahlZehn: Interpretiert 10, 40, 50, 90 ZahlHundert: Interpretiert 100, 400, 500, 900 ZahlTausend: Interpretiert 1000 Entwurfsmuster - Interpreter Tobias Webelsiep

Interpreter-Entwurfsmuster Definition Klassenbasiertes Verhaltensmuster Beschreibt den Entwurf der Klassen aus der Grammatik Globale Informationen werden in einer Kontext-Klasse gespeichert Was wird nicht beschrieben Wie wird der Syntaxbaum erzeugt (vgl. Kompositum) Beispiele: Stringparsen, CUI, Algebraische Ausdrücke Entwurfsmuster - Interpreter Tobias Webelsiep

Interpreter-Entwurfsmuster Aufbau und Struktur Entwurfsmuster - Interpreter Tobias Webelsiep

Interpreter-Entwurfsmuster Anwendbarkeit Einfache und kleine Grammatik Anzahl der Klassen wird zu groß Wartbarkeit, Handhabbarkeit eingeschränkt Problem lässt sich einfach als Grammatik formulieren Suche darf den Rahmen nicht sprengen Die Effizienz spielt keine Rolle Aufbau des Syntaxbaumes kostet Zeit Viele Klassen-Instanziierungen Entwurfsmuster - Interpreter Tobias Webelsiep

Interpreter-Entwurfsmuster Vorteile Die Grammatik ist leicht zu implementieren Erweiterung der Grammatik und des Interpreters ohne großen Aufwand möglich Neue Interpretationsart durch eine neue Methode in der abstrakten Basisklasse Ausdruck Nachteile Große Grammatiken bereiten Probleme Parsergeneratoren meist besser geeignet Entwurfsmuster - Interpreter Tobias Webelsiep

Beispiel: Projektdaten einlesen Aufgabe Kommaseparierte Projekt-Daten und Projektpositionen einlesen und interpretieren Auswertung des Projektnamen und des Gesamtwertes Grammatik <Projekt> := PrjNr PrjName PrjStatus {<PrjPosition>} PrjNr := int PrjName := String PrjStatus := int <PrjPosition> := PrdNr PrdName PrdPreis PrdAnzahl PrdNr := int PrdName := String PrdPreis := float PrdAnzahl := int Entwurfsmuster - Interpreter Tobias Webelsiep

Beispiel: Projektdaten einlesen Klassendiagramm Entwurfsmuster - Interpreter Tobias Webelsiep

Beispiel: Projektdaten einlesen Syntaxbaum Wird vom ProjektParser aufgebaut Projekt und ProjektPosition enthalten Kind-Objekte Entwurfsmuster - Interpreter Tobias Webelsiep

Beispiel: Projektdaten einlesen Teilnehmer Start des Interpretier-Vorgangs im ProjektParser über die werteAus()-Methode des Wurzel-Objektes Jeder NichtTerminalAusdruck wertet den Kontext durch Aufruf der werteAus()-Methode seiner Kind-Objekte aus Die TerminalAusdrücke bilden das Ende der Rekursion Wertübergabe im Baum durch Klasse ProjektKontext und PositionKontext in beide Richtungen Quellcode Entwurfsmuster - Interpreter Tobias Webelsiep

Kritische Würdigung Besonderheit bei der Implementierung Einfache Möglichkeit der Kommando-Eingabe Fehlerbehandlung kann umfangreich werden Bei großen Syntaxbäumen hilft Iterator-Muster Typische Anwendungsgebiete Ausdruck-Interpreter in Mathematica Übersetzer für Smalltalk Generator für Ausgabe. Sprache ähnlich wie SQL HTML Generierung für Web-Client Entwurfsmuster - Interpreter Tobias Webelsiep

Kritische Würdigung Fazit Strukturierter Aufbau der Grammatik in Klassen Gute Wiederverwendung und Erweiterbarkeit Mächtiges Werkzeug durch Baumstruktur Implementierungsaufwand größer, da Klient und Kontext nicht im Entwurfsmuster beschreiben Da eingeschränktes Anwendungsgebiet nur selten im Softwareentwurf eingesetzt Entwurfsmuster - Interpreter Tobias Webelsiep

Vielen Dank für Ihre Aufmerksamkeit Noch Fragen? Vielen Dank für Ihre Aufmerksamkeit Entwurfsmuster - Interpreter Tobias Webelsiep