¡Hola!
Ya conocemos la materia, por lo que ahora podremos profundizar sobre muchos temas. Para empezar, tenemos que saber diseñar y es necesario introducirnos en lo que son las buenas prácticas.
Importante: En caso de que tengas dudas sobre Java y Maven, ¡preguntá!
Resumen
- Aprendimos sobre cualidades de diseño y sobre cómo comunicarlo.
- Hablamos sobre cualidades de diseño. Hablamos sobre la correlación positiva y negativa: son pocos los pares de cualidades (si es que siquiera existen) en que siempre una va a ir en contra o a favor de la otra. En general, tenemos que estudiar la correlación entre las cualidades de forma situada. ¿Hay una solución ideal? No ¿Buscaremos producir una única solución? Tampoco. El objetivo es comparar, formar criterio y lograr pensamiento crítico.
- Abordamos el concepto de Patrones de Diseño. Dentro de estos patrones, vimos:
- Strategy (estrategia): solución basada en composición. No toda composición es un strategy.
- Template method (método plantilla): solución basada en herencia con clase abstracta que tiene un método concreto. No toda herencia ni herencia de clase abstracta es un template method.
- Hablamos sobre la importancia de pensar los patrones desde la semántica y no solamente desde las estructuras.
- Repasamos soluciones basadas en composición vs herencia.
- Ventajas y desventajas de cada una: las primeras son más dinámicas, mientras que las segundas son estáticas.
Material
- Presentación
- Video de Template y Strategy
- Cualidades de Diseño
- Guías para comunicar un diseño_
- Introducción a los patrones de de diseño)
- Solución - Macowins
- Complementario: Tarjetas de patrones de diseño (no reemplazan al libro de patrones de GOF): https://refactoring.guru/es/design-patterns
- https://refactoring.guru/es/design-patterns/strategy
- https://refactoring.guru/es/design-patterns/template-method
Tarea
- Obligatorio: Hacer el TPI1: Implementación de Macowins
- Ejercicio: Qué Me Pongo - Iteración I. ¡Traelo pensado para la clase que viene!
- Mirá el video Desafiando los algoritmos de opresión (Tiene subtítulos automáticos, no son los mejores pero se entiende bastante bien). ¡Lo charlamos en clase!
- Leé el apunte sobre Diseño de manejos de errores
- Complementario: Excepciones en Java