Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Seminar Entwurfsmuster Interpreter Korreferenten Prof. Dr. Burkhardt Renz Prof. Dr. Wolfgang Henrich Korreferenten Prof. Dr. Burkhardt Renz Prof. Dr. Wolfgang.

Ähnliche Präsentationen


Präsentation zum Thema: "Seminar Entwurfsmuster Interpreter Korreferenten Prof. Dr. Burkhardt Renz Prof. Dr. Wolfgang Henrich Korreferenten Prof. Dr. Burkhardt Renz Prof. Dr. Wolfgang."—  Präsentation transkript:

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

2 Inhaltsverzeichnis Entwurfsmuster - Interpreter Tobias Webelsiep 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

3 Einführung in Verhaltensmuster Entwurfsmuster - Interpreter Tobias Webelsiep 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

4 Interpreter - Definition Entwurfsmuster - Interpreter Tobias Webelsiep "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]

5 Interpreter - Motivation Entwurfsmuster - Interpreter Tobias Webelsiep 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

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

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

8 Interpreter – Beispiel (3) Entwurfsmuster - Interpreter Tobias Webelsiep 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 Quellcode

9 Interpreter-Entwurfsmuster Entwurfsmuster - Interpreter Tobias Webelsiep 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

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

11 Interpreter-Entwurfsmuster Entwurfsmuster - Interpreter Tobias Webelsiep 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

12 Interpreter-Entwurfsmuster Entwurfsmuster - Interpreter Tobias Webelsiep 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

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

14 Entwurfsmuster - Interpreter Tobias Webelsiep Klassendiagramm Beispiel: Projektdaten einlesen

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

16 Entwurfsmuster - Interpreter Tobias Webelsiep 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 Beispiel: Projektdaten einlesen Quellcode

17 Kritische Würdigung Entwurfsmuster - Interpreter Tobias Webelsiep 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

18 Kritische Würdigung Entwurfsmuster - Interpreter Tobias Webelsiep 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

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


Herunterladen ppt "Seminar Entwurfsmuster Interpreter Korreferenten Prof. Dr. Burkhardt Renz Prof. Dr. Wolfgang Henrich Korreferenten Prof. Dr. Burkhardt Renz Prof. Dr. Wolfgang."

Ähnliche Präsentationen


Google-Anzeigen