Similar presentations:
Паттерн «Интерпретатор»
1.
Паттерн «Интерпретатор»Презентацию подготовили студенты:
МГТУ «Станкин»
Группы АДБ-21-08
Шилов Д.Ю., Герасимов Д.С., Куимов А.К.
Руководитель: старший преподаватель Евстафиева С.В.
2.
Контрольные точки1. Классификация и назначение
2. Решаемая проблема (мотивация к использованию)
3. Диаграмма классов, классы-участники
4. Применимость
5. Пример реализации паттерна
6. Достоинства и недостатки при использовании
3.
Общие понятия4.
Классификация и назначениеКлассификация
Интерпретатор - паттерн
поведения классов
Назначение
• Для заданного языка определяет
представление его грамматики, а
также интерпретатор
предложений этого языка.
• Отображает проблемную область
в язык, язык – в грамматику, а
грамматику – в иерархии
объектно-ориентированного
проектирования.
5.
Решаемая проблема1. Если некоторая задача встречается
достаточно часто, то имеет смысл
представить ее конкретные
проявления в виде предложений на
простом языке. После этого можно
создать интерпретатор, который
решает задачу, анализируя
предложения этого языка
2. Пусть в некоторой, хорошо
определенной области
периодически случается некоторая
проблема. Если эта область может
быть описана некоторым “языком“,
то проблема может быть легко
решена с помощью
“интерпретирующей машины“
6.
ПрименимостьПаттерн интерпретатор используется в ситуациях, когда имеется
интерпретируемый язык, конструкции которого можно представить
в виде абстрактных синтаксических деревьев. Этот паттерн лучше
всего работает в следующих случаях:
Грамматика
проста
Эффективность не
является главным
критерием
7.
Диаграмма классов иреализация
8.
Диаграмма классов (общий случай)9.
Участники1.
AbstractExpression: определяет интерфейс
выражения, объявляет метод Interpret()
2.
TerminalExpression: терминальное выражение,
реализует метод Interpret() для терминальных
символов грамматики. Для каждого символа
грамматики создается свой объект TerminalExpression
3.
NonterminalExpression: нетерминальное выражение,
представляет правило грамматики. Для каждого
отдельного правила грамматики создается свой
объект NonterminalExpression
4.
Context: содержит общую для интерпретатора
информацию. Может использоваться объектами
терминальных и нетерминальных выражений для
сохранения состояния операций и последующего
доступа к сохраненному состоянию
5.
Client: строит предложения языка с данной
грамматикой в виде абстрактного синтаксического
дерева, узлами которого являются объекты
TerminalExpression и NonterminalExpression
10.
Тестовая задачаУсловие
Создать консольное приложение на языке C# для вывода числа
с помощью арабских цифр.
Первоначально число записано с помощью римский цифр.
Решение
1. Создать диаграмму классов для визуализации структуры
приложения
2. Реализовать требуемую функциональность с помощью языка C#
11.
Диаграмма классов12.
РеализацияКлиент
Контекст
Абстрактный класс выражения
13.
РеализацияКлассы наследники
14.
Результат работы программы15.
Достоинства и недостатки паттернаПростота изменения
и расширения
грамматики
Сложность
сопровождения
сложных грамматик
Спасибо за внимание!
Простая реализация
грамматики
Добавление новых
способов
интерпретации
выражений