En esta clase introduciremos dos aspectos que seguiremos trabajando durante todo el curso: cualidades de diseño de software y patrones de diseño orientado a objetos.
Objetivos de la clase
- Introducir la noción de cualidad de diseño y su utilidad para evaluar comparativamente soluciones
No todo es programar
Como verán, esta clase viene un poco más teórica que las anteriores y es que, efectivamente, no todo en este oficio es programar. También es necesario saber cuándo parar la pelota y reflexionar: ¿este problema podría resolverse de otra forma? ¿por qué, o mejor dicho, en qué aspectos esta solución es mejor que otra?
Además de profundizar en el conocimiento sobre el paradigma de objetos, en este curso nos interesa ampliar el vocabulario y poder nombrar (o sea, ponerle nombre) a cosas que hacemos habitualmente. Esto nos sirve para poder fundamentar las decisiones que tomamos, para tener discusiones de mayor calidad con nuestrxs colegas y para poder construir diseños más poderosos.
Por todo esto, la propuesta de esta clase tiene que ver sobre todo con leer dos apuntes y luego poder aplicarlos en casos concretos.
Anticipando a los famosos patrones de diseño
Probablemente ya hayan escuchado nombrarlos, probablemente estén deseando aprenderlos… o tal vez nada de eso ocurra y tendrán la primicia al leer el apunte. Lo cierto es que estos patrones están muy difundidos en la industria y creemos que es interesante conocerlos, no sin cierto escepticismo a la hora de aplicarlos.
Profundizarán sobre este aspecto con la lectura del apunte correspondiente.
Lecturas de la clase
- Cualidades independientes de la tecnología | Diseño de software orientado a objetos
Una breve descripción de algunas de las cualidades de diseño más populares: acoplamiento, cohesión, robustez y varias más.
- Refactorización | Diseño de software orientado a objetos
Una técnica para reestructurar el diseño de un programa, sin alterar su comportamiento.
- Patrón "Strategy"
Una forma objetosa de modelar estrategias que pueden intercambiarse.
- Opcional Introducción a los patrones de diseño | Diseño de software orientado a objetos
Recomendamos la lectura del apunte Introducción a Design Patterns, donde se habla sobre qué son y qué no son los patrones de diseño.
- Opcional Introducción a las cualidades de diseño | Diseño de software orientado a objetos
Seguramente alguna vez te pasó que un diseño "no te cierra" pero no pudiste explicar por qué. En este artículo comenzamos a ponerle nombre a esos aspectos.
- Opcional Companion objects | Diseño de software orientado a objetos
Una forma interesante que tiene Kotlin para poner métodos y atributos en las clases.
Videos de la clase
Breve explicación del patrón Strategy
Un español barbudo que, a nuestro juicio, explica de forma muy clara los patrones de diseño.
Ejercicios obligatorios
