SlideShare una empresa de Scribd logo
1 de 51
PATRONES DE DISEÑO
2
Patrones
• En las distintas actividades de la vida diaria
se reconocen patrones:
– Trabajo
– Vida familiar
– Hobbies
Hardware
Hardware Software
Poder rehusar componentes y
lograr un mantenimiento fácil.
Lograr un software flexible
habitualmente
Problema Solución
Patrones de diseño
• “Son descripciones de clases y objetos
relacionados que están adaptados para
resolver un problema de diseño general en
un contexto determinado”.
Erich Gamma, Richard Helm, John Vlissides
y Ralph Johnson
Patrones de diseño
Patrones de diseño
.
Ingeniero Resuelve problemas
Aplicando estándares
Las buenas soluciones permanecen, las malas se rechazan.
Los ingenieros deben conocer y saber aplicar los estándares conocidos
• Se definen con un alto nivel de abstracción.
• Son independientes de los lenguajes de
programación y de los detalles de
implementación.
• Los patrones promueven y facilitan la
reutilización de arquitecturas y diseños de
software que han demostrado su validez en
muchas aplicaciones.
Patrones de diseño
9
Arquitectura
1. Define la forma y la estructura de la
aplicación de software.
2. Relacionada al propósito de la aplicación.
3. Arquitectura de módulos y sus
interconexiones
Patrones de diseño
Paquetes,
componentes,
clases
10
Evidencias de diseño erróneo
• Rigidez: problemas para insertar algún cambio.
• Fragilidad: el software falla en muchos lugares al
insertar un cambio.
• Inmovilidad: no se pueden rehusar partes del
proyecto.
• Viscosidad:
» De diseño: cuando se deben hacer cambios,
es más fácil hacer cosas mal, que bien.
» De entorno: entorno de desarrollo ineficiente
11
Cambios de requerimientos
• Los cambios en un diseño de software, si no
fueron cambios previstos en el diseño original,
degradan el mismo. Incluyen dependencias.
• Generalmente lo hacen ingenieros que no estaban
relacionados con la filosofía de diseño original.
• Erich Gamma, Richard Helm, John
Vlissides y Ralph Johnson
• Design Patterns.
• 1994
Patrones de diseño
• Describe una estructura dentro de la cual
catalogar y describir patrones
• Cataloga 23 patrones
• Destaca estrategias y aproximaciones
basadas en el diseño de patrones
Patrones de diseño
• No crearon los patrones descriptos en el
libro.
• Los descubrieron como existentes dentro
de la comunidad del software
Patrones de diseño
Porque estudiar patrones de diseño
• Reuso de soluciones de diseño.
• Establecer terminología común.
• Dan una perspectiva de alto nivel sobre el
análisis y diseño.
Patrones de diseño
• Patrón de diseño: proporciona un esquema
para refinar los subsistemas o componentes
de un sistema de software, o las relaciones
entre ellos. Describe estructuras repetitivas
de comunicación de componentes que
resuelven un problema de diseño en un
contexto particular
Que resuelve un patrón de
diseño?
•Programe para una interfaz, no para una
implementación.
Comience cualquier jerarquía que necesite para
solucionar su problema con una clase abstracta, sin
implementación de métodos. Que solo describa los
métodos que debe soportar.
Patrones de diseño
18
•Favorecer la composición frente a la herencia
de clases.
Construir objetos que contengan otros
objetos. No cargue con todo el peso de
heredar métodos que no necesita
Patrones de diseño
19
• Encuentre lo que varía y encapsúlelo.
Patrones de diseño
Lo que puede ser
cambiado en su diseño
encapsúlelo en una clase ,
para no tener necesidad
de rediseñar.
Patrones de diseño
Herencia de clases
Ventajas
•Se define estáticamente
•Fácil modificación de la
implementación
Desventajas
•No se cambian implementaciones en
tiempo de ejecución
•Rompe encapsulamiento
Composición de objetos
Patrones de diseño
Ventajas
•Se define dinámicamente
•No se rompe encapsulamiento
Patrones de diseño
Que debería ser variable en su diseño
Que puede ser cambiado en su diseño, sin necesidad de rediseñar.
Encapsule lo que puede variar.
•Distintos algoritmos de ordenación de arreglos
•Encapsule cada algoritmo en una clase
Manipular objetos en función de la interfaz
definida por la clase abstracta, de la cual
extiende, tiene dos ventajas:
Patrones de diseño
• Los clientes no tienen que conocer los tipos
específicos de los objetos que usan, basta
con que estos cumplan con la interfaz que
esperan los clientes.
Patrones de diseño
• Los clientes desconocen las clases que
implementan dichos objetos; sólo conocen la
clase abstracta que define la interfaz.
25
1. Aceptarlos
2. Reconocerlos
3. Internalizarlos
Patrones de diseño
Clasificación de patrones (GoF)
• Patrones de creación: Tratan de la inicialización y configuración
de clases y objetos.
• Patrones estructurales: Tratan de desacoplar interfaz e
implementación de clases y objetos.
• Patrones de comportamiento: Tratan de las interacciones
dinámicas entre sociedades de clases y objetos
Patrones de creación
• The Factory Method retorna una de las posibles subclases de
una clase abstracta dependiendo de los datos que se le provee.
• The Abstract Factory Method retorna una de las varias
familias de objetos.
• The Builder Pattern separa la construcción de un objeto
complejo de su representación. Varias representaciones se
pueden crear dependiendo de las necesidades del programa.
• The Prototype Pattern inicializa e instancia una clase y luego
copia o clona si necesita otras instancias, mas que crear nuevas
instancias.
• The Singleton Pattern es una clase de la cual no puede existir
mas de una instancia.
28
Patrones estructurales
• Adapter: cambia la interfaz de una clase a la de otra.
• Bridge: permite mantener constante la interfaz que se
presenta al cliente, cambiando la clase que se usa
• Composite: una colección de objetos
• Decorator: una clase que envuelve a una clase dándole
nuevas capacidades.
• Facade: reúne una jerarquía compleja de objetos y provee
una clase nueva permitiendo acceder a cualquiera de las
clases de la jerarquía.
• Flyweight: permite limitar la proliferación de pequeñas
clases similares.
29
Patrones de comportamiento
• Cadena de responsabilidad: permite que un conjunto de
clases intenten manejar un requerimiento.
• Interpreter: define una gramática de un lenguaje y usa esa
gramática para interpretar sentencias del lenguaje.
• Iterator: permite recorrer una estructura de datos sin conocer
detalles de cómo están implementados los datos
• Observer: algunos objetos reflejan un cambio a raíz del
cambio de otro, por lo tanto se le debe comunicar el cambio
de este último.
• Strategy: cantidad de algoritmos relacionados encerrados en
un contexto a través del cual se selecciona uno de los
algoritmos.
Otros tipos de patrones
• Patrones de programación concurrente
• Patrones de interfaz gráfica
• Patrones de organización de código
• Patrones de optimización de código
• Patrones de robustez de código
• Patrones de fases de prueba
Plantilla GoF
• Nombre Un buen nombre es vital porque será parte del vocabulario de
diseño
• Nombres Alternativos Otros nombres de uso común para el patrón.
• Propósito Qué problema pretende solucionar.
• Motivación Descripción del problema y su contexto
– Puede consistir en un ejemplo (un escenario) que ilustre la clase
de problemas que el patrón intenta resolver.
– En general se entienden mejor los problemas concretos que los
abstractos.
• Estructura Representación gráfica de las clases de los objetos que
participan en el patrón y de sus relaciones estructurales (estáticas)
– Actualmente, lo más común es usar UML.
• Aplicabilidad ¿En qué situaciones puede/debe aplicarse el patrón?
• Participantes Las clases y objetos que participan en el patrón y sus
responsabilidades o roles
• Consecuencias ¿Qué efectos positivos y negativos implica el uso del
patrón?
» ¿Cuáles son los compromisos de diseño que implica su uso?
» ¿Qué aspectos de la estructura del sistema pueden variar de forma independiente?
• Colaboración Cómo colaboran los participantes para llevar a cabo
sus responsabilidades y proporcionar el comportamiento deseado
Plantilla GoF
• Usos conocidos Al menos dos ejemplos de uso del patrón en aplicaciones
reales.
• Implementación ¿Cómo puede implementarse el patrón en un lenguaje
de programación?
» ¿Qué dificultades implica?
» ¿Hay aspectos dependientes del lenguaje de programación?
• Código de ejemplo Fragmentos de código que ilustren cómo se
implementa el patrón en uno o varios lenguajes de programación
• Patrones relacionados ¿Cuáles son los patrones más estrechamente
relacionados con el dado?
» ¿Se usa en conjunción con otros patrones? ¿De qué
manera?
Plantilla GoF
34
Singleton
35
public final class Singleton {
private final static Singleton singleton = new
Singleton();
private Singleton(){
System.err.println( "Objeto Singleton creado." );
}
public static Singleton
obtenerInstanciaSingleton()
{return singleton; }
}
36
public class PruebaSingleton {
// ejecutar ejemplo Singleton
public static void main( String args[] )
Singleton primerSingleton;
Singleton segundoSingleton;
primerSingleton = Singleton.obtenerInstanciaSingleton()
segundoSingleton = Singleton.obtenerInstanciaSingleton();
if ( primerSingleton == segundoSingleton )
System.err.println( "primerSingleton y segundoSingleton
" + "se refieren al mismo objeto Singleton" ); }}
37
Estrategia
38
public class Context {
Strategy strategy=null;
public Context(Strategy strategy) {
this.strategy = strategy;}
public int realizarOperacion(){
return this.strategy.calcular();}}
public interface Strategy {
int calcular();}
Estrategia
39
public class ConcreteStrategyOne implements
Strategy{ public int calcular() {return 1; }}
public class ConcreteStrategyTwo implements
Strategy {public int calcular() {return 2;}}
public class ConcreteStrategyThree implements
Strategy {public int calcular() {return 3;}}
Estrategia
40
Observer
41
abstract public class Sujeto {
protected Observador []observan;
public Sujeto (){observan = new Observador[10];}
abstract public Observador adscribir (Observador e);
abstract public Observador quitar (Observador e);
abstract public void registra(Observador e);
}
Observer
42
public class Sensor extends Sujeto {
private double valor;
int pos;
public Sensor (){}
public double getValor(){return valor;}
public Observador adscribir (Observador e){
observan[pos]=e;
pos++; return e;}
Observer
43
public Observador quitar (Observador e){
int indice=0;
for(int j=0; j<=observan.length;j++)
while(j<=observan.length) {
if(observan[j].equals(e))
observan[j]=null;
else System.out.println("No encontre el elemento");
} return e;
}
public void registra(Observador o) {
observan[pos]=o; }}
Observer
Beneficios de los patrones
• Los patrones favorecen la reutilización de diseños y
arquitecturas a gran escala.
• Capturan el conocimiento de los expertos y lo hacen
accesible a toda la comunidad software.
• Proporcionan un cuerpo de conocimiento utilizable por
toda la comunidad software.
• Favorecen la transmisión de conocimiento entre
profesionales y entre clientes y desarrolladores
• Proporcionan un lenguaje común. Los nombres de los
patrones forman parte del vocabulario técnico del
ingeniero software.
Problema de los patrones
• Los patrones, no llevan de forma directa a la
reutilización del código, aunque dicha
reutilización se facilita mediante su uso.
• La integración de los patrones en el proceso de
desarrollo se hace todavía de forma manual.
• El número de patrones identificados es cada vez
más grande. Las clasificaciones actuales no
siempre sirven de guía para decidir cual usar.
• El número de combinaciones patrones estilos y
atributos que se dan en la práctica son incontables.
• Los patrones se validan por la experiencia y el
debate, no mediante la aplicación de técnicas
formales
Problema de los patrones
Cómo seleccionar un patrón de diseño
• Considerar cómo los patrones de diseño
solucionan problemas de diseño.
• Buscar las intenciones de cada patrón.
• Estudiar cómo se interrelacionan los patrones.
• Estudiar patrones de propósito similar.
• Examinar la causa de un rediseño.
• Considerar que debería ser variable en un diseño.
Cómo usar un patrón de diseño
• 1. Leer el patrón una vez para tener una visión
general
• 2. Volver y estudiar la estructura, los participantes
y las colaboraciones
• 3. Ver un ejemplo concreto codificado del patrón
• 4. Elegir nombres para los participantes del patrón
que sean significativos en el contexto de la
aplicación
• 5. Definir las clases
• 6. Definir nombres específicos de la aplicación
para las operaciones en el patrón.
• 7. Implementar las operaciones que realizarán
las responsabilidades y colaboraciones del
patrón.
Cómo usar un patrón de diseño
Problema a resolver
Existe un archivo de texto, el que se debe leer
en distintos momentos y bajo condiciones
variables.
Como lo resuelvo?
Problema a resolver
Leer solo las palabras que comiencen con t
Leer las palabras de más de 5 caracteres
Leer los palíndromos
Varia la estrategia de lectura
Encapsular

Más contenido relacionado

Similar a patronesdiseño2009.ppt

Similar a patronesdiseño2009.ppt (20)

Rssddsd
RssddsdRssddsd
Rssddsd
 
Patrones
PatronesPatrones
Patrones
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
 
6 arquitectura desoftware
6 arquitectura desoftware6 arquitectura desoftware
6 arquitectura desoftware
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
 
Patrones
PatronesPatrones
Patrones
 
Patrones de Diseño de Software
Patrones de Diseño de SoftwarePatrones de Diseño de Software
Patrones de Diseño de Software
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
U5.pptx
U5.pptxU5.pptx
U5.pptx
 
12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
12.diseño basado en patrones
12.diseño basado en patrones12.diseño basado en patrones
12.diseño basado en patrones
 
Patrones diseño y arquitectura
Patrones diseño y arquitecturaPatrones diseño y arquitectura
Patrones diseño y arquitectura
 
Semana 1 Patrones de Diseño
Semana 1   Patrones de DiseñoSemana 1   Patrones de Diseño
Semana 1 Patrones de Diseño
 
PatronesdeDiseño.pptx.pdf
PatronesdeDiseño.pptx.pdfPatronesdeDiseño.pptx.pdf
PatronesdeDiseño.pptx.pdf
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañana
 
Capitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_webCapitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_web
 
Patrones de Diseño
Patrones de DiseñoPatrones de Diseño
Patrones de Diseño
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 

Último

Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfrolandolazartep
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUMarcosAlvarezSalinas
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxSergioGJimenezMorean
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENSMANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENSLuisLobatoingaruca
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamientoRobertoAlejandroCast6
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptxguillermosantana15
 

Último (20)

Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdf
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENSMANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
 

patronesdiseño2009.ppt

  • 2. 2 Patrones • En las distintas actividades de la vida diaria se reconocen patrones: – Trabajo – Vida familiar – Hobbies
  • 4. Hardware Software Poder rehusar componentes y lograr un mantenimiento fácil. Lograr un software flexible habitualmente
  • 6. • “Son descripciones de clases y objetos relacionados que están adaptados para resolver un problema de diseño general en un contexto determinado”. Erich Gamma, Richard Helm, John Vlissides y Ralph Johnson Patrones de diseño
  • 7. Patrones de diseño . Ingeniero Resuelve problemas Aplicando estándares Las buenas soluciones permanecen, las malas se rechazan. Los ingenieros deben conocer y saber aplicar los estándares conocidos
  • 8. • Se definen con un alto nivel de abstracción. • Son independientes de los lenguajes de programación y de los detalles de implementación. • Los patrones promueven y facilitan la reutilización de arquitecturas y diseños de software que han demostrado su validez en muchas aplicaciones. Patrones de diseño
  • 9. 9 Arquitectura 1. Define la forma y la estructura de la aplicación de software. 2. Relacionada al propósito de la aplicación. 3. Arquitectura de módulos y sus interconexiones Patrones de diseño Paquetes, componentes, clases
  • 10. 10 Evidencias de diseño erróneo • Rigidez: problemas para insertar algún cambio. • Fragilidad: el software falla en muchos lugares al insertar un cambio. • Inmovilidad: no se pueden rehusar partes del proyecto. • Viscosidad: » De diseño: cuando se deben hacer cambios, es más fácil hacer cosas mal, que bien. » De entorno: entorno de desarrollo ineficiente
  • 11. 11 Cambios de requerimientos • Los cambios en un diseño de software, si no fueron cambios previstos en el diseño original, degradan el mismo. Incluyen dependencias. • Generalmente lo hacen ingenieros que no estaban relacionados con la filosofía de diseño original.
  • 12. • Erich Gamma, Richard Helm, John Vlissides y Ralph Johnson • Design Patterns. • 1994 Patrones de diseño
  • 13. • Describe una estructura dentro de la cual catalogar y describir patrones • Cataloga 23 patrones • Destaca estrategias y aproximaciones basadas en el diseño de patrones Patrones de diseño
  • 14. • No crearon los patrones descriptos en el libro. • Los descubrieron como existentes dentro de la comunidad del software Patrones de diseño
  • 15. Porque estudiar patrones de diseño • Reuso de soluciones de diseño. • Establecer terminología común. • Dan una perspectiva de alto nivel sobre el análisis y diseño. Patrones de diseño
  • 16. • Patrón de diseño: proporciona un esquema para refinar los subsistemas o componentes de un sistema de software, o las relaciones entre ellos. Describe estructuras repetitivas de comunicación de componentes que resuelven un problema de diseño en un contexto particular Que resuelve un patrón de diseño?
  • 17. •Programe para una interfaz, no para una implementación. Comience cualquier jerarquía que necesite para solucionar su problema con una clase abstracta, sin implementación de métodos. Que solo describa los métodos que debe soportar. Patrones de diseño
  • 18. 18 •Favorecer la composición frente a la herencia de clases. Construir objetos que contengan otros objetos. No cargue con todo el peso de heredar métodos que no necesita Patrones de diseño
  • 19. 19 • Encuentre lo que varía y encapsúlelo. Patrones de diseño Lo que puede ser cambiado en su diseño encapsúlelo en una clase , para no tener necesidad de rediseñar.
  • 20. Patrones de diseño Herencia de clases Ventajas •Se define estáticamente •Fácil modificación de la implementación Desventajas •No se cambian implementaciones en tiempo de ejecución •Rompe encapsulamiento
  • 21. Composición de objetos Patrones de diseño Ventajas •Se define dinámicamente •No se rompe encapsulamiento
  • 22. Patrones de diseño Que debería ser variable en su diseño Que puede ser cambiado en su diseño, sin necesidad de rediseñar. Encapsule lo que puede variar. •Distintos algoritmos de ordenación de arreglos •Encapsule cada algoritmo en una clase
  • 23. Manipular objetos en función de la interfaz definida por la clase abstracta, de la cual extiende, tiene dos ventajas: Patrones de diseño
  • 24. • Los clientes no tienen que conocer los tipos específicos de los objetos que usan, basta con que estos cumplan con la interfaz que esperan los clientes. Patrones de diseño • Los clientes desconocen las clases que implementan dichos objetos; sólo conocen la clase abstracta que define la interfaz.
  • 25. 25 1. Aceptarlos 2. Reconocerlos 3. Internalizarlos Patrones de diseño
  • 26. Clasificación de patrones (GoF) • Patrones de creación: Tratan de la inicialización y configuración de clases y objetos. • Patrones estructurales: Tratan de desacoplar interfaz e implementación de clases y objetos. • Patrones de comportamiento: Tratan de las interacciones dinámicas entre sociedades de clases y objetos
  • 27. Patrones de creación • The Factory Method retorna una de las posibles subclases de una clase abstracta dependiendo de los datos que se le provee. • The Abstract Factory Method retorna una de las varias familias de objetos. • The Builder Pattern separa la construcción de un objeto complejo de su representación. Varias representaciones se pueden crear dependiendo de las necesidades del programa. • The Prototype Pattern inicializa e instancia una clase y luego copia o clona si necesita otras instancias, mas que crear nuevas instancias. • The Singleton Pattern es una clase de la cual no puede existir mas de una instancia.
  • 28. 28 Patrones estructurales • Adapter: cambia la interfaz de una clase a la de otra. • Bridge: permite mantener constante la interfaz que se presenta al cliente, cambiando la clase que se usa • Composite: una colección de objetos • Decorator: una clase que envuelve a una clase dándole nuevas capacidades. • Facade: reúne una jerarquía compleja de objetos y provee una clase nueva permitiendo acceder a cualquiera de las clases de la jerarquía. • Flyweight: permite limitar la proliferación de pequeñas clases similares.
  • 29. 29 Patrones de comportamiento • Cadena de responsabilidad: permite que un conjunto de clases intenten manejar un requerimiento. • Interpreter: define una gramática de un lenguaje y usa esa gramática para interpretar sentencias del lenguaje. • Iterator: permite recorrer una estructura de datos sin conocer detalles de cómo están implementados los datos • Observer: algunos objetos reflejan un cambio a raíz del cambio de otro, por lo tanto se le debe comunicar el cambio de este último. • Strategy: cantidad de algoritmos relacionados encerrados en un contexto a través del cual se selecciona uno de los algoritmos.
  • 30. Otros tipos de patrones • Patrones de programación concurrente • Patrones de interfaz gráfica • Patrones de organización de código • Patrones de optimización de código • Patrones de robustez de código • Patrones de fases de prueba
  • 31. Plantilla GoF • Nombre Un buen nombre es vital porque será parte del vocabulario de diseño • Nombres Alternativos Otros nombres de uso común para el patrón. • Propósito Qué problema pretende solucionar. • Motivación Descripción del problema y su contexto – Puede consistir en un ejemplo (un escenario) que ilustre la clase de problemas que el patrón intenta resolver. – En general se entienden mejor los problemas concretos que los abstractos.
  • 32. • Estructura Representación gráfica de las clases de los objetos que participan en el patrón y de sus relaciones estructurales (estáticas) – Actualmente, lo más común es usar UML. • Aplicabilidad ¿En qué situaciones puede/debe aplicarse el patrón? • Participantes Las clases y objetos que participan en el patrón y sus responsabilidades o roles • Consecuencias ¿Qué efectos positivos y negativos implica el uso del patrón? » ¿Cuáles son los compromisos de diseño que implica su uso? » ¿Qué aspectos de la estructura del sistema pueden variar de forma independiente? • Colaboración Cómo colaboran los participantes para llevar a cabo sus responsabilidades y proporcionar el comportamiento deseado Plantilla GoF
  • 33. • Usos conocidos Al menos dos ejemplos de uso del patrón en aplicaciones reales. • Implementación ¿Cómo puede implementarse el patrón en un lenguaje de programación? » ¿Qué dificultades implica? » ¿Hay aspectos dependientes del lenguaje de programación? • Código de ejemplo Fragmentos de código que ilustren cómo se implementa el patrón en uno o varios lenguajes de programación • Patrones relacionados ¿Cuáles son los patrones más estrechamente relacionados con el dado? » ¿Se usa en conjunción con otros patrones? ¿De qué manera? Plantilla GoF
  • 35. 35 public final class Singleton { private final static Singleton singleton = new Singleton(); private Singleton(){ System.err.println( "Objeto Singleton creado." ); } public static Singleton obtenerInstanciaSingleton() {return singleton; } }
  • 36. 36 public class PruebaSingleton { // ejecutar ejemplo Singleton public static void main( String args[] ) Singleton primerSingleton; Singleton segundoSingleton; primerSingleton = Singleton.obtenerInstanciaSingleton() segundoSingleton = Singleton.obtenerInstanciaSingleton(); if ( primerSingleton == segundoSingleton ) System.err.println( "primerSingleton y segundoSingleton " + "se refieren al mismo objeto Singleton" ); }}
  • 38. 38 public class Context { Strategy strategy=null; public Context(Strategy strategy) { this.strategy = strategy;} public int realizarOperacion(){ return this.strategy.calcular();}} public interface Strategy { int calcular();} Estrategia
  • 39. 39 public class ConcreteStrategyOne implements Strategy{ public int calcular() {return 1; }} public class ConcreteStrategyTwo implements Strategy {public int calcular() {return 2;}} public class ConcreteStrategyThree implements Strategy {public int calcular() {return 3;}} Estrategia
  • 41. 41 abstract public class Sujeto { protected Observador []observan; public Sujeto (){observan = new Observador[10];} abstract public Observador adscribir (Observador e); abstract public Observador quitar (Observador e); abstract public void registra(Observador e); } Observer
  • 42. 42 public class Sensor extends Sujeto { private double valor; int pos; public Sensor (){} public double getValor(){return valor;} public Observador adscribir (Observador e){ observan[pos]=e; pos++; return e;} Observer
  • 43. 43 public Observador quitar (Observador e){ int indice=0; for(int j=0; j<=observan.length;j++) while(j<=observan.length) { if(observan[j].equals(e)) observan[j]=null; else System.out.println("No encontre el elemento"); } return e; } public void registra(Observador o) { observan[pos]=o; }} Observer
  • 44. Beneficios de los patrones • Los patrones favorecen la reutilización de diseños y arquitecturas a gran escala. • Capturan el conocimiento de los expertos y lo hacen accesible a toda la comunidad software. • Proporcionan un cuerpo de conocimiento utilizable por toda la comunidad software. • Favorecen la transmisión de conocimiento entre profesionales y entre clientes y desarrolladores • Proporcionan un lenguaje común. Los nombres de los patrones forman parte del vocabulario técnico del ingeniero software.
  • 45. Problema de los patrones • Los patrones, no llevan de forma directa a la reutilización del código, aunque dicha reutilización se facilita mediante su uso. • La integración de los patrones en el proceso de desarrollo se hace todavía de forma manual. • El número de patrones identificados es cada vez más grande. Las clasificaciones actuales no siempre sirven de guía para decidir cual usar.
  • 46. • El número de combinaciones patrones estilos y atributos que se dan en la práctica son incontables. • Los patrones se validan por la experiencia y el debate, no mediante la aplicación de técnicas formales Problema de los patrones
  • 47. Cómo seleccionar un patrón de diseño • Considerar cómo los patrones de diseño solucionan problemas de diseño. • Buscar las intenciones de cada patrón. • Estudiar cómo se interrelacionan los patrones. • Estudiar patrones de propósito similar. • Examinar la causa de un rediseño. • Considerar que debería ser variable en un diseño.
  • 48. Cómo usar un patrón de diseño • 1. Leer el patrón una vez para tener una visión general • 2. Volver y estudiar la estructura, los participantes y las colaboraciones • 3. Ver un ejemplo concreto codificado del patrón • 4. Elegir nombres para los participantes del patrón que sean significativos en el contexto de la aplicación
  • 49. • 5. Definir las clases • 6. Definir nombres específicos de la aplicación para las operaciones en el patrón. • 7. Implementar las operaciones que realizarán las responsabilidades y colaboraciones del patrón. Cómo usar un patrón de diseño
  • 50. Problema a resolver Existe un archivo de texto, el que se debe leer en distintos momentos y bajo condiciones variables. Como lo resuelvo?
  • 51. Problema a resolver Leer solo las palabras que comiencen con t Leer las palabras de más de 5 caracteres Leer los palíndromos Varia la estrategia de lectura Encapsular