Patrones de Diseño. Creado por: Javier Garzás Actualizado por: Santiago Moral
|
|
- Alfredo Aguilar Olivares
- hace 6 años
- Vistas:
Transcripción
1 Patrones de Diseño Creado por: Javier Garzás Actualizado por: Santiago Moral
2 Patrones, primer ejemplo
3 Primer ejemplo Caso práctico: el (típico) videoclub Se pretende diseñar el software referente a un videoclub. Este software debe contemplar las películas, los clientes y los alquileres que estos últimos realizan. Existen dos tipos de películas, los estrenos y las regulares, y el coste del alquiler varía en función de dichos tipos.
4 Primer ejemplo Diagrama de clases: Cliente 1 * Alquiler -diasalquilada * 1 - titulo Película +getcoste(diasalquilada)
5 Comienza la implementación Realicemos el método getcoste() de la clase Película: Sabemos que dependiendo de la categoría de la película (Estreno o Regular) se aplicarán tarifas distintas. Cómo podemos implementar esto?
6 Aparece la lógica condicional public class Pelicula { static final int REGULAR=0; static final int EXTRENO=1; private int categoria; double getcoste(int diasalquilada) { double result = 0; switch (getcategoria()) { case REGULAR: result += diasalquilada*2; break; case ESTRENO: result += diasalquilada*3; break; } return result; } int [getdiastopealquiler getcostepenalizacióndia () getdiasinhabilitacion ]{ switch (getcategoria()) { case REGULAR: case ESTRENO: }
7 La lógica condicional se propaga public class Alquiler { private int diasalquilada; static final int 50PORCIENTO; static final int 75PORCIENTO; int getdiasalquiladapromocion (int promocion) switch (promocion) { case 50PORCIENTO: switch (Pelicula.getCategoria()) case REGULAR: case ESTRENO: case 75PORCIENTO: } }
8 La lógica condicional Efectivamente, lo anterior funcionaría, pero sería mantenible? : A los dos meses de estar operativa la aplicación los requisitos, como no, cambian, ahora aparece la categoría clásicos, mañana de los 80 y al otro en cartelera En nuestra micro aplicación tenemos que tocar 5 métodos y dos clases Si nuestra aplicación tuviese 80 clases, 12 constantes de estado y 20 switch repartidos por distintas clases
9 Bad Smells en la propuesta actual Sentencias Switch Existe una gran lógica condicional que depende del estado. Frecuentemente, varias operaciones repetirán la misma estructura condicional, al añadir más tipos tendremos que buscar todos los switch. Duplicación de código La lógica condicional casi siempre produce duplicación de código Este es el peor bad smell, el anticristo de la mantenibilidad. Solución?!
10 La esencia del problema Problema: La clase película guarda dos roles Solución: - titulo Película +getcoste(diasalquilada) PelículaRegular PelículaEstreno
11 Todo resuelto? Más tarde observamos que una película debe cambiar su categoría en run-time: Tendremos, por ejemplo: Objeto_PeliculaEstreno Objeto_PeliculaRegular Solución: Podemos crear un nuevo objeto de la clase PeliculaEstreno, sacar el estado del objeto de PeliculaRegular, cargar todo en el objeto de Película estreno, cambiar los apuntadores, matar el objeto de PeliculaRegular, tener cuidado de que ningún otro objeto le apuntase, etc. De todas formas, el objeto no cambiaría de clase, tendríamos otro objeto de otra clase OID único.
12 La esencia del problema Una película debe cambiar de categoría pero un objeto no puede cambiar de clase Tª: La relación de herencia es invariable en el tiempo Un objeto nunca puede cambiar de clase! Cómo podemos solucionar este nuevo problema?
13 La solución final Solución Final: Pelicula Precio - titulo +getcoste(diasalquilada) +getcoste(diasalquilada) PrecioRegular PrecioEstreno
14 Ventajas Nuevos estados y sus transiciones se añaden fácilmente Transiciones de estado explícitas Estados localizados y con posibilidad de ser compartidos No hay switch No hay código repetido Etc.
15 Cuál era el primer problema? Realmente, los requisitos presentaban esencialmente este problema: Los objetos de película cambian su comportamiento dependiendo de su estado y dicho comportamiento debe cambiar en run-time. Las operaciones que cambian no deben programarse con múltiples sentencias condicionales porque hacen difícil el mantenimiento.
16 Visión Cuántas veces ha aparecido este problema? A cuantos diseñadores le ha ocurrido? No podríamos haber saltado del primer diagrama de clases a la solución final? Cuántas veces aparece código erróneo por qué el diseñador no sabe o no tiene tiempo de pensar la solución correcta? Cómo aumentaría la calidad? Se reduciría el tiempo?
17 Patrón State Objetivo Permite a un objeto alterar su comportamiento cuando su estado interno cambia. Motivación Cuando un objeto cambia de estado puede responder de maneras diferentes a los mismos mensajes. La forma tradicional es poner sentencias condicionales. Aplicabilidad Un objeto cambia su comportamiento dependiendo de su estado y dicho comportamiento debe cambiar en run-time. Las operaciones que cambian se programan con múltiples sentencias condicionales que hacen difícil el mantenimiento.
18 State Estructura
19 La visión formal
20 El comienzo del movimiento Christopher Alexander escribe varios libros acerca del planeamiento urbano y la construcción de edificios. El origen formal del término patrón se atribuye a él y a sus dos principales trabajos: A Pattern Language (Alexander, 1977) The timeless Way of Building (Alexander, 1979)
21 Patrones OO: Origen Ward Cunningham y Kent Beck aplican las ideas de Christopher para desarrollar un pequeño lenguaje de patrones, para aprender Smalltalk: Using Pattern Languages for Object- Oriented Programs En 1990 se inicia el trabajo del Gang of Four (GoF) P. Coad, Object-Oriented Patterns, Comm. ACM, Vol. 35, No 9, Sep. 1992, pp
22 Patrones OO: Madurez y Difusión E. Gamma, R. Helm, R. Johnson and J. Vlissides, Design patterns: Elements of Reusable Object Oriented Software, Addison-Wesley, F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad and M. Stal, A System of Patterns: Pattern-Oriented Software Architecture, Addison- Wesley,1996.
23 Definición de patrón Una arquitectura reusable que la experiencia ha mostrado que resuelve un problema común en un contexto específico Dictionary of Object Technology, 1995
24 Definición de patrón Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, describiendo el núcleo de la solución a ese problema, de tal manera que esa solución pueda ser usada más de un millón de veces sin hacerlo dos veces de la misma forma (Alexander, 1977).
25 Definición de patrón Un patrón contempla, además de la solución a un problema en un contexto: Recurrencia Enseñanza Nombre Consecuencias
26 Que no son los patrones Invenciones, teoría o ideas no probadas - Teorías? No, no, son pura práctica Soluciones que sólo han funcionado una vez Cualquier cosa vieja escrita en formato de patrones Principios abstractos o heurísticos Aplicaciones universales para cualquier contexto Una panacea (solución para cualquier mal)
27 Por qué usar patrones? Una cosa que los diseñadores expertos no hacen es resolver cada problema desde el principio [...]. Cuando encuentran una buena solución la usan una y otra vez. Esta experiencia es lo que les hace expertos (Gamma,1995)
28 Por qué usar patrones? Diseño de sistemas escalables y reutilizables es complejo El mercado demanda rapidez y calidad Diseñar bien a la primera vez es imposible Usar soluciones probadas Aprovecharse de la experiencia, catalogarla y documentarla. Reutilizar conocimiento Componer un vocabulario para Ingenieros
29 Beneficios Potenciales Mejora de la comunicación, el más potente. Cómo podrían varios arquitectos discutir el diseño de un edificio si sólo conocen la palabra ladrillo? La semántica nos pierde. Productividad y calidad, inmediatas cuando los equipos puedan sostener discusiones de diseño desde un alto nivel.
30 Clasificación de los patrones Diferentes rangos de escala o niveles de abstracción: Patrones de Análisis Patrones Arquitectónicos Patrones de Diseño Idioms Patrones de Seguridad Antipatterns (Ej. Copy and Paste Programming) De dominios específicos
31 Patrones de Diseño
32 Patrones de Diseño El objetivo que se pretende es conocer el principal catálogo sobre patrones de diseño: Design Patterns. Elements of Reusable Object-Oriented Software, by Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides Ha sido reeditado 32 veces.
33 Patrones de Diseño _Design_Patterns_Java_Compa.html
34 Patrones de Diseño
35 Patrones de Diseño, los más destacados Refinan un subsistema o componente de un sistema software. Describen una estructura a la cual muchas veces recurrimos para resolver problemas de diseño. No afectan a la arquitectura de un sistema No dependen del lenguaje de implementación. Permiten resolver problemas complejos y direccionan la cooperación efectiva entre componentes
36 Descripción de un patrón (1/4) Intención Qué hace el patrón? Cuál es su racionalidad e intención? Qué problema de diseño ataca? También conocido como Otros nombres del patrón Motivación Un escenario que ilustra el problema y como la estructura del patrón lo soluciona. El escenario ayuda a comprender la descripción mas abstracta que sigue
37 Descripción de un patrón (2/4) Aplicabilidad En que situaciones es aplicable el patrón Ejemplos de Diseños pobres solucionables con el patrón Cómo reconocer estas situaciones Estructura Una representación gráfica de las clases en el patrón Participantes Descripción de la responsabilidad de los objetos y clases participantes Colaboraciones Diagramas de colaboración entre los objetos y clases participantes
38 Descripción de un patrón (3/4) Consecuencias Cómo logra el patrón sus objetivos? Cuáles son los resultados de usarlo? Qué partes de la estructura puede variar de manera independiente? Implementación Qué técnicas utilizar para implementar el patrón? Hay características específicas del lenguaje?
39 Descripción de un patrón (4/4) Código de ejemplo Fragmentos de código que ilustran como implementar el patrón Usos conocidos Ejemplos de uso del patrón en sistemas reales Patrones relacionados Qué patrones están fuertemente relacionados? Cuáles son las diferencias importantes? Con qué otros patrones se debería usar éste?
40 Dimensiones de organización Por propósito Creacional Estructura Comportamiento Ámbito Clase Objeto
41 Organización del catalogo Creational Patterns Abstraen el proceso de instanciación haciendo al sistema independiente de cómo los objetos son creados, compuestos o representados. Alternativas de diseño por herencia o delegación. Encapsulan el mecanismo de creación. Independencia de los tipos de objetos producto que manejemos.
42 Patrones de Creación (Gamma, 95) Abstract Factory Provee una interfaz para crear una familia de objetos relacionados sin especificar sus clases concretas Factory Method Define una interfaz para crear un objeto, dejando a las subclases decidir el tipo específico. Permite delegar la responsabilidad de instanciación a subclases Singleton Asegura una sola instancia de un objeto y provee un punto de acceso global a él Builder Separa la construcción de un objeto complejo de su representación, para que el mismo proceso de construcción permita crear varias representaciones Prototype Especifica el tipo de objetos a crear usando una instancia de creación (prototipo), y crea nuevas instancias copiando el prototipo
43 EJERCICIO Qué tipo de patrón utilizarías para creación de la clase Videoclub? Pelicula Precio - titulo +getcoste(diasalquilada) +getcoste(diasalquilada) PrecioRegular PrecioEstreno
44 Patrón Singleton (1/4)
45 Patrón Singleton (2/4) Creamos una clase para lanzar una excepción class SingletonException extends RuntimeException { //new exception type for singleton classes public SingletonException() { super(); } } public SingletonException(String s) { super(s); }
46 Patrón Singleton (3/4) Lanzamos la excepción class PrintSpooler { //this is a prototype for a printer-spooler class //such that only one instance can ever exist static boolean instance_flag=false; //true if 1 instance public PrintSpooler() throws SingletonException { if (instance_flag) throw new SingletonException("Only one spooler allowed"); else { Instance_flag = true; //set flag for 1 instance System.out.println("spooler opened"); } } public void finalize() { instance_flag = false; //clear if destroyed } }
47 Patrón Singleton (4/4) Creando una instancia de la clase public class singlespooler { static public void main(string argv[]) { PrintSpooler pr1, pr2; //open one spooler--this should always work System.out.println("Opening one spooler"); try { pr1 = new PrintSpooler(); } catch (SingletonException e) { System.out.println(e.getMessage()); } //try to open another spooler --should fail System.out.println("Opening two spoolers"); try { pr2 = new PrintSpooler(); } catch (SingletonException e) { System.out.println(e.getMessage()); } } }
48 Organización del catalogo Structural Pattern Determinan como combinar objetos y clases para definir estructuras complejas. Comunicar dos clases incompatibles, Añadir funcionalidad a objetos...
49 Patrones Estructurales (Gamma, 95) Adapter Convierte la interfaz de una clase en una interfaz que el cliente espera. Permite trabajar juntas a dos clases con interfaces incompatibles Bridge Desacopla una abstracción de su implementación y les permite variar independientemente Composite Compone objetos en jerarquías para representar relaciones parte-todo. Composite permite a los clientes tratar de la misma manera tanto a objetos individuales como a compuestos. Decorator Agrega dinámicamente nuevas responsabilidades a un objeto. Provee una alternativa muy flexible para agregar funcionalidad a una clase Facade Provee una interface única para un conjunto de interfaces en un sistema. Define una interface de más alto nivel que permite usar el sistema más fácil
50 Patrones Estructurales (Gamma, 95) Flyweight Proxy Soporta la representación de un gran número de objetos pequeños de una manera eficiente. Provee un representante de acceso a otro objeto
51 Ejemplo de Aplicación Problema? Dibujo Circulo Cuadrado
52 Solución: Composite
53 Solución: Composite Client ElementoDibujo Circulo Linea Grupo
54 Organización del catalogo Behavioral Patterns Se ocupan de los algoritmos y reparto de responsabilidades. Describen los patrones de comunicación entre objetos y clases. Podremos definir abstracciones de algoritmos (Template Method) Cooperaciones entre objetos para realizar tareas complejas, reduciendo las dependencias entre objetos (Iterator, Observer, etc.) Asociar comportamiento a objetos e invocar su ejecución (Command, Strategy, etc.)
55 Comportamiento (Gamma, 95) Chain of Responsibility Evita el acoplamiento entre el que envía y el que recibe una petición. Se encadenan los objetos que reciben las peticiones, el mensaje por la cadena hasta que alguno lo responda Command Encapsula una operación en un objeto, permitiendo parametrizar operaciones, encolarlas, dejar log de ellas o deshacerlas Interpreter Dado un lenguaje, define una representación de su gramática que permita interpretar las sentencias del lenguaje Iterator Provee una forma de tener acceso secuencial a los elementos de un conjunto sin exponer la implementación de éste último
56 Comportamiento (Gamma, 95) Mediator Define un objeto que encapsula la forma en la cual interactúan otros. Promueve el acoplamiento débil Memento Sin violar el encapsulamiento, captura y externaliza el estado interno de un objeto, para que pueda ser recuperado más adelante Observer Define una dependencia de uno a muchos de tal manera que cuando uno de ellos cambia, todos los que dependen de él son notificados y actualizados automáticamente State Permite a un objeto cambiar su comportamiento cuando su estado interno cambia. El objeto parecerá haber cambiado de clase
57 Comportamiento (Gamma, 95) Strategy Define una familia de algoritmos intercambiables y encapsulados. Permite variar el algoritmo independientemente de quien lo usa Template Method Define un esqueleto de un algoritmo, delegando algunos pasos a las subclases. Permite redefinir ciertos pedazos del algoritmo sin cambiar su estructura Visitor Representa una operación que debe realizarse sobre los elementos de una estructura de objetos. Permite definir nuevas operaciones sin cambiar las clases de los objetos sobre las cuales operan
58 Observer (1/5) Objetivo Motivación Define una dependencia de uno a muchos entre objetos, de manera que cuando un objeto cambia todos los que tienen dependencia de él son informados. En casi todas las aplicaciones hay objetos que cuándo cambian su valor deben de informar a otros objetos para que cambien su estado en ese momento. Aplicabilidad Cuando una abstracción tiene diferentes aspectos y se desea reutilizar algunos de ellos de forma separada. Cuando un cambio en un objeto necesita realizar cambios en otros y no se sabe a priori en cuantos objetos se hace este cambio.cuando un objeto debe notificar a otros de algún cambio y no se desea que se acoplen entre ellos.
59 Observer (2/5) Estructura
60
61 Observer (3/5) Participantes Subject: Conoce a sus observers, cualquier número de Observers puede observar a un Subject. Define un interfaz para admitir subscriptores. Observer: Define un interfaz para los objetos que deben ser notificados de los cambios en un Subject. ConcreteSubject: Guarda los estados de interés de un ConcreteObserver. Envía notificación a sus observers cuando su estado cambia. ConcreteObserver: Mantiene una referencia a un ConcreteSubject. Implementa el interfaz Observer.
62 Observer (4/5) Colaboraciones
63 Observer (5/5) Consecuencias Abstrae el acoplamiento entre Observer y Subject al definir un interfaz estándar para todos ellos. Soporta Broadcasting. Debido a que la interfaz es estándar puede provocar llamadas de actualización sobre Observers que no la necesitan. Patrones relacionados Mediator puede encapsular semánticas complejas de actualización. Singleton, al usar un Mediator puede ser importante que sea un Singleton.
64 Una clase que no usa Observer Pudiéramos encontrar algo como: public class ControlDeTemperatura { GUI InterfazUsuario; public ControlDeTemperatura(InterfazUsuario Interfaz){ InterfazUsuario=Interfaz; } } public void receivetemperatura (int temperatura,int numsensor){ InterfazUsuario.nuevaTemperatura(temperatura, numsensor); }
65 Una clase que usa Observer. Cuando debiéramos encontrar algo como: public interface Observer {public void notify(float temperatura);} public GUI implement Observer {public notify (float temperatura){...} } public class Subject { Vector observers = new Vector(); public void addobserver(observer observer){ observers.add(observer); } public void removeobserver(observer observer){ observers.remove(observer); } public void notify(float valor){ for(int i=0; i<observers.size(); i++) ((Observer)observers.elementAt(i)).notify(valor)} } public class ControlDeTemperatura extend Subject { public void receivetemperatura (int temperatura,int numsensor)}
66 CHAIN OF RESPONSIBILITY
67 Organizacion del catálogo Propósito Creacional Estructural Comportamiento Alcance Clase Objeto Factory Method Adapter (Class) Interpreter Template Method Abstract Factory Builder Prototype Singleton Adapter (Object) Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Iterator Mediator memento Observer State Strategy Visitor
68 Ejemplo de Aplicación Cómo organizar el control de la aplicación y, además, agregar un mecanismo para la creación de macros?
69 Command
Patrones de Diseño. (...o bien, que tiene que ver la costura con el software...) Universidad de los Andes Demián Gutierrez Marzo
Patrones de Diseño (...o bien, que tiene que ver la costura con el software...) Universidad de los Andes Demián Gutierrez Marzo 2010 1 Diseño Arquitectónico Diseño Arquitectónico Arquitectura del Software
Más detallesCapitulo 2. Marco Teórico
Capitulo 2. Marco Teórico En el presente capítulo se describirán los conceptos utilizados para el desarrollo de ésta tesis. Entre los conceptos a mencionar se encuentran Patrones de Diseño, los Principios
Más detallesWeb Frameworks y patrones de diseño
Web Frameworks y patrones de diseño Ingeniería del software Universidad de Los Andes Nerio Moran, Alvaro Araujo 29 de Enero,2018 Ingenieria del software Universidad de Los Andes 29 de Enero,2018 1 / 26
Más detallesDesarrollo de Aplicaciones Empresariales
Diego Seco Material adaptado de: Eduardo Mosqueira y Óscar Pedreira {eduardo, opedreira}@udc.es LIDIA & LBD Universidade da Coruña 2014-1 Desarrollo de Aplicaciones Empresariales Patrones Gangof Four(GOF)
Más detallesPatrones de Diseño Orientados a Objetos
Patrones de Diseño Orientados a Objetos Idea detrás del Diseño de Patrones "...describa un problema que sucede una y otra vez en nuestro entorno, y luego describa el núcleo de la solución a ese problema,
Más detallesPatrones de Diseño Orientados a Objetos 1 Parte
Patrones de Diseño Orientados a Objetos 1 Parte Idea detrás del Diseño de Patrones "...describa un problema que sucede una y otra vez en nuestro entorno, y luego describa el núcleo de la solución a ese
Más detallesUso de Patrones de diseño
Uso de Patrones de diseño jsr@.upm.es - 1 - Relaciones La importancia de la relaciones en los diseños de orientación a objetos. Identificación de situaciones comunes. Necesidad de reciclar ideas no código
Más detallesAplicaciones Móviles. Unidad 2: Patrones de Diseño de Software
INACAP Universidad Tecnológica de Chile Sede Santiago Centro Aplicaciones Móviles Unidad 2: Patrones de Diseño de Software Ing. Manuel López Ramos Unidad 1 Qué es un Patrón de Diseño de Software? Qué es
Más detallesPatrones de Diseño. Programa de Estudio.
Patrones de Diseño Programa de Estudio Patrones de Diseño Analiza, modela y resuelve problemas de diseño de sistemas utilizando los patrones de diseño. Aprende cuándo y cómo utilizar cada uno de los patrones
Más detallesCC61J / CC Taller de UML Apuntes de Clase
CC61J / CC5404 - Taller de UML Apuntes de Clase Prof. Andrés Muñoz Ordenes 08/06/2011 Agenda Motivación Diseño del Problema Diagrama de Colaboración Conceptos Notación y Sintaxis Usos Ejemplo: Caja de
Más detallesIngeniería del software I Patrones de Diseño
Qué es un Patrón de Diseño? Ingeniería del software I Patrones de Diseño Los patrones de diseño capturan soluciones a problemas particulares de diseño. abstraen estructuras de diseño recurrentes Incorporan
Más detallesPatrones de diseño. Reuso del desarrollo a nivel arquitectural. M. Telleria, L. Barros, J.M. Drake
Patrones de diseño Reuso del desarrollo a nivel arquitectural 1 Patrones de diseño Soluciones de diseño que son válidas en distintos contextos y que han sido aplicadas con éxito en otras ocasiones. Se
Más detallesPATRONES DE DISEÑO. Mtro. Omar Zárate
PATRONES DE DISEÑO http://ozarate.net PATRONES DE DISEÑO El concepto promovido por Alexander fue retomado en el software y popularizado en el libro Design Patterns: Elements of Reusable Object Oriented
Más detallesUniversidad Tecnológica Emiliano Zapata Tecnologías De la Información Y comunicación Área Sistemas informáticos
Universidad Tecnológica Emiliano Zapata Tecnologías De la Información Y comunicación Área Sistemas informáticos Rivera Figueroa Gerardo René Alvares Flores Jairo Ángeles Pastor Luis Eduardo Gonzales Sarabia
Más detallesJulio Ariel Hurtado Alegría. 8 de abril de 2013
Julio Ariel Hurtado Alegría 8 de abril de 2013 Julio A. Hurtado A. Universidad del Cauca 1 / 40 Contenido Introducción Julio A. Hurtado A. Universidad del Cauca 2 / 40 La vida real está llena de esquemas
Más detallesPATRONES DE DISEÑO DE CREACIÓN. Abstract Factory Builder Factory Method Prototype
PATRONES DE DISEÑO DE CREACIÓN Abstract Factory Builder Factory Method Prototype Patrones de diseño de creación Abstraen el proceso de creación de instancias Encapsulan el conocimiento sobre las clases
Más detallesDiseño de Software Basado en Patrones. César Julio Bustacara M.
Diseño de Software Basado en Patrones César Julio Bustacara M. Patrones de Diseño Introducción Las Tecnologías Orientadas a Objetos son las más utilizadas en los últimos años para el desarrollo de aplicaciones
Más detallesCLASE 9: DISEÑO CON PATRONES. Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez
CLASE 9: DISEÑO CON PATRONES Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez Diseño de Objetos Identificar requerimientos, crear un modelo del dominio, agregar métodos a las clases
Más detallesUNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA) FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS 1. INFORMACIÓN GENERAL
Más detallesPatrones de diseño en PHP Los 23 modelos de diseño: descripciones y soluciones ilustradas en UML2 y PHP
Introducción a los patrones de diseño 1. Design patterns o patrones de diseño 15 2. Descripción de los patrones de diseño 17 3. Catálogo de patrones de diseño 18 4. Cómo escoger y utilizar un patrón de
Más detallesPatrones de Alto nivel: Patrones de Arquitectura Patrones de nivel medio: Patrones de Diseño Patrones de bajo nivel: Idioms
Patrones Patrones Es una solución reusable de problemas comunes. Los patrones solucionan problemas que existen en muchos niveles de abstracción. desde el análisis hasta el diseño y desde la arquitectura
Más detallesIntroducción a los Patrones de Diseño de Software
Introducción a los Patrones de Diseño de Software Unidad 1 Patrones de Diseño de Software Introducción Diseño Orientado a Objetos El objetivo del Diseño Orientado a Objetos es resolver un problema No se
Más detallesPatrones de diseño en Java Los 23 modelos de diseño: descripción y soluciones ilustradas en UML 2 y Java
Introducción a los patrones de diseño 1. Design patterns o patrones de diseño 15 2. Descripción de los patrones de diseño 17 3. Catálogo de patrones de diseño 18 4. Cómo escoger y utilizar un patrón de
Más detallesPATRONES DE DISEÑO FRAMEWORKS
PATRONES DE FRAMEWORKS Definiciones Finalidades Características Diseño de software basado en patrones Descripción Utilización de los patrones en el diseño Clasificación FRAMEWORKS Basado en la reutilización
Más detallesNombre y Apellido. Martin Villarreal. Daniel Aguil Mallea
INSTITUTO DE DESARROLLO ECONÓMICO E INNOVACIÓN Año: 2018 PROGRAMA DE LA ASIGNATURA: Programación y Diseño Orientado a Objetos (IF030) CÓDIGO: IF030 AÑO DE UBICACIÓN EN EL PLAN DE ESTUDIOS: 2 año FECHA
Más detallesIntroducción a los patrones de Software
Introducción a los patrones de Software Dpto. de Ingeniería de Sistemas y Computación Universidad de los Andes Material de base: Gloria Cortés y Rubby Casallas Referencias LARMAN, Craig. Applying UML and
Más detallesIntroducción a los patrones de diseño: Un enfoque práctico (Spanish Edition) Click here if your download doesn"t start automatically
Introducción a los patrones de diseño: Un enfoque práctico (Spanish Edition) Click here if your download doesn"t start automatically Introducción a los patrones de diseño: Un enfoque práctico (Spanish
Más detallesCLASE 10: MÁS PATRONES. Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez
CLASE 10: MÁS PATRONES Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez Polimorfismo Problema: Cómo manejar las alternativas basadas en el tipo? Cómo crear componentes conectables?
Más detallesPatrones. Maestría en Ingeniería de Software
Patrones Maestría en Ingeniería de Software Agenda - Model Driven Architecture (MDA) - Unified Model Language (UML) - Object Constraint Language (OCL) - Patrones - Conclusiones Contenido Patrones Introducción
Más detallesGrado en Ingeniería Informática Universidad de Alcalá Curso Académico 2014/15 Curso 4º Cuatrimestre 1º
PATRONES SOFTWARE Grado en Ingeniería Informática Universidad de Alcalá Curso Académico 2014/15 Curso 4º Cuatrimestre 1º GUÍA DOCENTE Nombre de la asignatura: Código: Titulación en la que se imparte: Departamento
Más detallesEspecíficamente los elementos de un patrón de diseño son [ 3 ] :
Patrones de Diseño Marco Teórico Introductorio Diego Andrés Asenjo González Alejandro Ríos Peña Contenido Qué son los patrones de Diseño?...1 Clasificación de los patrones de diseño...3 Patrones de Creación.....4
Más detallesCapítulo 4 Patrones y Patrones de Diseño (ii)
Capítulo 4 Patrones y Patrones de Diseño (ii) Orientado a Objetos Ingeniería Informática Ingeniería Técnica de Informática de Sistemas y Gestión Optativa (6 créditos) http://www.info-ab.uclm.es/asignaturas/42579
Más detallesIN77J Orientación al Objeto para el e-business. 6. Diseño
IN77J Orientación al Objeto para el e-business 6. Diseño Temario 6. Diseño Descomposición Realización de Casos de Uso Taller Patrones de Diseño 2 Descomposición Una de las principales técnicas para abordar
Más detallesPatrones de Diseño. Patrón de comportamiento Observer. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)
Patrones de Diseño Patrón de comportamiento Observer Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Propósito Define una dependencia de uno-a-muchos entre objetos de forma que, cuando
Más detallesPatrones de Diseño. Ing. Miguel Angel Cedeño Garcidueñas
Patrones de Diseño Ing. Miguel Angel Cedeño Garcidueñas miguelcedega@correo.fie.umich.mx Patrones de Diseño Diseñar software orientado a objetos es difícil, pero diseñar software orientado a objetos reutilizable
Más detallesCLASE 9: DISEÑO CON PATRONES. Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez
CLASE 9: DISEÑO CON PATRONES Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez Diseño de Objetos Identificar requerimientos, crear un modelo del dominio, agregar métodos a las clases
Más detallesCurso: Diseño Orientado a Objetos Patrones de Diseño
Curso: Diseño Orientado a Objetos Patrones de Diseño DISEÑO ORIENTADO A OBJETOS PATRONES DE DISEÑO... 1 OBJETIVO...1 AUDIENCIA...1 CONTENIDO...1 BIBLIOGRAFÍA...2 DOCENTE...3 MODALIDAD DEL DESARROLLO...3
Más detallesIngeniería del Software I. Patrones de Diseño. Carlos Blanco Universidad de Cantabria
Ingeniería del Software I Carlos Blanco Universidad de Cantabria 2 Índice Introducción Clasificación Patrones Creacionales Patrones Estructurales Patrones de Comportamiento Antipatrones 3 Introducción
Más detallesUML 2 Iniciación, ejemplos y ejercicios corregidos
Ediciones ENI UML 2 Iniciación, ejemplos y ejercicios corregidos (3ª edición) Colección Recursos Informáticos Contenido Contenido 1 Capítulo 1 Introducción 1. Motivaciones de la obra.....................................
Más detallesPatrones de diseño. Universidad de Costa Rica Sede Occidente Bachillerato en Informática Empresarial
Universidad de Costa Rica Sede Occidente Bachillerato en Informática Empresarial Curso: Ingeniería de Software Profesor: Óscar Alfaro Solis Patrones de diseño Realizado por: Jean Carlo Murillo Alpízar
Más detallesProgramación 4. Diseño Patrones de Diseño
Programación 4 Diseño Patrones de Diseño Contenido Introducción Patrones de Diseño Singleton Composite State Observer Programación 4 Diseño: Patrones de Diseño www.fing.edu.uy/inco/cursos/prog4 2012 2
Más detallesGrado en Ingeniería Informática Universidad de Alcalá Curso Académico 2016/2017 Curso 4º Cuatrimestre 1º
PATRONES SOFTWARE Grado en Ingeniería Informática Universidad de Alcalá Curso Académico 2016/2017 Curso 4º Cuatrimestre 1º GUÍA DOCENTE Nombre de la asignatura: Patrones Software Código: 780042 Titulación
Más detallesGrado en Ingeniería Informática Universidad de Alcalá Curso Académico 2017/2018 Curso 4º Cuatrimestre 1º
PATRONES SOFTWARE Grado en Ingeniería Informática Universidad de Alcalá Curso Académico 2017/2018 Curso 4º Cuatrimestre 1º GUÍA DOCENTE Nombre de la asignatura: Patrones Software Código: 780042 Titulación
Más detallesPatrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype
Temario Patrones de Diseño de Software Fundamentos de Ingeniería de SW Jocelyn Simmonds GOF: Patrones Creacionales Patrones Estructurales ILI-236 (JS) Patrones II 1 / 31 ILI-236 (JS) Patrones II 2 / 31
Más detallesPatrones de Diseño. M.C. Juan Carlos Olivares Rojas
Patrones de Diseño M.C. Juan Carlos Olivares Rojas Patrones de Diseño Son principios generales de soluciones que aplican ciertos estilos que ayudan a la creación de software. Es una descripción de un problema
Más detallesTIPOS DE PATRONES. PATRONES DE DISEÑO: Las soluciones probadas para el diseño de software. En estas nos vamos a centrar.
TIPOS DE PATRONES Hoy, podemos encontrar literalmente miles de patrones definidos. Resulta imposible para un programador conocerlos todos, ni mucho menos probarlos o valorarlos. Así que necesitamos una
Más detallesFederico Peinado
Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es
Más detallesA3F. Diseño MVC. Carlos Fontela
Diseño MVC Carlos Fontela cfontela@fi.uba.ar Temario Diseño y patrones Patrones macro MVC como caso particular Modularización Principios de diseño Modularización de clases Modularización de paquetes Modularización
Más detallesIngeniería del Software de Gestión II. Algunas notas sobre Patrones de Diseño Clásicos Curso 2004/2005
Ingeniería del Software de Gestión II Algunas notas sobre Patrones de Diseño Clásicos Curso 2004/2005 Algunas notas sobre Patrones de Diseño Clásicos El Camino Qué es un Patrón de Diseño (PD) Qué no es
Más detallesPatrón Façade Patrón Template Method Conclusiones
Tema 3.3.1 Patrones: Façade y Template Method Ingeniería del Software II J. Peña (Teoría) Índice Patrón Façade Patrón Template Method Conclusiones Índice Patrón Façade Patrón Template Method Conclusiones
Más detallesdiseño de software Ingeniería en Sistemas Computacionales Clave de la asignatura: (Créditos) SATCA
1. DATOS DE LA ASIGNATURA Nombre de la asignatura: Estilos y Patrones de arquitectura y de diseño de software Carrera: Ingeniería en Sistemas Computacionales Clave de la asignatura: ARC 1305 (Créditos)
Más detallesFederico Peinado
Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es
Más detallesPlanificaciones. 7510 - Técnicas de Diseño. Docente responsable: PANTALEO GUILLERMO GUSTAVO. 1 de 5
Planificaciones 7510 - Técnicas de Diseño Docente responsable: PANTALEO GUILLERMO GUSTAVO 1 de 5 OBJETIVOS En este curso se busca introducir a los alumnos en el concepto de diseño de software. Para lograrlo
Más detallesHERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.
HERENCIA (2ª parte) Lenguajes de Programación - Orientación a Objetos: Herencia 2ª parte 1 Object En Java todas las clases derivan de otra, aunque no se diga explícitamente. Object: Es el nombre de la
Más detallesDISEÑO DE APLICACIONES ORIENTADAS A OBJETOS
ASIGNATURA DE GRADO: DISEÑO DE APLICACIONES ORIENTADAS A OBJETOS Curso 2016/2017 (Código:71022011) 1.PRESENTACIÓN DE LA ASIGNATURA El objetivo de esta guía es orientar al alumno en el estudio de la asignatura.
Más detallesUnidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Más detallesMÁSTER UNIVERSITARIO EN INGENIERÍA WEB. Guía de Aprendizaje Información al estudiante
MÁSTER UNIVERSITARIO EN INGENIERÍA WEB Datos Descriptivos Guía de Aprendizaje Información al estudiante Escuela Técnica Superior de Ingeniería de Sistemas Centro responsable Informáticos Titulación: Máster
Más detallesPATRONES DE DISEÑO. FAVA - Formación en Ambientes Virtuales de Aprendizaje. SENA - Servicio Nacional de Aprendizaje
PATRONES DE DISEÑO 1. Generalidades 2. Patrones Gof 2.1. Patrones Creacionales 2.1.1.Fábrica Abstracta 2.1.2.Constructor 2.1.3.Método de Factoría 2.1.4.Prototipo 2.1.5.Singleton 2.2. Patrones Estructurales
Más detallesHíper introducción a Objetos
Híper introducción a Objetos Herman Schinca Clase 27 y última! 1 de Julio de 2011 Paradigma de Objetos Al igual que Funcional, se trata de una filosofía, de un paradigma, no de un lenguaje particular.
Más detallesClases abstractas e interfaces en Java
Clases abstractas e interfaces en Java Clases abstractas public abstract class Figura { private String _nombre; public Figura (string nombre) { _nombre = nombre; final public boolean mayor_que (Figura
Más detallesPROGRAMA DE CURSO. Metodologías de Diseño y Programación. Nombre en Inglés. Design and Programming Methodologies.
Código CC3002 Nombre Nombre en Inglés PROGRAMA DE CURSO Metodologías de Diseño y Programación Design and Programming Methodologies SCT es Docentes Horas de Cátedra Horas Docencia Auxiliar Horas de Trabajo
Más detallesIntroducción a la Programación de Videojuegos y Gráficos
Introducción a la Programación de Videojuegos y Gráficos GRADO EN INGENIERÍA INFORMÁTICA CURSO 2012/2013 T2: ARQUITECTURA Y LÓGICA DE VIDEOJUEGO 2.1. Ingeniería del software aplicada a videojuegos (paradigmas
Más detallesPrograma Regular. Metodologías de programación I. Ingeniería en Informática. Ciclo lectivo: Docente/s: Coordinador: Dr. Lic.
Programa Regular Nota: para un adecuado ordenamiento y estandarización de los programas se sugiere respetarla denominación de cada ítem indicado a continuación, a fin de unificar criterios en la presentación
Más detallesDISEÑO DE APLICACIONES ORIENTADAS A OBJETOS
ASIGNATURA DE GRADO: DISEÑO DE APLICACIONES ORIENTADAS A OBJETOS Curso 2011/2012 (Código:71022011) 1.PRESENTACIÓN DE LA ASIGNATURA El objetivo de esta guía es orientar al alumno en el estudio de la asignatura.
Más detallesPatrones de Diseño. Patrón de comportamiento Command. Técnicas de Programación - Curso 2007/08
Patrones de Diseño Patrón de comportamiento Command Técnicas de Programación - Curso 2007/08 Propósito Encapsular peticiones en forma de objetos. Permite parametrizar a los clientes con distintas peticiones,
Más detallesReutilización del Software. Patrones de Diseño
Reutilización del Software Patrones de Diseño 1 Introducción El diseño OO es difícil y el diseño de software orientado a objetos reutilizable lo es aún más. Los diseñadores expertos no resuelven los problemas
Más detallesModelado Estructural F E B R E R O,
Modelado Estructural F E B R E R O, 2 0 1 4 Modelado Estructural Sirve para describir los diferentes tipos y relaciones estáticas existentes entre los diferentes objetos de un sistema. A la hora de desarrollar
Más detallesPatrones GoF. of four) 23 patrones presentados por la pandilla de los cuatro en el libro Design Patterns.. Gamma, Helm, Johnson, Vlissides
Patrones GoF ANALISIS Y DISEÑO O O.O. Patrones GoF GoF (gang of four) 23 patrones presentados por la pandilla de los cuatro en el libro Design Patterns.. Gamma, Helm, Johnson, Vlissides. 1995. 1 Patrones
Más detallesTema 6. Patrones de diseño.
Ingeniería del Software II 2011 Tema 6. Patrones de diseño. Introducción. Durante el diseño Orientado a Objetos es frecuente encontrarse repetidamente con ciertos tipos de problemas, para analizar, compartir
Más detallesConstrucciones del Lenguaje Java
Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.
Más detallesPatrones en el e-learning
Patrones en el e-learning DOCUMENTO BASE El concepto de patrón en el e-learning permite resumir y comunicar la experiencia acumulada en la enseñanza-aprendizaje por medios telemáticos. Un patrón puede
Más detallesPROGRAMACION CONCURRENTE Y DISTRIBUIDA. IV.3 Monitorización de excepciones en Threads
PROGRAMACION CONCURRENTE Y DISTRIBUIDA IV.3 Monitorización de excepciones en Threads J.M. Drake 1 Gestión excepciones en thread Java Las excepciones se pueden lanzar en cualquier punto de un programa Java.
Más detallesConcurso: Cuánto sabes de JAVA?
Concurso: Cuánto sabes de JAVA? Motivación: o Para cambiar el ritmo de las jornadas y que no todas las actividades sean charlas o Recordar conocimientos y aprender algo nuevo. o Las preguntas pueden ayudarnos
Más detallesPROGRAMA DE CURSO. Horas de Trabajo Personal Horas de Cátedra
PROGRAMA DE CURSO Código Nombre CC3002 Metodologías de Diseño y Programación Nombre en Inglés Design and programming methodologies SCT Unidades Docentes Horas de Cátedra Horas Docencia Auxiliar Horas de
Más detallesA continuación se describe con mayor detalle cada una de tales unidades:
1. OBJETIVOS: - Entender los conceptos teórico-prácticos que se emplean en la fase de diseño de un proyecto de software. - Entender las metodologías de diseño para las diferentes estrategias de desarrollo
Más detallesQué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.
APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje
Más detallesUNIDAD 4 IMPLEMENTACION DE PROPIEDADES DE LOS OBJETOS JAVA
UNIDAD 4 IMPLEMENTACION DE PROPIEDADES DE LOS OBJETOS JAVA Analista Programador Universitario Universidad Nacional de Jujuy JTP Jorge R. Mendoza Implementación de propiedades de los objetos Java Contenido
Más detallesEl patrón Composite (Compuesto) Propósito Componer los objetos a una estructura de jerarquía de relación partetodo.
Definición más precisa de los patrones Un patrón del diseño nomina, abstrae y identifica los aspectos claves de un diseño común para crear un diseño orientado a objetos reutilizable. Son descripciones
Más detallesLógica de Negocios. Esteban Calabria 2007
Lógica de Negocios Esteban Calabria 2007 Lógica de Negocios Para organizar el Layer de Negocios Transaction Script Table Module Domain Module Service Layer Scripting Conceptos Previos Glanularidad Interfaces
Más detallesPatrones de Diseño. Patrón de comportamiento Strategy. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)
Patrones de Diseño Patrón de comportamiento Strategy Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Propósito Definir una familia de algoritmos, encapsularlos y hacerlos intercambiables
Más detallesPatrones de Diseño. Diseño y Arquitectura de Software Grado en Ingeniería de Software. Universidad Rey Juan Carlos
Patrones de Diseño Diseño y Arquitectura de Software Grado en Ingeniería de Software Universidad Rey Juan Carlos Carlos E. Cuesta carlos.cuesta@urjc.es 1 Índice Introducción Clasificación Patrones Creacionales
Más detallesPatrones Arquitectónicos de Software
Jaime Eduardo Arias Almeida Néstor Raúl Cárdenas Pinzón Pontificia Universidad Javeriana - Cali Marzo 18 de 2010 Tabla de Contenido 1 Definición Consideraciones 2 Layers Pipes and Filters Blackboard 3
Más detallesDISEÑAR APLIC I ACIO I N O ES 1
DISEÑAR APLICACIONES 1 El análisis y diseño de sistemas de software es un área amplia y compleja. En este capítulo se expone una pequeña introducción a la metodología de análisis y diseño. El estudio detallado
Más detallesIngeniería de Software II- Introducción a Patrones de Diseño 15 de abril de 2013 Julio Ariel Hurtado Alegría
Ingeniería de Software II- Introducción a Patrones de Diseño 15 de abril de 2013 Julio Ariel Hurtado Alegría 1. Introducción Los patrones de diseño facilitan la reutilización del conocimiento en un diseño.
Más detallesBROKER Publicador Suscriptor. Jonnathan Corredor Lorena Arrieta Alejandro Mosquera
BROKER Publicador Suscriptor Jonnathan Corredor Lorena Arrieta Alejandro Mosquera Contenido 1. Descripción General 2. Guía de Implementación 3. Patrones Relacionados 4. Usos Conocidos 5. Variaciones 6.
Más detallesORIENTACIÓN A OBJETOS II
ORIENTACIÓN A OBJETOS II Año 2017 Carrera/ Plan: Licenciatura en Informática Plan 2003-07/Plan 2012/Plan 2015 Licenciatura en Sistemas Plan 2003-07/Plan 2012/Plan 2015 Analista Programador Universitario
Más detallesIntroducción a Java LSUB. 30 de enero de 2013 GSYC
Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial
Más detallesClases Abstractas e Interfaces
Clases Abstractas e Interfaces Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Aprender a crear y utilizar clases y métodos abstractos
Más detallesIdiom SimpleFactory Factory Method Abstract Factory Conclusiones
Tema 3.3.1 Patrones: Factory Ingeniería del Software II J. Peña (Teoría) Índice Introducción Idiom SimpleFactory Factory Method Abstract Factory Conclusiones Introducción Factory no es un patrón, sino
Más detallesUNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA) FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS 1. INFORMACIÓN GENERAL
Más detallesTECNOLOGICO ECOMUNDO FACULTAD DE SISTEMAS PROGRAMA ANALITICO
TECNOLOGICO ECOMUNDO FACULTAD DE SISTEMAS PROGRAMA ANALITICO Materia: Análisis y Diseño OO Código: COM Créditos: Horas Presenciales: 36 Horas no Presenciales: 72 Pre- Requisito: Ninguno Código: Periodo
Más detallesCurso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM. Programación en Java Diciembre 2010 Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia
Más detallesIntroducción a los Patrones de Diseño
escuela técnica superior de ingeniería informática Introducción a los Patrones de Diseño Departamento de Lenguajes y Sistemas Informáticos Ingeniería del Software II El Camino Qué es un Patrón de Diseño
Más detalles