2023
Clase 13
Vamos a tomar el parcial Sobredosis de TV a partir de las 17:00
tratá de estar lo más temprano que puedas (a las 17 es lo mejor)
si conseguís notebook es lo mejor, acordate que si te prestaron una te configures el entorno para no tener sorpresas con el IDE. Acordate de llevar zapatilla eléctrica para asegurarte tener suficiente batería.
si lo hacés en papel, fijate que sea usando letra clara (imprenta mejor que cursiva)
a las 21:30 cerramos el assignment/parcial, no esperes a esa hora para pushear tu solución, tratá de ir subiendo cosas cada hora/hora y media
podés llevar/utilizar todos los apuntes que quieras
Clase 12
Vamos a resolver el examen El Tío Cosa... Nostra.
Clase 11
Objetivo de la clase: Comprender técnicas para diseñar la creación de los objetos y sus dependencias.
Apuntes principales: Resumen de la clase de ejemplos creacionales - Microprocesador. Patrones creacionales. Link a las diapositivas.
Video del canal de youtube: Ejemplos creacionales
Ejemplos: Fijate en la página de ejemplos la solución de la Máquina de Helado y también la de Patrones creacionales del Microprocesador.
Material complementario
Para practicar en casa: tenés la guía de ejercicios Modelado de Objetos con patrones, en particular Patrones creacionales.
Resumen de clase de ejemplos creacionales de los clientes de una tarjeta de crédito y el ejercicio del Firewall.
Clase 10
Objetivo de la clase: Modelar comportamiento como un objeto.
Primero, hablaremos sobre los efectos en el patrón Observer.
Luego, vamos a encarar el ejercicio del Microprocesador (primera parte).
Podés descargarte el repositorio con la solución principal que vamos a ver en el branch master.
Videos del canal de youtube: Command
Material complementario
Para practicar en casa: tenés la guía de ejercicios Modelado de Objetos con patrones, en particular Modelar comportamiento.
El ejercicio del Firewall también permite ver cómo trabajar con filtros y acciones (commands) para despachar paquetes.
La pregunta de Stack Overflow sobre cómo hacer un deep copy en Java
Clase 9
Objetivo de la clase: Conocer el patrón de diseño observer que sirve para desacoplar eventos de un objeto.
Continuaremos con el enunciado de Listas de correo, trabajando el requerimiento Enviar mensaje junto con los agregados del punto 2, que nos servirá para dar Lista de correo: eventos ante un post.
También veremos la Inyección de Dependencias para ver cómo se inyecta el componente que envía mails, implementado en estos tres ejemplos
constructor: trabaja la inyección de dependencias del MessageSender en el constructor del MailObserver
singleton: el componente que envía mails es un Singleton y esto hace fallar los tests.
service-locator: implementa el patrón arquitectural Service Locator para desacoplar el envío de mensajes de la aplicación.
Videos del canal de youtube: Inyección de dependencias, Observer
Material complementario
Para practicar en casa: tenés la guía de ejercicios Modelado de Objetos con patrones, en particular Notificaciones / Manejo de eventos
Clase 8
Veremos el ejemplo Lista de Correo (link al enunciado), que nos servirá para repasar diferentes formas de modelar soluciones y cómo compararlas entre sí, la aparición de requerimientos asincrónicos, y el diseño de interfaces entre componentes.
Diapositivas: Lista de Correo
Clase 7
Contaremos nuevamente el patrón Decorator.
Haremos un ejercicio de repaso sobre los patrones Decorator y Template method.
Conoceremos el mixin como un concepto que permite la reutilización de código de forma más flexible que la herencia.
Veremos la implementación del mismo ejercicio de Tarjetas de Crédito en Wollok con mixins.
Más información sobre mixins podés encontrarla en el sitio de Wollok | Documentación de conceptos | Avanzados y en la página de la wiki de Uqbar sobre mixins.
Videos del canal de youtube: Delegated methods y Mixines.
Clase 6
Conoceremos el ejemplo de los clientes de la tarjeta de crédito, para evaluar diferentes soluciones. Te dejamos las diapositivas de la clase y el ejemplo Decorator en Github, vamos a ver cómo modelar un Builder para facilitar la creación de clientes en los tests, y luego el Decorator.
Podés leer el apunte Clientes de una tarjeta de crédito - 5 soluciones posibles
Al final vamos a resolver el parcialito de UML, contestando dudas.
Videos del canal de youtube: Decorator + Builder, Cómo comunicar un diseño
Material complementario
Para practicar en casa: tenés la guía de ejercicios Modelado de Objetos con patrones, en particular Intercepción de código
Clase 5
Estudiaremos el testeo de stubs y mocks mediante el ejemplo de la Ruleta Virtual, también podés buscar en los ejemplos el de Lista de Correo (branch master). Te dejamos el paper de Martin Fowler Mocks aren't stubs para que complementes el contenido de la clase. Te dejamos el link a las diapositivas.
Videos del canal de youtube: Ejemplo Ruleta (Stubs y Mocks)
Empezaremos a conocer el ejemplo de los clientes de la tarjeta de crédito, para evaluar diferentes soluciones. Te dejamos las diapositivas de la clase y el ejemplo Decorator en Github, que tiene la primera solución con condicionales y luego las condiciones comerciales implementadas como strategies.
Podés ir comenzando a leer el apunte Clientes de una tarjeta de crédito - 5 soluciones posibles
Clase 4
Manejo del cambio: expansión y refactoring. Bad Smells.
Diapositivas: Expansión y Refactoring para el manejo del cambio.
Videos del canal de youtube: Refactoring
Tarea para el hogar: bajate el ejemplo de Stock de Mercaderías, fijate qué ideas de diseño te hacen ruido y proponé mejoras. Las vamos a analizar entre todes en clase.
Clase 3
Objetivo: entender el proceso del diseño y cómo los design patterns nos ayudan en esta tarea.
Seguimos con el Proceso del Diseño, con el Ejercicio Manejo de proyectos, donde aparecen los patrones Strategy, Template Method y Composite.
Tenés estos videos del canal de youtube, donde explicamos los patrones Strategy, Template method y Composite.
Y te dejamos un video que explica el patrón Strategy en Wollok aprovechando el diagrama dinámico
Clase 2
Objetivo: adquirir herramientas que nos ayuden a solucionar errores. Entender el proceso del diseño y cómo los design patterns nos ayudan en esta tarea.
Primero vamos a ver cómo es la integración continua de nuestro proyecto (te dejamos un video que explica CI para la materia) y lo vemos en acción. Badges. Repaso de cobertura de tests (video explicativo de Cobertura de tests en la nube y cómo agregar status badge de build y cobertura al README de tu repo).
Cómo corregir un error en runtime, a partir de un ejemplo en github
Empezaremos a estudiar el Proceso del Diseño, con el Ejercicio Manejo de proyectos: Strategy, Template Method y Composite.
Como BONUS, les dejamos un video que explica qué son las interfaces en Kotlin y su comparación con las clases abstractas (link a las diapositivas)
Si les interesa conocer una metodología para organizar los equipos de trabajo para el TP, les dejo material sobre Estimaciones del libro Desarrollo de Software Ágil en 10Pines de Federico Zuppa.
Clase 1
Objetivo: entrar en calor con el set de tecnologías que propone la materia y repasar las técnicas de testing.
Apuntes principales:
Vamos a familiarizarnos con el entorno de trabajo de la materia, en particular
Crearemos un proyecto desde cero (te dejamos un video que lo explica)
Entenderemos la diferencia entre JDK vs. JRE
Y tendremos una introducción a Gradle
Por otra parte, nuestro primer proyecto de Kotlin nos servirá de excusa para revisar cómo diseñamos los tests
el uso de Kotest como framework de testing (hay un apunte más completo de Testing para que leas)
Recordá que tenés la página con más ejemplos
¿Qué tengo que hacer después de clase? Si no lo hiciste, anotar acá tus datos y armar los grupos de 5 integrantes para la cursada práctica.
KOTLIN + IntelliJ
Para empezar a trabajar en tu compu: todo lo que necesitás lo tenés en la página principal de Kotlin en la wiki de Uqbar. Tenés guías para crear un proyecto, descargar ejemplos existentes, conocer Gradle para manejar las dependencias, configurar la integración continua, trabajar con colecciones o entender el manejo de errores, entre muchas otras cosas.
Fundamental tené a mano siempre el link a la guía rápida del lenguaje.