Download Unified Process

Document related concepts
no text concepts found
Transcript
Curso Programación Funcional y principios SOLID usando Java 8
Nombre: Curso Programación Funcional y principios SOLID usando Java 8
Introducción:
En la actualidad, la industria se mueve hacia una arquitectura basada en microservicios que
permita sostener aplicaciones reactivas. Para entender bien estos conceptos hay que tener unas
bases sólidas en Programación Funcional y como esta no reemplaza sino más bien complementa
la Programación Orientada por Objetos. Este curso busca generar esas bases.
Duración: 24 horas
Objetivos:
Explicar los principios SOLID como bases para un buen Diseño Orientado por Objetos. Luego
explicar la Proramación Funcional y mostrar cómo esta complementa la OOP. Por último explicar la
noción de Arquitectura Limpia, esencial para llevar este conocimiento al desarrollo de aplicaciones
empresariales:
 Entender y aplicar los principios SOLID a la construcciones de programas de mediana
complejidad.
 Entender y poder aplicar la Programación Funcional usando Java 8 a programas de
mediana complejidad.
 Ser capaces de definir una arquitectura de código limpia.
Orientado a:
Personas con al menos conocimiento básico de cualquier lenguaje de programación, no
necesariamente Java
Entregables:
Durante las sesiones, cada estudiante codificará varios proyectos que servirán como primera
fuente de documentación. Así mismo las presentaciones quedarán en línea para ser consultadas
en cualquier momento.
Prerequisitos: Conceptos básicos de programación.
Contenido:
Sesión 1
Sesión Teórica: Single Responsibility Principles (SRP) y Don’t Repeat Yourself (DRY)
¿Qué es el Single Responsibility Principle? ¿Qué es cohesión? ¿Qué es Don’t Repeat Yourself y
qué tan buenos somos para notar la repetición?
Sesión 2
Sesión Práctica: Creador de Figuras por consola.
Haremos un programa que “dibuje” 3 tipos de figuras con caracteres ASCII en la consola:
Cuadrados, Pirámides y Rombos.
Sesión 3
Sesión Teórica: Pruebas Unitarias, TDD y la inmutabilidad como bastion de la Programación
Funcional
¿Qué es una prueba unitaria? Pruebas unitarias como documentación del código. TDD: Usos y
abusos. ¿Qué es y no es un Java Bean? ¿Qué es YAGNI? Por qué la inmutabilidad es el corazón
de la Programación Funcional.
Sesión 4
Sesión práctica: API de Fracciones
Haremos un API para una clase Fracción aplicando TDD y pruebas unitarias que den buena
cobertura al código, al mismo tiempo que seguiremos hacienda hincapié en SRP, DRY, YAGNI e
inmutabilidad.
Sesión 5
Sesión Teórica: Modelos Expresivos
¿Cómo sacar el máximo provecho a los tipos de datos que definimos? ¿Cómo modelamos una
Persona, un libro y un triángulo? Igualmente veremos el patrón de diseño Builder.
Sesión 6
Sesión Práctica: Juego del 8
Mediante consola, haremos un proyecto para poder jugar el puzzle del Juego del 8
Sesión 7
Sesión Teórica: Principios SOLID
Principios: OCP (Open Closed Principle), ISP (Interface Segregation Principle), LSP (Liskov
Substitution Principle) y DIP (Dependency Inversion Principle). Qué es, realmente Polimorfismo y
por qué ofrece las llaves al paraíso.
Sesión 8
Sesión Práctica: Blackjack
Usaremos todo lo visto para hacer un proyecto que permita jugar Blackjack.
Sesión 9
Sesión Teórica: Programación Funcional en Java 8
¿Qué es Programación Funcional? Lambdas, Optional y Stream como ejemplos de Programación
Funcional en Java 8. ¿Qué es una mónada?
Sesión 10
Sesión Teórica: Manejo limpio de excepciones en Java
¿Qué es y como se usan las excepciones unchecked? ¿Qué es y como se usan las excepciones
unchecked? Código Limpio en el manejo de excepciones.
Sesión 11
Sesión Práctica: Redimensionador de Imágenes
Pondremos en práctica el manejo de excepciones y el uso del API de Stream para hacer un
proyecto que redimensione archivos de imagines de nuestro computador.
Sesión 12
Sesión Teórica: Arquitectura Limpia
¿Cómo hacemos aplicaciones empresariales que tengan la menor cantidad de dependencias y que
sigan siendo robustas?