¡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.
- Evacuamos dudas y consultas de Macowins
- 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.
- Abordamos las cualidades de diseño. En particular, charlamos bastante sobre:
- Simplicidad
- Flexibilidad, extensibilidad
- Abstracción: que el nombre de las abstracciones, su estado y su comportamiento esté semánticamente vinculado.
- Mutaciones controladas: minimizar los cambios accidentales (es decir, innecesarios) en los objetos de nuestro dominio. Siempre que se pueda modelar de forma “funcional”, con objetos sin estado, o estado que no cambia, mejor, porque hace más sencillo razonar sobre el código
- 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
- Complementario: Guías para comunicar un diseño
- Complementario: Las entradas del diseño
- Introducción a los patrones de de diseño) t)_
- Solución - Macowins
- Versión explicada
- Pseudocódigo visto en clase
- Video sobre patrones Strategy y Template Method
- Explicación opciones visto el año anterior : tienen que entrar con el usuario de la facultad.
- 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
- Ejercicio: Qué Me Pongo - Iteración I
- Y leé el apunte sobre Diseño de manejos de errores
- Complementario: Excepciones en Java