César Estéban Castañeda Luis Andrés Almanza

Slides:



Advertisements
Presentaciones similares
Complejidad Computacional
Advertisements

Compiladores e intérpretes Análisis Sintáctico II
Estructura de Datos Unidad 4. Recursividad Dra. María Lucía Barrón Estrada Enero-Junio 2007.
Herencia en C#.
Fundamentos de la programación orientada a objetos
POLIMORFISMO "una interfaz, múltiples métodos".
Lenguaje de programación Java
Arquitectura CLARO-TECNOTREE
Programación Orientada a Objetos
Analizadores Sintácticos Descendentes Predictivos
El proceso de desarrollo de software
Curso de Java Estructura del Lenguaje
Genéricos en Java Jaime Ramírez, Ángel Lucas González
1.2 Sintaxis del lenguaje Java.
Aplicación del paradigma orientado a objetos
PROGRAMACION ORIENTADA A OBJETOS
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Algoritmo y Estructura de Datos I
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Herencia e Interfaces.
TALLER DE PROGRAMACIÓN III
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Tema 6: Clases Antonio J. Sierra.
Colecciones.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
Programación Orientada a Aspectos (POA)
ESTRUCTURA DE DATOS EN JAVA
Patrones Creacionales
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Chain of Responsibility José Manuel Domínguez Arroyo Margarita Lozano Pérez Carlos Ignacio Mantecón Nebreda.
Patrones de diseño DECORATOR Mario Rodríguez Martín
Introducción al Análisis Sintáctico
Luis Pereda Calvo1 Comportamiento de Objetos Estrategia (Strategy) *Política (Policy)
COMP 250.  Ejemplo:  Suponer que se necesita codificar un programa donde se muestre como resultado el string “Bienvenidos al mundo de JAVA!!!” cien.
Hola mundo. 2 En Java para indicar el inicio y fin de un bloque de instrucciones utiliza las llaves { } es decir: { Inicio de instrucciones para la clase.
MEMENTO Patrón de Comportamiento Ana María Mateo Jorge P. Andrés
Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi.
PATRON PROTOTYPE Cristina Merino Héctor Carbajo Alicia Arroyo.
PATRONES DE DISEÑO.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Programación avanzada en Java Miguel Ángel Corella 26 de Septiembre de 2005.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Presentado por: PABLO ANDRES DIAZ SAIN HASSAM CAICEDO
Algoritmos y Programación III
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Entrada y Salida ES.leerChar (); ES.leerEntero (); ES.leerEnteroLargo (); ES.leerFloat (); ES.leerDouble (); System.out.print System.out.println.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
Ing. Johanna Macias Algoritmo, Estructura y Programación III.
Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera.
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Un paseo por las nuevas funciones. Patrones de Diseño Por si no ha quedado claro, los Patrones de Diseño, son el esqueleto de las soluciones a problemas.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Crear Aplicación Cliente para Conectarse a una Base de Datos.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

César Estéban Castañeda Luis Andrés Almanza Patrón “Interpreter” César Estéban Castañeda Luis Andrés Almanza

Propósito del Patrón “Interpreter” Definir la representación de una gramática de un lenguaje, junto con su interprete. (Lenguajes de Programación)

UML “Interpreter”

Componentes del patrón “Interpreter” AbstractExpression: Declara una interfaz para ejecutar una operación. TerminalExpression: Implementa una operación asociada a un símbolo terminal en la gramática del lenguaje. NonterminalExpression: Implementa una operación para un símbolo no terminal. Esta expresión normalmente hace llamadas recursivas a si misma. Context: Contiene la información global a el interprete. Client: Construye y/o envía una abstracción de la representación del árbol representando un ejemplo de la gramática del lenguaje, este compone de expresiones terminales y no terminales. Ejecuta la operación del interprete.

Ejemplo Notación Polaca Inversa

Ejemplo I interface Expression { public void interpret(Stack<Integer> s); } class TerminalExpression_Number implements Expression { private int number; public TerminalExpression_Number(int number) { this.number = number; } public void interpret(Stack<Integer> s) { s.push(number); }

Ejemplo II class TerminalExpression_Plus implements Expression { public void interpret(Stack<Integer> s) { s.push( s.pop() + s.pop() ); } } class TerminalExpression_Minus implements Expression { public void interpret(Stack<Integer> s) { int tmp = s.pop(); s.push( s.pop() - tmp ); }

Ejemplo III class Parser { private ArrayList<Expression> parseTree = new ArrayList<Expression>(); public Parser(String s) { for (String token : s.split(" ")) { if (token.equals("+")) parseTree.add( new TerminalExpression_Plus() ); else if (token.equals("-")) parseTree.add( new TerminalExpression_Minus() ); else parseTree.add( new TerminalExpression_Number(Integer.valueOf(token)) ); } public int evaluate() { Stack<Integer> context = new Stack<Integer>(); for (Expression e : parseTree) e.interpret(context); return context.pop();

Ejemplo IV class InterpreterExample { public static void main(String[] args) { String expression = "42 2 1 - +"; Parser p = new Parser(expression); System.out.println("'" + expression +"' equals " + p.evaluate()); }

Ventajas del patrón “Interpreter” Fácil de extender y cambiar la gramática de un lenguaje, aprovechando la herencia. La implementación de gramática nueva es sencilla, las clases son fáciles de escribir. Añadir nuevas forma de interpretar las expresiones es sencillo.

Desventajas del patrón “Interpreter” El patrón no explica como crear el árbol sintáctico. Las gramáticas complejas son difíciles de mantener, esto a causa de que la jerarquía de clases se volvería virtualmente inmanejable. La eficiencia del interprete es menor a la de otros métodos; si se necesita velocidad de procesamiento es mejor utilizar otros mecanismos que solución estos problemas.

Referencias http://www.dofactory.com/Patterns/PatternInterpreter.asp x http://kybele.escet.urjc.es/documentos/SI/Patrones/12_Int erpreter.pdf http://en.wikipedia.org/wiki/Interpreter_pattern