Aprende TDD con Java en 18 minutos

En esta ocasión os traigo un vídeo de 18 minutos, tiempo en el que os muestro el flujo de trabajo TDD (Test Driven Development), ocuparemos Java y el framework para el desarrollo de pruebas unitarias JUnit, todo ello en el cómodo entorno de desarrollo integrado eclipse, aunque servirá para cualquier otro IDE.

Como crear e importar librerías en Java 8

Como_crear_e_importar_librerias_en_java_First_Frame.png

Aprovecha las ventajas

Gracias al paradigma de programación de lenguajes  Java, la OOP o programación orientada a objetos, tenemos un montón de posibilidades y herramientas a nuestro alcance, tales como la herencia, encapsulación, polimorfismo etc. Y podemos aprovechar todas la mencionadas antes en conjunto,  para crear librerías propias que nos abrirán la puerta a la autentica reutilización de código.

Reutilización de código

Una de las cosas yo siempre intento perseguir como programador  en el día a día, y transmitir a través del blog, pero sobre todo en los tutoriales y ejemplos prácticos que voy grabando en vídeo, es la reutilización de código, por que se traduce en limpieza, menos costes en cuanto a tiempo de desarrollo, (lo que se traduce en dinero al fin y al cabo). Pero el verdadero ahorro no vendrá en el desarrollo en el que se creen las librerías, si no en los próximos desarrollos.

Caso práctico

Supongamos por ejemplo que estamos desarrollando aplicaciones como freelancer, y nos suelen encargar trabajos que al final nos damos cuenta que tienen en común ciertos algoritmos, y partes a nivel de código muy parecidas entre sí. Pues una vez resuelto un problema, seria estúpido no volver a repetir la formula y crearla de nuevo.

Pues bien, si lo hacemos bien, incrustando estas soluciones en una librería propia, de ahí en adelante (en un nuevo software) posiblemente no tardes mas de 5 minutos y no ocuparas mas que unas cuantas lineas de código en resolver el mismo problema, el cual te llevó unas 6 horas resolver y acabo con una estructura, digamos un tanto a bajo nivel.

¿Y como hacemos esto en Java?

Hoy veremos como podemos crear nuestras propias librerías de clases en Java 8 y como importar librerías distribuidas en .Jar, ya sean creadas por nosotros mismos o de terceros.

Inyección de dependencias en Java

Sin-título-1

Hoy veremos un patrón de diseño o arquitectura de software llamado Inyección de dependencias.

Lo vamos a hacer en Java, aunque es un patrón orientado a objetos así que nos servirá en cualquier lenguaje del mismo paradigma.

¿Y que es?

Según la wikipedia:

“Inyección de dependencias (en inglés Dependency Injection, DI) es un patrón de diseño orientado a objetos, en el que se suministran objetos a una clase en lugar de ser la propia clase quien cree el objeto.”

¿Como implementamos esto en java?

Ejemplo de uso:

Tenemos una clase main (InyeccionDeDependencias), que instancia dos clases, la ClaseA y la ClaseB, la ClaseA contiene una funcion llamada imprimir a la que la ClaseB quiere que llamar sin tener que instanciarla dentro de sí misma, ya que si lo hiciera estaría llamando al metodo imprimir de una nueva ClaseA. Y lo que pretendemos es comunicar nuestra ClaseB con la unica ClaseA que hay instanciada en la clase main.

¿Como logramos esto?, pues simplemente pasándole como parámetro al constructor de nuestra claseB una instancia de claseA.

Clase main (InyeccionDeDependencias.java)

Captura1

Clase A (ClaseA.java)

Captura2

Clase B (ClaseB.java)

Captura3

Videotutorial en mi canal de Youtube

 

Pruebas unitarias en Java

parajSmall2

Vemos las famosas pruebas unitarias en Java utilizando JUnit y NetBeans.

¿Que son?

El tema de las pruebas de software es muy extenso, pero nos centraremos en esas pequeñas pruebas a baja escala, que confirman que ciertas partes de una clase y funcionalidades individuales de nuestro software funcionen correctamente y como se espera que lo hagan.

¿Como funcionan?

Este tipo de pruebas se basan en dos parámetros, uno esperado y otro devuelto por la función a probar, si coinciden, ya sea de tipo booleano, numérico, etc, la prueba sera valida, de lo contrario fallará, indicándonos donde y como se produjo el fallo de calculo inesperado.

¿Para que nos sirven?

Además serán unas grandes aliadas a la hora de refactorizar partes de nuestro código, por ejemplo al dividir clases o métodos que se han hecho muy grandes o simplemente han perdido cohesión con sigo mismos a lo largo de su desarrollo, en otros mas pequeños. Pero hoy no vamos a hablar de refactoring, simplemente vamos a ver como podemos hacer las pruebas individuales, unitarias, o lo que es mismo “de un solo propósito”.

¿Como se hacen?

Pues he grabado este video y lo he colgado en dos partes en mi canal de youtube para que veais como las hago yo.

Parte 1

Parte 2