Template Method Patrón de comportamiento. Propósito Definir el esqueleto de un algoritmo en una operación, dejando algunos pasos para las subclases. Permite.

Slides:



Advertisements
Presentaciones similares
Unidad 3 Lenguajes .Net y POO
Advertisements

Curso de java básico (scjp)
Curso de java básico (scjp)
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Observador (observer) Visita (Visitor) Singleton
FACHADA COMPOSITOR MEMENTO
Instituto Universitario de Gerencia y Tecnología N - Análisis de Sistemas DIAGRAMA DE CLASES INTEGRANTES: LEIVYS MAZA Informática Mención 205 Profesor:
Curso de Java Capitulo 7: Continuación Poo Profesor:
POLIMORFISMO UNIDAD 4.
Herencia en C#.
Lenguaje de programación Java
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
TEMA 8: DIAGRAMAS EN UML.
CURSO Programación Orientada a Objetos Parte 3 POLIMORFISMO
Siguiente Excepciones Introducción. AnteriorSiguiente Definición Una excepción es un evento que ocurre durante la ejecución de un programa que desestabiliza.
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
UNIVERSIDAD LATINA (UNILA)
Aplicación del paradigma orientado a objetos
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
DESCRIPCION DEL PROBLEMA
Diagramas de clases Modelan la vista estática del sistema
HERENCIA.
4.- Orientación a Objetos Justo N. Hidalgo Sanz DEPARTAMENTO DE INGENIERÍA INFORMÁTICA.
Introducción a Java II.
Lic. Rosemary Torrico Bascopé
Arboles (Trees) Arboles Arboles binarios Recorridos de árboles
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Conceptos Objeto Clase Atributo / Método Encapsulamiento Mensaje
Tema 10: Interfaces Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
I NSTITUTO TECNOLOGICO SUPERIOR DE LIBRES INGENIERIA EN SISTEMAS COMPUTACIONALES PROGRAMACION ORIENTADA A OBJETOS ESMERALDA LIMON ESCUTIA REDEFINICION.
Patrones de Comportamiento: Patrón de Diseño Observer
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.
Ejemplo Supongamos que queremos realizar un sistema que trabaje con figuras geométricas planas. El sistema debe poder mostrar información de una figura.
FACTORY METHOD Edmundo Álvarez Jiménez Antonio Fernández Alonso
Jerarquía de Clases: Herencia, Composición y Polimorfismo
Diagramas de Clase Angela Carrillo R..
ANDRES FELIPE BORRERO SALAZAR COD ALEXANDRA CARREÑO SALAS COD LUCIO ANIBAL CRIOLLO COD ALEJANDRO RUIZ IDROBO COD
Streams. / En casi todo programa se necesita traer o enviar información a una fuente externa. / Dicha información puede estar en un archivo en el disco.
Patrones de diseño DECORATOR Mario Rodríguez Martín
Realizado por: Manuel González Joaquín Windmuller José Lorenzo Rodríguez
Patrones de Diseño: Command
Herencia en POO Eliseo Melgarejo Desarrollo de sistemas Udec.
Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi.
PATRON PROTOTYPE Cristina Merino Héctor Carbajo Alicia Arroyo.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
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
PROGRAMACION ORIENTADA A OBJETOS
Algoritmos y Programación III
Programación orientada a objetos
Patrones de diseño equipo n.1
UNIVERSIDAD TECNICA DE BABAHOYO EXTENSION DE QUEVEDO  Espinales Lisseth G RUPO N º 2 Temas:  Herencia  Polimorfismo  Encapsulamiento  2 Ejemplos Estudiante.
Modelan la vista estática del sistema Elementos básicos: Clases Relaciones Objeto: Representación de una entidad discreta (real o abstracta) - Estado:
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
PROGRAMACIÓN IV INTRODUCCIÓN.
Ing. Johanna Macias Algoritmo, Estructura y Programación III.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
Herencias Conceptos básicos i
Programación Orientada a Objetos Unidad 5. Los objetos son entidades que combinan estado Contiene toda la información denominados atributos REPASO Cada.
Prof. Manuel B. Sánchez.  El origen del término polimorfismo es simple: proviene de las palabras griegas poly (muchos) y morphos (forma) multiforme.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
PROGRAMACION ORIENTADA A OBJETOS
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:

Template Method Patrón de comportamiento

Propósito Definir el esqueleto de un algoritmo en una operación, dejando algunos pasos para las subclases. Permite a las subclases redefinir ciertos pasos de un algoritmo sin cambiar la estructura del mismo.

Motivación Supongamos que tenemos una aplicación definida por dos clases, la clase “Application” y la clase “Document”. La clase “Application” se ocupa de abrir documentos almacenados en un formato externo (un fichero). Un objeto de la clase “Document”, representa la información en un documento, una vez que se ha leído del fichero.

Motivación La operación OpenDocument() permite abrir y leer un documento. Se trata de un template method. Define su estructura mediante operaciones abstractas, las cuales serán implementadas por las clases hijas para determinar el comportamiento específico de cada una de ellas. void Application::OpenDocument(const char* name){ if (!CanOpenDocument(name)) { return; } Document* doc=DoCreateDocument(); if (doc){ _docs -> AddDocument(doc); AboutToOpenDocument(doc); doc -> Open(); doc -> Read(); } }

Aplicabilidad 1. Se usa para implementar partes invariantes de un algoritmo, y dejar a las subclases implementar el comportamiento que puede variar. 2. Cuando tenemos un comportamiento común en diferentes clases, puede ser refactorizado para evitar la duplicación de código. Para ello se identifican las partes diferentes del código, se separan mediante nuevas operaciones y se reemplazan con un método que hace uso de ellas. 3. Para controlar la redefinición de operaciones en las subclases, es posible definir un método Template que llama a una operación “Hook” dentro de la operación que queremos evitar su redefinición, permitiendo únicamente la extensión de la operación “Hook”.

Aplicabilidad Una subclase puede heredar el comportamiento de una clase padre redefiniendo la operación y llamando a la operación del padre explícitamente: void ClaseDerivada::Operacion(){ ClasePadre::Operacion() // Comportamiento añadido. }

Aplicabilidad Podemos transformar dicha operación con un método Template, para dar el control a la clase padre sobre sus subclases. La idea consiste en llamar a una operación auxiliar desde la operación de la clase padre, las subclases deben redefinir esta operación (donde es una operación vacía en la clase padre) para añadir su propio comportamiento. void ClasePadre::Operacion(){ //Comportamiento de la clase padre OperacionAux(); } void ClasePadre::OperacionAux(){} void ClaseHija::OperacionAux(){ //Comportamiento añadido de la clase hija. }

Composición Clase abstracta (Aplicación)  Define las operaciones primitivas abstractas que suponen las partes variantes, obligando a las subclases a implementarlas.  Implementa métodos Template definiendo el esqueleto de un algoritmo. Los métodos pueden llamar tanto a las operaciones primitivas, como a cualquier otro tipo de operación. Clase concreta (Mi aplicación)  Implementa las operaciones primitivas para determinar el comportamiento específico de la clase concreta.

Estructura

Consejos de implementación En C++. Las operaciones primitivas pueden definirse como protegidas, permitiendo a las clases hijas su implementación. Tendrán que usarse únicamente dentro del método Template, el cual no debería ser redefinido, por lo que nunca se declarará como virtual. Las operaciones primitivas que obligatoriamente hay que definir, se declaran como virtuales puras. Minimizar las operaciones primitivas. Es importante que el número de operaciones primitivas sea pequeño, cuantas mas operaciones haya que definir, mas tedioso será el trabajo que conlleva crear nuevas clases. Convenios de nombres. Se debe poder diferenciar las operaciones que podrían ser redefinidas con las que tienen que ser definidas, por ejemplo añadiendo un prefijo a sus nombres.

Ejemplo El ejemplo muestra como una clase padre define la parte invariante del código y las clases hijas la parte relativa a su comportamiento específico. void View::Display(){ SetFocus(); DoDisplay(); ResetFocus(); } Void View::DoDisplay(){} void MyView::DoDisplay(){ //render the view’s contents }