SISTEMAS DE LA INFORMACIÓN

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
FACHADA COMPOSITOR MEMENTO
Lenguaje de programación Java
FACHADA.
Polimorfismo Unidad 4.
Patrones de Diseño GEYFFER ALEXANDER ACOSTA CRISTHIAN DOUGLAS CASTRO
Encapsulamiento y Abstracción
Programación Orientada a Objetos en Java
HERENCIA.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Medio de tele-comunicación
0. Desarrollo de Programas: técnica del refinamiento.
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
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.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
Diseño de Sistemas. Patrones de Diseño. Geronimo Manso.
Patrones de Comportamiento: Patrón de Diseño Observer
FACTORY METHOD Edmundo Álvarez Jiménez Antonio Fernández Alonso
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.
Jerarquía de Clases: Herencia, Composición y Polimorfismo
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Programación Orientada a Aspectos (POA)

Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Patrones Creacionales
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Lenguajes de Programación Tema 3
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
Patrones de Diseño: Command
Juan Manuel Perdigón Mario Felipe Monsalve
Enterprise Java Beans. EJBs Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas.
Son la base para la búsqueda de soluciones o problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
MEMENTO Patrón de Comportamiento Ana María Mateo Jorge P. Andrés
INGENIERIA DE SOFTWARE GUILLERMO OCHOA GAVIRIA Octubre 2006 Factory Method.
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.
PATRÓN ADAPTER (Adaptador) Elena Moreno Ramírez Laura Sánchez Romero Aroa Solana Ruiz.
PATRONES DE DISEÑO. A lo largo de los años diseñadores con experiencia en programación orientada a objetos han desarrollado soluciones que sirven para.
Patrón Iterator Santiago García Sánchez Rebeca Marcos Salcedo Mª Cristina Zapatero Gironda.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
CRM Customer Relationship Management Gerente de Relaciones con los Clientes.
Presentado por: PABLO ANDRES DIAZ SAIN HASSAM CAICEDO
Detalles Generales sobre Java
Patrones de diseño equipo n.1
Patrones de diseño Grupo 1 Haeberli, Julián Lara, Guisell
HERENCIA.
Enseñar con Aprendizaje Basado en Problemas
Análisis y Diseño de Aplicaciones 3º Educación Media Tecnológica
DISEÑO DE COMPONENTES Y DESARROLLO BASADO EN COMPONENTES
Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
RELACIONES ENTRE CLASES M.C. YOLANDA MOYAO MARTINEZ.
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.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Patrones de diseño en ING. Del software. ¿Qué es un patrón?  Es una solución a un software el cual esta creado o no mediante un patrón de diseño, es.
Transcripción de la presentación:

SISTEMAS DE LA INFORMACIÓN Patrones de diseño Por: Javier Alcalde Ruíz y Mario Rodríguez García

Patrón BUILDER 1 - Introducción 2 - Características 3 - Propósito 4 – Diagrama 5 – Código de ejemplo 6 – Problemas/Soluciones

1 – Introducción A veces surge la necesidad de crear varios tipos de objetos desde otro objeto (fuente) Dicho objeto fuente será quien, mediante una serie de servicios, cree el resto de los objetos en función de las necesidades del sistema.

2 - Características Es un patrón “creacional” A menudo construye otro patrón, el “Composite” (estructural) Simplifica la construcción de objetos complejos definiendo una clase cuya responsabilidad es crear objetos de otras clases Builder ConcreteBuilder Director Product Son las clases que permiten el comportamiento del Builder

3 - Propósito Se pretende con este patrón abstraer el proceso de creación de un objeto complejo, centralizando dicho proceso en un único punto, de tal forma que el mismo proceso de construcción pueda crear representaciones diferentes.

4 - Diagrama Constructor Builder: Define una interfaz para la creación de partes de un objeto

4 - Diagrama Genera el objeto concreto ConcreteBuilder: Implementa la interfaz de Builder, mantiene referencia del producto creado y proporciona una interfaz que retorna el producto. Ensambla las piezas constituyentes

4 - Diagrama Quien dirige qué objeto se creará Director: Construye un objeto usando la interfaz proporcionada por Builder

4 - Diagrama Clase de los objetos que se quieren construir Product: Define las partes constituyentes del producto y representa un objeto complejo bajo construcción

5 – Código de ejemplo /** "Producto" */ /** "Abstract Builder" */ class Pizza { private String masa = ""; private String salsa = ""; private String relleno = ""; public void setMasa(String masa){ this.masa = masa; } public void setSalsa(String salsa){ this.salsa = salsa; public void setRelleno(String relleno){ this.relleno = relleno; /** "Abstract Builder" */ abstract class PizzaBuilder{ protected Pizza pizza; public Pizza getPizza(){ return pizza; } public void crearNuevaPizza(){ pizza = new Pizza(); public abstract void buildMasa(); public abstract void buildSalsa(); public abstract void buildRelleno();

5 – Código de ejemplo /** "ConcreteBuilder" */ class HawaiPizzaBuilder extends PizzaBuilder{ public void buildMasa(){ pizza.setMasa("suave"); } public void buildSalsa(){ pizza.setSalsa("dulce"); public void buildRelleno(){ pizza.setRelleno("chorizo + alcachofas"); /** "ConcreteBuilder" */ class PicantePizzaBuilder extends PizzaBuilder{ public void buildMasa(){ pizza.setMasa("cocida"); } public void buildSalsa(){ pizza.setSalsa("picante"); public void buildRelleno() { pizza.setrelleno("pimienta+salchichón");

5 – Código de ejemplo /** "Director" */ class Cocina { private PizzaBuilder pizzaBuilder; public void setPizzaBuilder(PizzaBuilder pb){ pizzaBuilder = pb; } public Pizza getPizza(){ return pizzaBuilder.getPizza(); public void construirPizza(){ pizzaBuilder.crearNuevaPizza(); pizzaBuilder.buildMasa(); pizzaBuilder.buildSalsa(); pizzaBuilder.buildRelleno(); /** Un cliente pidiendo una pizza. */ class BuilderExample{ public static void main(String[] args){ Cocina cocina = new Cocina(); PizzaBuilder hawai_pizzabuilder = new HawaiPizzaBuilder(); PizzaBuilder picante_pizzabuilder = new PicantePizzaBuilder(); cocina.setPizzaBuilder(hawai_pizzabuilder); cocina.construirPizza(); Pizza pizza = cocina.getPizza(); }

6 – Problemas/Soluciones A menudo la falta de experiencia puede llevarnos a utilizar un patrón en algún lugar donde habría sido mejor utilizar otro patrón. Ejemplos típicos pueden ser utilizar un patrón Builder en lugar de un patrón Abstract Factory, o utilizar un patrón Chain of Responsability en lugar de aplicar una cadena de Decorator, etc. El uso de patrones incorrectos puede provocar serias inconsistencias en nuestro modelo y la refactorización del mismo pueden ser bastante compleja, debido principalmente a que pueden haberse introducido diferentes dependencias en cadena.

6 – Problemas/Soluciones Para no realizar la elección equivocada siempre es conveniente analizar las soluciones que se han tomado previamente a problemas similares al que estamos abordando. Con esta medida evitamos caer en equivocaciones, siempre y cuando nos basemos en sistemas que han resultado exitosos. Otra medida muy importante es la de dejarnos aconsejar por un mentor adecuado. Si no disponemos del conocimiento suficiente, no es una mala idea exponerle el problema a un experto o a una consultoría especializada en patrones de diseño. Además de obtener una solución avalada por dichos expertos seguramente podamos aprender muchos conocimientos y buenas prácticas de estas personas.