lunes, 11 de octubre de 2021

Tutorial de Java - 3 - Classes o Files

 Cuando inicias en el mundo de java, los principiantes suelen confundir las Clases (Classes) con los archivos. Vamos a ver la diferencia entre ellas.

Tutorial de Java lección 1 - Class, Fields and Methods (Clases, campos y métodos)

Las Classes y los Java Files

Las clases de java está definida en su propio archivo "*.java". Que usualmente utiliza el public, para indicar que es una clase pública, y que cualquier código puede llamarla para utilizarla. Pero Java no requiere que las clases sean públicas para funcionar, por ejemplo:

La clase en el código de arriba se llama Squirrel y como es una clase pública, el archivo se debe llamar Squirrel.java.

Incluso no solo se puede agregar una clase, es posible agregar más de una clase a un archivo "*.java", pero aquí hay 2 reglas es:

  • Si agregas mas de una clase a un archivo *.java al menos una de las clases debe ser pública.
  • El nombre del archivo *.java debe ser el mismo de la clase pública.

En la clase mostrada en el código de arriba se tiene la clase pública llamada Squirrel  y una clase no publica llamada Squirrel2, entonce el archivo se llama Squirrel.java por que la clase Squirrel es la que está declarada como public.

El siguiente código es válido. Si no se agrega ninguna clase pública podemos llamar al archivo *.java con cualquier nombre y podemos agregar n número de clases. De nuevo esto es válido pero no es recomendable, pues genera mucha confusión en el código legacy. 

Entonces en el código de arriba vemos que las clases son no públicas: LittleSquirrel RedSquirrel, como ninguna de las clases fue declarada con public, entonces se le puede dar un nombre cualquiera, en este caso MyClass.java.

Entonces en base con lo anterior las Clases son las que definimos dentro de los archivos *.java, siendo 2 cosas totalmente diferentes pero relacionadas.

Puedes encontrar el código en el siguiente repositorio de Github


Saludos y feliz aprendizaje. 

martes, 5 de octubre de 2021

Tutorial de Java - 2 - Comentarios

 Java tiene comentarios que se utilizan para documentar las Clases, los methods (métodos) y procedimientos o rutinas dentro de las clases de Java estos son llamados comments (comentarios).

Tutorial de Java lección 2 - Comment (Comentarios)



Los comments (comentarios) son una parte muy común de las Clases de java y los vas a encontrar en los códigos fuentes de los programas.

Los comentarios son líneas de código que no se ejecutan y tampoco afectan al programa pues no se ejecutan, su propósito es el de informar al desarrollador sobre las Claseslos methods (métodos), etc. Esa información hace que los comments (comentarios) nos ayudan a que el código sea más fácil de leer y comprender. Es por eso que se recomienda que documentamos las clases con los comments (comentarios) y la verdad espero que los uses y agregues la documentación de tus clases, piensa en los que van a darle mantenimiento a tu código.


Tipos de comments (comentarios)

En java hay tres tipos de comentarios que puedes encontrar dentro de las clases, estos son:

El Single-line comment (comentarios de una sola línea): Estos comentarios solo son de una sola linea, y para indicar que se utilizara este tipo de comentario se utilizan dos caracteres de barra (slash) "/", y todo lo que se escribe después es el comentario.

// Comentario de una sola línea, hasta el final de la línea.

El Multiple-line comment (comentarios de múltiples líneas): Estos comentarios inician con los caracteres de barra (slash) seguido de un asterisco (asterisk) "/*", y todo lo que hay después incluyendo saltos de línea son considerados comentarios, hasta que encuentra el cierre que un asterisco (asterisk) seguido por una barra (slash) "*/".

/* Comentario 
* de
* líneas múltiple */

Por último tenemos el Javadoc comment (comentarios para Javadoc): Este comment (comentario) es similar al Multiple-line comment (comentarios de múltiples líneas) pero este inicia con una barra (slash) seguido por dos asteriscos (asterisks) "/**" y serán tomado todo lo que esté a la derecha como un comentario hasta que se encuentre un "*/".

/**
* Javadoc comentario de múltiples líneas
* @author Squirrel Programming
*/

Javadoc tiene una estructura que la herramienta de Javadoc sabe como leer e interpretar, se recomienda leer la documentación de javadoc de Oracle para aprender más sobre este tema.



Saludos y feliz aprendizaje. 


lunes, 4 de octubre de 2021

Tutorial de Java - 1 - Clases, fields y methods

Cuando se programa en Java, las clases son los bloques de código básicos para construir un programa. Por es es importante entender la estructura de las clases de Java.

Tutorial de Java lección 1 - Class, Fields and Methods (Clases, campos y métodos)


Clases (Classes)

Primero las clases, las clases actúan como moldes o planos (en ingles blueprints) para la creación de un Objeto. Las clases se utilizan para crear objetos, pues Java es un lenguaje orientado a Objetos (OPP o POO).

Hablando de java, los Objetos representan una instancia de una clase en tiempo de ejecución en memoria, y todos los objetos de la clases que se crean representan el estado de tu programa. Java también cuenta con otras estructuras como los son las "Interface" (Interfaces) y las "Enums" (Enumeraciones). Pero esos son para otro tema.

La siguiente clase, es la clase mas simple que puedes encontrar, pues no tiene nada en ella solo la declaracion de la clase, que es este caso se denomina o llama Squirrel.

Java tiene una palabras que tiene un significado especial, esta palabras suelen ser llamadas keywords o palabras reservadas. En el ejemplo de la clase de arriba podemos ver las keywords (palabras reservadas) public y class

  • public significa que la clase puede ser utilizada por otras clases, 
  • class significa que estas definiendo o creando una clase.

La palabra Squirrel no es una palabra reservada, esta es un identificador o en otras palabras el nombre que se le da a una clase, en este caso es Squirrell, pero puede ser Animal, Taza, Coche, Pluma, etc.

Fields (Campos) y methods (métodos).

Vamos a ver los Fields (campos) y los methods (métodos), que son parte fundamental de una clase.

  • Los methods (métodos): que son llamados también como funciones o procedimientos en otros lenguajes.
  • Los Fields (campos): generalmente son llamadas variables, si un cambio es importante para ser recordado el valor debe ser almacenado en las variables.

Juntos son llamados Members (miembros) de la clase.

Ahora vamos a darle a nuestra clase nuestro primer field (campo).  

En la clase Squirrell agremos el primer campo llamado name donde se almacenara el nombre. Algo que tambien ocurre es que a ese field (campo), le agregamos el tipo que es String (Cadena o Letras).

Ya que hemos agredo un campo, ahora le vamos a agregar metodos a la clase Squirrel.

En la clase Squirrel hemos agregado nuestros primeros dos methods (métodos) estos son getName y setName. 

En los podemos ver que de nuevo se utiliza la keyword (palabra reservada) public para indicar que el method puede ser utilizado por otras clases, despues de la keyword (palabra reservada) public viene el tipo de retorno del method (método), osea lo que va a retornar el method (método), en este caso para el method (método) getName se esta regresando un String

Mientras que el method (métodosetName regresa un tipo especial llamado void el cual significa que el method (método) no va a regresar nada o que no regresara ningun valor. Este method (método) al final dentro de los parentesis tiene un field (campo) declarado: (String newName), este field (campo) se llama parameter (parametro) y este tiene el identificador o nombre de newName, este parameter (parametro) indica que al method (método) se le debe su proveer de un valor de tipo String para funcionar. 

A la declaracion de un method (método se le llama  method signature (firma del metodo).

Pregunta: ¿cúal seria la firma de los methods (métodos de la clase Squirrel declarada en el código de arriba?

Respuesta:

String getName()

setName(String newName)

El method signature (firma del método) inicia desde la con el nombre del metodo hasta que encuentra la primera llave o el caracter (llave de izquierda) "{". Este punto se vera mas adelante en otra leccion.


Puedes encontrar el codigo en el siguiente repositorio de Github


Saludos y feliz aprendizaje. 


domingo, 2 de mayo de 2021

Agreggate Operations


Las Aggregate Operations o operaciones agregadas son palabras muy comunes cuando se habla de lambdas.

¿Pero qué son las Aggregate Operations?

De acuerdo con la documentación de oracle, parecen ser como los Iterators, pero tienen muchas diferencias fundamentales:

  • Las Aggregate Operations utilizan una Iteración interna: estas operaciones no contienen un método como next() que indican a los iteradores como procesar el siguiente elemento de una colección. Con la delegación interna, su aplicación determina qué colección itera, pero el JDK determina cómo iterar la colección. Con la iteración externa, su aplicación determina qué colección itera y como la itera. Sin embargo, la iteración externa solo puede iterar sobre los elementos de una colección de forma secuencial. La iteración interna no tiene esta limitación. Puede aprovechar más fácilmente la computación paralela (parallel computing), que implica dividir un problema en subproblemas, resolver esos problemas simultáneamente y luego combinar los resultados de las soluciones a los subproblemas. 
  • Las aggregate Operations procesan elementos de un Stream: Estas operaciones procesan los elementos de un stream, no directamente de una Collection, por lo mismo son llamadas stream operations.

  • Las aggregate Operations soporta comportamientos como parámetros: Puedes especificar una lambda como un parámetro para la mayoría de las operaciones agregadas. Esto permite que personalices el comportamiento en particular de una aggregate operation.

Ejemplo de aggregate Operations

Java soporta muchas aggregate operations como: 
  • filter
  • map
  • limit
  • find
  • match
  • forEach
  • max
  • min
  • peek
  • of
  • reduce
  • sorted
  • sum
  • y muchas otras, incluyendo variantes de esas operaciones.