Sunteți pe pagina 1din 13

Universidad Nacional de Trujillo

FACULTAD DE INGENIERIA
E.A.P DE INGENIERIA SISTEMAS

CURSO :

PATRON DE DISEÑO INTERPRETER Y PROXY

TEMA :

TECNOLOGIA A LA PROGRAMACION 2

ALUMNOS :

 HERNANDEZ GOMEZ , PIERO


 LLIQUE CHAVARRY , JHON
 SILVA IZQUIERDO , ANTHONY

DOCENTE :

ING. VIDAL MELGAREJO, ZORAIDA

CICLO :

GUADALUPE – PERÚ

2019
Contenido
PRESENTACION ....................................................................................................................... 3
PATRÓN DE DISEÑO INTERPRETER .................................................................................. 4
DIAGRAMA DE CLASES ......................................................................................................... 5
DIAGRAMA DE SECUENCIA.................................................................................................. 6
VENTAJAS Y DESVENTAJAS DEL INTERPRETER ......................................................... 7
PATRÓN ESTRUCTURAL PROXY ........................................................................................ 8
DIAGRAMA DE SECUENCIA DEL PATRON PROXY ....................................................... 9
PROPOSITO:............................................................................................................................ 10
MOTIVACION ........................................................................................................................... 10
TIPOS DE PROXY ................................................................................................................... 10
CARACTERISTICAS ............................................................................................................... 11
VENTAJAS Y DESVENTAJAS DEL PROXY ..................................................................... 11
LINKOGRAFIA ......................................................................................................................... 13
PRESENTACION

Los alumnos de la facultad de ingeniería de sistemas del V


ciclo de la Universidad Nacional de Trujillo Filial Valle
Jequetepeque, tienen el agrado de presentarle el siguiente
trabajo titulado “PATRÓN DE DISEÑO INTERPRETER,
PATRÓN ESTRUCTURAL PROXY” mostrando la
investigación realizada por el nuestro grupo.
Teniendo como objetivo proporcionarles un poco de
conocimiento sobre el tema y a la vez hacerles conocer que
los patrones de diseño son importantes en el área de
programación por sus beneficios.
Finalmente, deseamos que esta información sea de su
agrado y pueda ayudar en la programación utilizada
actualmente en el curso y en el futuro.
PATRÓN DE DISEÑO INTERPRETER

INTRODUCCION
El patrón de diseño interpreter es utilizado para evaluar un
lenguaje definido como Expresiones, este patrón nos
permite interpretar un lenguaje como Java, C#, SQL o
incluso un lenguaje inventado por nosotros el cual tiene un
significado; y darnos una respuesta tras evaluar dicho
lenguaje.
Interpreter es uno de los patrones de diseño más complejos
debido a que para su funcionalidad debe combinar técnicas
de programación orientada a objetos avanzada y su
interpretación puede ser algo confusa, las principales cosas
con las que nos enfrentaremos son la Herencia,
Polimorfismo y la Recursividad.

Motivación

A veces es conveniente representar un problema como


palabras de algún lenguaje sencillo, como por ejemplo,
evaluar expresiones booleanas. El patrón interpreter
describe como definir una gramática, representar palabras
del lenguaje y cómo interpretarlas, se utiliza una clase para
representar cada regla de la gramática.
DIAGRAMA DE CLASES
Estructura
Este patrón utiliza una Clase para representar cada Regla de la
Gramática, siendo los símbolos del lado izquierdo de cada regla una
Instancia de la Clase. Además Cada Expresión Regular definida por
esta gramática puede ser representada mediante un Árbol Abstracto
de Sintaxis que se elabora a partir de cada Instancia de la Clase.

Los componentes del patrón Interpreter se explican a continuación:


Client: Inicia el contexto e invoca al interpretador.
Context: El contenedor de la información que se necesita en
distintos lugares del interprete.
AbstractExpression :Es la clase abstracta atravez de la cual el cliente
interactua con las expresiones.

TerminalExpression: Es la implementación de la clase abstracta


para nodos terminales en la gramatica y el árbol de sintaxis.

NonTerminalExpression: Es la otra implementación de la clase


abstracta para nodos no terminales en la gramatica y el árbol de
sintaxis.
Mantiene una referencia a la siguiente expresión e invoca el método
interprete en cada uno de sus hijos.
DIAGRAMA DE SECUENCIA

1. El cliente crea el contexto para la ejecución del


interpreter.
2. El cliente crea u obtiene la expresión a evaluar.
3. El cliente solicita la interpretación de la expresión
al interpreter y le envía el contexto.
4. La Expresión manda llamar a las Expresiones No
Terminales que contiene.
5. La Expresión No Terminal manda llamar a todas
las Expresiones Terminales.
6. La Expresión Raíz solicita la interpretación de
una Expresión Terminal.
7. La expresión se evalúa por completo y se tiene un
resultado de la interpretación de todas las expresiones
terminales y no terminales.
VENTAJAS Y DESVENTAJAS DEL INTERPRETER

Ventajas:
 Fácil modificación y ampliación de los elementos
gramaticales (al ser representados mediante una
jerarquía de clases).
 Su implementación es sencilla (en comparación con
otros métodos para implementar esta funcionalidad).
 La implementación de los métodos para cada
elemento del lenguaje es dinámica (puede cambiarse
en tiempo de ejecución).

Desventajas:
 No es muy eficiente.
 No cubre gramáticas complejas.
PATRÓN ESTRUCTURAL PROXY
Este es un patrón de diseño que centra su atención en la
mediación entre un objeto y otro. Se dice mediación porque
este patrón nos permite realizar ciertas acciones antes y
después de realizar la acción deseada por el usuario. El
Proxy se caracteriza por que el cliente ignora totalmente
que una mediación se está llevando acabo debido a que el
cliente recibe un objeto idéntico en estructura al esperado,
y no es consciente de la implementación tras la interface
ejecutada, de esta manera el cliente interactúa con el Proxy
sin saberlo.

Estructura del patrón Proxy.

Los componentes que conforman el patrón son los siguientes:

 IObject: Representa la interface común entre el Objet y el


Proxy.
 Object: Representa el objeto al que el cliente quiere ejecutar.
 Proxy: Clase que implementa IObject y delega la
responsabilidad al Object, sin embargo, puede realizar una
acción antes y después de llamar al Object.
DIAGRAMA DE SECUENCIA DEL PATRON
PROXY

1. El cliente solicita al Factory un Objeto.


2. El Factory crea un Proxy que encapsule al Object.
3. El cliente ejecuta el Proxy creado por el Factory.
4. El Proxy realiza una o varias acciones previas a la
ejecución del Object.
5. El Proxy delega la ejecución al Object.
6. El Proxy realiza una o varias acciones después de la
ejecución del Object.
7. El Proxy regresa un resultado.
PROPOSITO:
Proporcionar un representante o sustituto de otro objeto
para controlar el acceso a éste

MOTIVACION
Retrasar el coste de crear e inicializar un objeto hasta que
es realmente necesario. Por ejemplo, no abrir las imágenes
de un documento hasta que no son visibles

TIPOS DE PROXY
Dependiendo de las responsabilidades y del
comportamiento del proxy, tendremos varios tipos que
realizarán unos tipos de tarea u otras. Los proxies más
comunes son los siguientes:

 Proxy remoto: un proxy remoto se comporta como un


representante local de un objeto remoto. Se encarga
principalmente de abstraer la comunicación entre
nuestro cliente y el objeto remoto. Es el embajador de
los proxies.
 Proxy virtual: se encarga de instanciar objetos cuyo
coste computacional es elevado. Es capaz de sustituir
al objeto real durante el tiempo que el verdadero
objeto está siendo construido y proporcionar
funcionalidades como el lazy loading (realizar
operaciones computacionalmente costosas
únicamente cuando el acceso a el elemento es
requerido).
 Proxy de protección: establece controles de acceso
a un objeto dependiendo de permisos o reglas de
autorización.
CARACTERISTICAS

 Proporciona soluciones concretas en la creación de objetos


pesados.
 Proporciona soluciones técnicas para la utilización de las
cargas de objetos de gran tamaño.
 Se utilizan en situaciones frecuentes.
 Favorece la reutilización de código.

VENTAJAS Y DESVENTAJAS DEL PROXY

Ventajas:

 Mantiene una referencia que permite al proxy acceder al


objeto real.
 Proporciona una interfaz igual que la del sujeto real.
 Controla el acceso al sujeto real, y puede ser responsable
de crearlo y borrarlo.
 El sujeto mantiene una cuenta de referencias, solo cuando
se hace objeto.
Desventajas:

 Introduce un nivel de induración adicional, que tiene


muchos posibles usos.
 Un proxy remoto puede ocultar el hecho de que un objeto

reside en otro espacio de direcciones.

 Un proxy virtual puede optimizarsarse, como crear objetos


de bajo demanda.
LINKOGRAFIA

 https://reactiveprogramming.io/books/design-
patterns/es/catalog/interpreter
 http://migranitodejava.blogspot.com/2011/06/interprete
r.html
 http://patronesdediseno.blogspot.com/2009/05/patron-
interpreter.html
 https://programacion.net/articulo/patrones_de_diseno_
xvi_patrones_de_comportamiento_interpreter_1019
 https://programacion.net/articulo/patrones_de_diseno_
xiii_patrones_estructurales_proxy_1016
 https://informaticapc.com/patrones-de-
diseno/proxy.php
 https://reactiveprogramming.io/books/design-
patterns/es/catalog/proxy