2020
Clase actual
Etapa de definición
Vamos a estar armando meets para defender el parcial que acabamos de pasar: El Tío Cosa Nostra
Clases anteriores
Clase 12
Vamos a resolver el parcial del año pasado entre todos: Taller Mecánico (2019).
Te dejamos las diapositivas.
El video de la clase.
Y el repositorio donde está la solución que fuimos armando en clase
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.
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.
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
el branch bloques, donde modelamos los commands mediante objetos bloque
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
master: 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.
Por último, hablaremos sobre los efectos en el patrón 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
Link a las diapositivas de clase
Videos de clase
Clase 8
Objetivo: explorar alternativas para agregar funcionalidad a objetos existentes.
Material principal:
repasaremos el decorator en el ejercicio Clientes de una tarjeta de crédito
como BONUS, haremos un decorator que implemente strategies. Te dejamos el link al repo donde están los branches implementados en Wollok.
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.
Veremos cómo se implementa la misma solución utilizando delegate classes en Kotlin.
Clase 7
Veremos el Decorator pattern. 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.
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
Videos de clase:
Intro Ejercicio Tarjetas de Crédito con If/Strategy. Builder pattern.
Ejercicio Tarjetas de Crédito: Decorator
Clase 6
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.
Les dejamos para después de clase el assignment de Github classroom con el parcialito de comunicación del Diseño. Necesitamos que lo suban también al campus virtual, ingresando a la materia y adjuntando la solución.
Videos de clase:
Clase 5
Continuaremos viendo cómo es el Manejo del cambio: expansión y refactoring, a partir de ejemplos concretos y de cómo solucionarlos en el IDE. Te dejamos el link a las diapositivas.
Luego estudiaremos el testeo de stubs y mocks mediante el ejemplo Alumnos, también podés buscar en los ejemplos el Canje de Premios y 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 de clase
Clase 4
Repasaremos los patrones strategy, template method y composite, y veremos cómo resolver el costo impositivo de una tarea.
Luego hablaremos del Manejo del cambio: expansión y refactoring.
Videos de clase:
Clase 3
Objetivo: entender el proceso del diseño y cómo los design patterns nos ayudan en esta tarea.
Leé el material Guías para comunicar un diseño para poder familiarizarte con los diagramas de clase, de objetos y de secuencia
Empezaremos a estudiar el Proceso del Diseño, con el Ejercicio Manejo de proyectos: Strategy y Composite.
Nos queda pendiente: repasar Strategy, Composite. Contar Template method. Resolver costo impositivo.
Material complementario
Para practicar en casa: tenés la guía de ejercicios Modelado de Objetos con patrones, en particular Selección de comportamiento
Videos de clase:
Clase 2
Objetivo: seguir amigándonos con el entorno Xtend.
Apuntes principales:
Avanzaremos un poco más con el ejercicio de seguros haciendo TDD
De la clase anterior nos queda entender la diferencia entre JDK vs. JRE
Cómo corregir un error en runtime, a partir de un ejemplo en github
Videos de clase
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
Entenderemos la diferencia entre JDK vs. JRE
Y tendremos una introducción a Maven
Por otra parte, nuestro primer proyecto de xtend nos servirá de excusa para revisar cómo diseñamos los tests
Recordá que tenés la página con más ejemplos
¿Qué tengo que hacer después de clase? Anotar acá tus datos y armar los grupos de 3 integrantes para la cursada práctica
Para empezar a trabajar en tu compu: seguí los pasos de instalación del entorno Xtend. Te va a ayudar a configurar las opciones para pasarla mejor y también a tenés una guía para generar un proyecto nuevo.
Fundamental tené a mano siempre el link a la guía rápida del lenguaje y los Shortcuts Felices que quizás conozcas de Algoritmos 1