Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Interpreter Seminar Entwurfsmuster Tobias Webelsiep

Ähnliche Präsentationen


Präsentation zum Thema: "Interpreter Seminar Entwurfsmuster Tobias Webelsiep"—  Präsentation transkript:

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

2 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

3 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

4 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

5 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

6 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

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

8 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

9 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

10 Interpreter-Entwurfsmuster
Aufbau und Struktur Entwurfsmuster - Interpreter Tobias Webelsiep

11 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

12 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

13 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

14 Beispiel: Projektdaten einlesen
Klassendiagramm Entwurfsmuster - Interpreter Tobias Webelsiep

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

16 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

17 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

18 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

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


Herunterladen ppt "Interpreter Seminar Entwurfsmuster Tobias Webelsiep"

Ähnliche Präsentationen


Google-Anzeigen