Este repositorio contiene ambos proyectos correspondientes a los tres módulos de Técnicas Avanzadas de Programación.
El primer y segundo módulo se desarrollan utilizando el lenguaje Ruby.
Primer Módulo:
- Problemas con la Herencia
- Mixins & Traits
Segundo Módulo:
- Metaprogramación
- Instance/Module eval
- Method Missing
- Singleton Classes
- Linearization vs Flattening
El Tercer Módulo se desarrolla utilizando el lenguaje Scala
- Checkeo estático de Tipos
- Pattern Matching
- Inmutabilidad
- Varianza
- Mixins
- Híbrido Objetos + Funcional
- Abstracción y Mónadas
El proyecto correspondiente al lenguaje Ruby trata de la implementación de un Framework que permita a Ruby soportar Programación Orientada a Aspectos, aplicando transformaciones a Clases, Módulos u Objetos seleccionandolas mediante el uso de una Regex o una enumeración de éstos. Sobre éstos se pueden transformar aquellos métodos que cumplan alguna condición, que puede ser regex, parámetros de entrada o la negación de alguna de ellas. Estas transformaciones pueden implicar la inyección de parámetos, la ejecución de una acción antes, después o en lugar de la ejecución del método o bien redirigir la llamada del método a otro.
El proyecto correspondiente al lenguaje Scala trata de un grupo de héroes de distintas clases que pasa por un calabozo, compuesto por una serie de puertas que conducen a habitaciones en las que puede haber otras puertas con alguna dificultad para abrirlas y puede ser que el grupo cumpla la condición necesaria para atravesarla o no. Por otro lado cada habitación tiene en su interior una situación que el grupo debe atravesar y ésta afecta a los integrantes del grupo. Se desea el estado del grupo al atravezar el calabozo.
Nombre | Legajo | Usuario | |
---|---|---|---|
Francisco Panozzo | 173.301-1 | @Franpanozzo | francisco.panozzosf@gmail.com |
Alexis Herasimiuk | 167.251-4 | @SwaXTech | aleeherasimiuk@gmail.com |
Facundo Pittaluga | 168.585-5 | @Facupitta | facupitta@hotmail.com |
Gonzalo Franco Giussani | 143.682-0 | @GGIU | gonzalo.giussani@gmail.com |
Nicolás Rickert | 167.394-4 | @nicorickert | nicorickert13@gmail.com |