Cursada el segundo cuatrimestre de 2025. Pagina de la cátedra.
- Conceptos de paradigmas de programación. Paradigmas fundamentales.
- Programación orientada a objetos
- Objetos y mensajes. Estado (atributos) y comportamiento (métodos)
- Diagramas UML: clases, secuencia, actividades, casos de uso
- Relaciones entre clases: asociación/composición/agregación (delegación), dependencia, generalización (herencia), realización (interfaces)
- Abstracción. Clases y métodos abstractos
- Encapsulamiento
- Polimorfismo
- Principios de diseño en el paradigma de objetos
- Programación orientada a eventos
- Interfaces gráficas
- Programación lógica
- Nociones de Cálculo Lambda
- Programación funcional
- Conceptos básicos: Funciones puras. Inmutabilidad
- Funciones de primera clase. Funciones de orden superior
- Composición de funciones
- Recursión
- Programación concurrente
- Programación Orientada a Objetos.
- Diseño de arquitectura en capas (Modelo–Vista) con bajo acoplamiento.
- Modelado de dominio a partir de requerimientos y reglas de juego.
- Uso de polimorfismo para representar comportamientos variables.
- Aplicación de principios de diseño (SOLID, DRY, KISS, separación de responsabilidades).
- Implementación de lógica de juego: estados, colisiones e interacciones entre objetos.
- Desarrollo de interfaces gráficas con JavaFX y renderizado con sprites.
- Manejo de eventos de usuario y loop de ejecución del juego.
- Carga y validación de niveles mediante XML.
- Programación funcional en Clojure con funciones puras.
- Implementación de una máquina virtual con pilas y contador de programa.
- Interpretación de un lenguaje propio (DSL) basado en comandos.
- Separación de capas entre lógica y presentación.
- Programación orientada a eventos en la interfaz gráfica.
- Concurrencia para ejecutar la lógica sin bloquear la GUI.
- Generación procedural de imágenes y animaciones por píxel.
- Manejo controlado de errores de ejecución.