2022
Clase 13
Tomamos el parcial Navidad 2022, y luego el coloquio.
Clase 12
Vamos a resolver entre todos el examen del año pasado: Cloudfunding.
Te dejamos el link al repositorio con una solución posible que estuvimos trabajando en clase.
Resoluciones de exámenes anteriores:
El Tío Cosa... Nostra. Video de clase 2021: Parte 1 - Parte 2
Taller Mecánico (2019). Te dejamos las diapositivas. Video de la clase. Y el repositorio donde está la solución que fuimos armando en clase (en Xtend)
Te pasamos algunas definiciones:
16/06 Parcial
en máquina o papel, elegís vos
si tenés COVID o similar => podés conectarte remoto y dar el presente, rendís coloquio obligatoriamente
los resultados los vas recibiendo en el fin de semana (que es largo)
si sacás 4 ó más de 4 => el coloquio es opcional (salvo que no estés el día del examen).
23/06 Se rinden los coloquios con el docente que te corrigió. A partir de las 18 hs. en aula 12 del Aulario.
El coloquio permite subir la nota (o bajarla).
Si tenés COVID o similar => arreglamos la defensa por Meet en el transcurso de la siguiente semana
Cómo es el proceso? Venís, te anotás en el pizarrón en la lista, y llamamos por orden de llegada.
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.
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
Videos de clase 2021: Sobre los efectos del Observer - Microprocesador Parte 1 - Microprocesador Parte 2
Videos del canal de youtube: Command
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 de clase 2021: Observer pattern - Inyección de dependencias
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.
Videos de clase 2021: Lista de Correo.
Clase 7
Conoceremos el ejemplo de los clientes de la tarjeta de crédito, para evaluar diferentes soluciones, donde finalmente aparecerá el patrón Decorator. Te dejamos las diapositivas de la clase y el ejemplo Decorator en Github, tenés varios branches: if, strategy y decorator son los que vimos.
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 de clase 2021: Decorator - parte 1. Decorator - parte 2. Mixines.
Videos del canal de youtube: Decorator y Builder. Delegated methods y Mixines.
Clase 6
Primero vamos a resolver el parcialito de UML, contestando dudas. Te dejamos un video que cuenta cómo comunicar un diseño (diagrama de clases y de secuencia)
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, tenés varios branches: if y strategy son los que corresponderán a esta clase.
De yapa conoceremos el Builder como patrón creacional para los tests unitarios.
Podés ir comenzando a leer el apunte Clientes de una tarjeta de crédito - 5 soluciones posibles
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 tenés disponible el assignment del parcialito de UML sobre un ejercicio de Ruleta. Tenés hasta el domingo 17/04 20:00 hs. para entregar.
Vamos a retomar el apunte Manejo del cambio: expansión y refactoring, explicando qué son los bad smells y diferentes refactors que nos pueden ayudar.
Luego 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. También tenés el video en youtube explicando el ejemplo.
Videos del canal de youtube: Refactoring, Ejemplo Ruleta (Stubs y Mocks)
Clase 4
Repasaremos los patrones strategy, template method y composite, y veremos cómo resolver el costo de complejidad media y máxima, repasaremos la diferencia entre clase abstracta e interfaz, e implementaremos el costo impositivo de una tarea.
Luego hablaremos del Manejo del cambio: expansión y refactoring.
Diapositivas: Expansión y Refactoring para el manejo del cambio.
Después de la clase vamos a liberar el assignment de UML para que lo resuelvas, para lo cual tenés que leer el apunte Guías para comunicar un diseño.
Videos del canal de youtube: Cómo comunicar un diseño
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: Strategy, Template Method y Composite.
Te dejamos un video del canal de youtube que explica el patrón Strategy en Wollok aprovechando el diagrama dinámico
También tenés estos videos nuevos para la cursada de Kotlin, donde explicamos los patrones Strategy, Template method y Composite.
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 (nuevo 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
A raíz de la interesantísima pregunta sobre cómo organizar los equipos de trabajo para el TP, les dejo material sobre Estimaciones del libro Desarrollo de Software Ágil en 10Pines de mi amigo 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
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 3 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.