2024
Clase 13
Vamos a tomar el parcial. Acordate de
tratar de estar a las 17 en el Aula 2 del ITS, vamos a ver si se puede entrar lo antes posible
si vas a llevar notebook, traete por las dudas zapatilla eléctrica
hay conexión de WiFi pero tené a mano los datos del celular al menos para bajarte el assignment y pushear los cambios cada hora
asegurate antes de irte que hayas subido los cambios al repositorio
recordá seguir las instrucciones de Juli (ver en la lista de algo2) para utilizar el token al pushear y previamente hacer
git config --global user.name "John Doe"git config --global user.email johndoe@example.com
poné tu usuario en lugar de "John Doe"
pueden tener material de consulta
el assignment vence 21:45, ténganlo en cuenta para hacer el último push
las notas van a estar a partir del lunes
Clase 12
Vamos a resolver el examen Sobredosis de TV (2023)
Te recomendamos que lo trates de implementar en tu casa para llegar a la clase con preguntas y despejarte todas las dudas.
Te dejamos una posible resolución en este repositorio.
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
Si querés ver cómo podemos extender el ejemplo del Microprocesador mezclando los paradigmas OO/Funcional en Scala, te recomendamos este video de Nicolás Scarcella
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, solo veremos el primer requerimiento: Envío de mensajes y Suscripción a la lista), 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
IMPORTANTE: Ya están instaladas en las máquinas del aula de los jueves el IntelliJ con el plugin Kotest. En esta clase les vamos a pedir que corroboren que puedan ingresar con el usuario LCD (la contraseña se las damos en clase). Deben guardar la información en la partición sda3 o "Persistent Data" (hay un symlink en el Escritorio).
Clase 7
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.
Y luego la implementación del ejercicio de Tarjetas de Crédito utilizando delegated classes/methods
¿Cómo instalar el nuevo Wollok-TS? Podés acceder al nuevo sitio web (en construcción)
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 repasar 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
Ya podés descargarte el assignment correspondiente al parcialito de UML Turistas.
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, y 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 Remisería, 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 4 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.