PATRONES DE DISEO Ing Arles Rodrguez Portela Patrones
- Slides: 70
PATRONES DE DISEÑO Ing. Arles Rodríguez Portela
Patrones de Diseño ¡Alguien quiere resolver tus problemas! Es una solución estándar a un problema común. Una técnica para hacer código mas flexible haciendo que este reuna cierto criterio. Un diseño o un diseño o implementación que cumple cierto propósito Un idioma de programación de alto nivel. Atajos para describir ciertos aspectos de programación para describir ciertos aspectos de organización de un programa. Conexiones entre componentes de un programa. La figura de un diagrama de objetos o de componentes.
Simu. Duck Juego de Simulación de estanques de Patos. Se muestra una variedad de especies de patos nadando y graznando. Los diseñadores inicialmente utilizaron técnicas orientadas a objetos y crearon una superclase Pato de la que las otras heredan.
Simu. Duck
Simu. Duck La compañía ha tenido presiones de sus competidores. Requieren mostrar algo realmente innovador a los inversionistas la próxima semana. Se necesita que los Patos Vuelen!
Simu. Duck Comercial dijo que no habia ningún problema para entregar eso en una semana. Jefe: Joe es muy bueno en OOP, ¿qué tan dificil puede ser?
Objetivo
Joe!
La solución de Joe
Pero algo salió horriblemente mal Joe… Estuve en la reunión con los inversionistas. Y vimos patos de goma volando alrededor de la pantalla… es esto una broma? Deberías entrar en monster. com
¿Qué pasó? Joe falló al no notar que NO todas las clases de pato vuelan. Cuando Joe añadió este comportamiento a la superclase, añadió la propiedad de volar a especies de pato que no vuelan.
Diseño de Joe
Diseño de Joe ¡Si! Una falla en el diseño, pero que acaso unos patitos de goma volando, ¿no se ven simpáticos?
Conclusión La idea de herencia de Joe no se ve muy bien cuando llega la hora de hacer mantenimiento.
Joe medita sobre el uso de herencia Pues sobreescribo el método de volar del patito de goma para que no haga nada…
Auto-recuperación Entonces que pasará cuando añadan patos de madera que no vuelen ni graznen… : S
¡Quiz! |
¿Y si uti. Iizo interfaces? Joe piensa que la herencia no es una muy buena opción porque un memorando dice que cada seis meses se va a actualizar el producto. Por cada clase Pato que salga me toca modificar los metodos de volar y graznar… ¡por siempre! Necesita una vía limpia para tener solo uno pero no todos los tipos de Pato volando o graznando.
Razonamiento de Joe Saco el Vuelo de la superclase y hago una interfaz Flyable con un método fly(), los patos que se suponen vuelan, implementarán esta interfaz… ¡Lo mismo para graznar!
¿Qué piensa sobre el razonamiento de Joe?
La Jefe de Joe ¡Es la peor idea que jamás he oido! Usted dice ¿duplicar código? Si sobreescribir algunos métodos era malo que sentirá cuando haya que hacer un pequeño cambio a las 48 especies de pato
¿Qué haría si fuera Joe? Herencia no es una buena opción. Las interfaces resuelven parte del problema, pero destruye la reutilización de volar, haciendo una pesadilla el mantenimiento.
Cuál es la única constante en el desarrollo de software (Quiz ii) | ¿La única constante en el desarrollo de software con la que usted siempre puede contar, sin importar el lenguaje de programación, o lo que usted esté haciendo o incluso sin importar el producto software en el que esté involucrado?
Cuál es la única constante en el desarrollo de software
No importa que tan bien haga su aplicación, sobre el tiempo o la aplicación cambia o muere…
Quiz iii
Profundizando en el problema Principio de Diseño: Identifique los aspectos de la aplicación que varíen y sepárelos de aquellos que se mantienen igual
Principio de diseño Tome las partes que varíen y encapsúlelas, para que así pueda alterarlas o extenderlas sin afectar lo que no debe afectarse. Ganancia: Flexibilidad y menos consecuencias no controladas. Este principio de diseño forma parte de casi todos los patrones de diseño existentes.
Separando los cambios de lo que se mantiene igual La clase Duck no tiene problemas que con quack() y fly(). La clase Duck se queda. Se crea un nuevo subconjunto de clases para representar los comportamientos que cambian fly() y quack().
Separando los cambios de lo que se mantiene igual
Diseñando los comportamientos variables de los patos Se desean mantener las cosas flexibles. Se desea asignar comportamientos a instancias de Pato. Se desea inicializar un pato silvestre (Mallar. Duck) con un tipo específico de comportamiento de vuelo. Porque no asegurar que el comportamiento de un pato cambie dinámicamente. Incluir setters para el comportamiento de los patos para que se pueda cambiar el comportamiento de estos en tiempo de ejecucíón.
Segundo principio Programe a una interface no una implementación
Solución Se utiliza una interface para cada comportamiento. Fly. Behavior y Quack. Behavior y cada implementación implementará una de estas interfaces. No hay clases pato que implementen interfaces de Quack y Fly. Se crean algunas clases cuya función es representar un comportamiento.
Solución
Solución En éste nuevo diseño las subclases de Duck usarán una interface representada por una interface (Fly. Behavior y Quack. Behavior) así que la implementación actual de el comportamiento (el comportamiento específico se codifica en la clase que implementa (Fly. Behavior o Quack. Behavior) no quedará atado a la clase Pato.
Fuentes No veo porque usar una interfaz para Fly. Behavior se puede hacer lo mismo con una superclase abstracta ¿no es lo mismo que usar polimorfismo?
Programar una interface significa programar un supertipo
Implementando los comportamientos del pato
Ganancia Otros tipos de objetos pueden utilizar los comportamientos de volar o graznar porque estos comportamientos no quedan escondidos en nuestras clases pato. Se pueden añadir nuevos comportamientos sin modificar la clase pato o tocar alguna de las clases pato que usa comportamientos de volar.
Cuando las cosas cambien, ¿siempre debo devolverme y encapsular estas cosas? No siempre, depende que flexibilidad requiera el código especificado.
¿Se podría hacer de Duck una interface? No. Cuando todo está enganchado se ve la utilidad de la clase pato y las especies de pato. ç ¿No es raro tener una clase que es un comportamiento? Un comportamiento puede tener estados y métodos, un comportamiento de volar puede tener valores de instancia representando parámetros de vuelo (aleteos por minuto, maxima altitud, velocidad)
Quiz (iv) |
Respuestas
Integrando los comportamientos Duck ahora delegará sus comportamientos de volar en vez de usar los metodos de quacking y flying definidos en Duck.
Integrando los comportamientos 1. Se añaden dos instancias de Fly. Behavior y Quack. Behavior de tipo interface. Cada pato selecciona en tiempo de ejecución que interfaz va a utilizar (volar con alas, chillar). Se remueven los metodos fly() y Quack() de la clase Duck y sus subclases. Se reemplazan por Perform. Fly() y Perform. Quack().
Integrando los componentes
2. Implementar perform. Quack() Duck permite que el objeto que es referenciado por quack. Behavior grazne por el. Así la preocupación es sobre como graznará.
Cómo se setean los comportamientos
¿Qué se está haciendo en ese constructor, si supuestamente no se programaba para una interfaz específica?
Código final para Duck
Fly. Behavior y sus dos implementaciones
Quack. Behavior y sus implementaciones
Seleccionar el comportamiento dinámicamente
IS–A, HAS–A, Implements
HAS – A es mejor que IS-A Favorezca composición sobre herencia
Hemos visto el patrón Stategy
Impresione a sus amigos e influencie a los ejecutivos El patrón strategy define una familia de algoritmos que se encapsulan y se hacen intercambiables, dejando que el algoritmo varíe independientemente de los clientes que lo usen.
Quiz (V) Cada personaje puede usar un arma al tiempo pero puede cambiar armas durante el juego.
Ventajas patrón de diseño Brinda un vocabulario compartido. Permite pensar a nivel de patrones.
Cuando usar patrones de diseño Los patrones de diseño están en su cerebro!
Resumen
Soluciones
Soluciones (ii)
Fuentes MIT - Design Patterns http: //dspace. mit. edu/bitstream/handle/1721. 1/3 5275/6 -170 Fall-2001/Ocw. Web/Electrical. Engineering-and-Computer-Science/6170 Laboratory-in-Software. Engineering. Fall 2001/Lecture. Notes/index. htm [FREEMAN] E. Freeman. Head First Design Patterns. O'Reilly Media, 2004.
- Check list voyage scolaire
- The langlois bridge at arles
- Epicerie solidaire arles
- Amfitheaters
- 05.html?title=
- Diseo
- Diseo de interiores
- Portafolio de diseo
- Diseo grafico
- Panda collaboration meeting
- Ria rodrguez
- Does jones college prep wear uniform
- Calculo de frecuencia cardiaca
- Lizbeth rodrguez
- David rodrguez
- Olivia rodrguez
- Julieta rodrguez
- Lizbeth rodrguez
- Veronica rodrguez
- Manuel rodrguez
- Patrones de flujo de materiales
- Patrones de lesion hepatica
- Patrones de marjory gordon
- Son los patrones biográficos del comportamiento individual
- Patrones grasp
- Patrones gof ejemplos
- Tipos de chorros para combatir incendios
- Patrones de familia en cuidados paliativos
- Patrones grasp
- Nt
- Funcion de un topografo
- Patrones textuales de los textos expositivos
- Patrones ventilatorios
- Patrones triangulos
- L ll
- Patrones de velas japonesas
- Patrones de arquitectura de software
- Patrones comerciales
- Verificacion de patrones oculares
- Respiracion cheyne stokes
- Patrones comportamentales
- Ejercicios locomocion
- Patrones de consumo marketing
- Patrones de dispersión
- Graduación de patrones
- Patrones de la ciencia
- Angulos costofrenicos libres
- Patron paralelo del surco
- Prohibiciones de los patrones
- Espirometria
- Patrones numericos en la recta numerica
- Patrones de diseño grasp
- Derechos y obligaciones de los trabajadores y patrones
- Imagen de trabajo en equipo
- Porn
- Materi bahasa jawa kelas 8 semester 1
- Adviezen ing
- Sing ora kalebu struktur teks laporan asil kagiyatan
- Skočdopole petr ing
- Pranata adilaya
- Ing rules
- Sat nav discounts
- Janur ana ing tuwuhan nduwni falsafah
- Esguir
- Ing. segundo fausto roncal vergara
- Adding ing rules
- Marek pavlik prednasky
- Ing direct avila
- Chen ing-hau
- Verbs infinitive or ing
- Past participle clause