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?