Organización general de un programa en Java

En esta lección repasarás los principales conceptos para elaborar una aplicación en Java y conocerás algunos nuevos que te servirán para implementar tus soluciones, pero ahora bajo el paradigma de la Programación Orientada a Objetos; comencemos. 

Los programas en Java se organizan en clases, ya que éste es o se dice que es, un lenguaje altamente orientado a objetos. Quizás no lo sabías, pero todo lo que desarrollaste en la unidad tres del curso pasado también estaba en una clase, solo que muchas veces cuando comenzamos no nos dicen eso y, por otra parte, el entorno de desarrollo integrado IDE nos ayuda mucho en la configuración de esos detalles, por lo que algunas veces pasan desapercibidos o simplemente lo damos por hecho. La estructura de un programa en Java básicamente es la siguiente:

Ilustración 1. Estructura de un programa en Java.

Como puedes apreciar todo el código está programado en el campo de la llamada Aplicación1, cuando se abren las llaves de la línea 6, lo que se hace es escribir la declaración del método principal llamado main ya que éste es el punto de entrada o anclaje de cualquier programa en Java; las palabras reservadas que lo acompañan son public y static, la primera es un modificador de acceso que define a ese método como público, es decir, que no hay restricciones para que éste pueda ser llamado desde otra instancia o método del mismo proyecto. La palabra reservada static le dice al programa que cargue ese método en la memoria cuando se ejecute la aplicación porque se trata de un método de clase y que, por ende, necesita estar siempre disponible cuando se le llame. Además, con ello también se indica que no se necesita de ningún objeto (instancia de clase) para que este método se ejecute.  

Por otra parte, podemos observar en la línea 8 entre paréntesis escrito: String [] args que se refiere a los argumentos o parámetros con los que en un determinado momento se puede inicializar o arrancar al método principal. Finalmente, recuerda que en Java se usan las llaves {} para indicar el comienzo y el final de un bloque de sentencias, como en la sintaxis mostrada.

Comentarios

Si observas la sintaxis del ejemplo de la organización de un programa en Java del apartado anterior, te darás cuenta de que en algunas líneas se dejaron mensajes al lector del programa después de los símbolos //; pues bien, esos son comentarios y sirven para hacer que tus programas sean más fáciles de entender por otros programadores. Los símbolos // se utilizan para escribir comentarios de línea e indicarle al compilador de Java que no considere el texto escrito delante de ellos cuando realice la compilación del programa. En Java existen tres tipos de comentarios, estos son:

  1. Comentarios de una sola línea. Igual que en la ilustración 1, utiliza // para indicarle al compilador que lo que está escrito después de estos símbolos no se debe de compilar.
  2. Comentarios de bloque. Similar al caso anterior solo que se usan los símbolos /* y */ para indicarle al compilador que todas las líneas que están entre dichos símbolos no los debe de tomar en cuenta al momento de la compilación.
  3. Comentarios para la documentación JAVADOC. A diferencia de los anteriores que son mensajes para otro ser humano; cuando escribas un comentario que empiece con /** y termine con */, le estarás enviando un mensaje a la herramienta generadora de documentación de Java, conocida como JavaDoc, y lo que va a hacer esta herramienta es buscar etiquetas en tu mensaje que deberás señalar con @. Por ejemplo: @param, @return, @throws o @see, que se refiere a los parámetros que puede recibir el método, lo que regresa, el tipo de excepciones que puede arrojar, respectivamente. La última etiqueta @see se utiliza para más información, ya que proviene de la expresión en inglés ¨see also¨, parecido a lo que encontramos en los libros con la leyenda ¨Véase también¨. 

Existe una lista completa de etiquetas con las que puedes interactuar con el generador de documentación de Java, la lista completa la puedes encontrar en:

Uso de bibliotecas

En Java como en muchos otros lenguajes de programación, por ejemplo, Pascal, C, C++, C#, etc., existe el concepto de unidades, bibliotecas o librerías. En sí, son repositorios de código estándar que se instalan con el kit de Desarrollo de Java (JDK por sus siglas en inglés) y te sirven para que no tengas que escribir funciones, métodos o procedimientos básicos cuando desarrolles una aplicación. Para hacer uso de estos componentes de software prefabricados, tan solo debes de importar las librerías que consideres que vayas a utilizar en tu programa, con la palabra reservada import antes del inicio de la declaración de la clase para que el enlazador y cargador (componentes o partes de todo compilador) incluyan a la librería o librerías en el código máquina de tu aplicación. Si no existieran las librerías en los lenguajes de programación, tendrías que desarrollar clases y métodos para indicarle al compilador que debe de hacer cuando uses un operador tan elemental como: ¨+¨ por ejemplo. Las librerías o bibliotecas más utilizadas en Java son:

Tabla 1. Principales bibliotecas de Java

Desde luego, te sugiero que consultes la documentación oficial del lenguaje de programación Java para que conozcas la lista completa en:

Identificadores

Los identificadores de un programa de Java son los nombres que le asigna el programador a cualquier elemento de su programa, como las variables, los atributos, las clases, los métodos, paquetes, etc. Para que el nombre que le asignes a tus elementos sea válido debes de seguir las siguientes reglas:

  1. No utilices ninguna palabra reservada del lenguaje de programación.
  2. El nombre de tu elemento no puede iniciar con un número.
  3. Tu identificador puede incluir cualquier letra o número, pero no caracteres especiales como: #, $, %, &, /, (), etc.

Palabras reservadas

De acuerdo con la documentación oficial de Java, Oracle (2021), se trata de secuencias de caracteres del código ASCII, cuyas combinaciones forman palabras en el idioma inglés que no se pueden utilizar como identificadores, ya que su uso está reservado o asociado a alguna función o utilidad del propio lenguaje. En inglés se les conoce como Keywords y en la documentación de Java las puedes encontrar con las etiquetas: ReservedKeyword y ContextualKeyword, estas son:

Tabla 2. Palabras reservadas.

Sentencias

Las sentencias de un programa en Java son las instrucciones que se ejecutan en secuencia para que una aplicación pueda cumplir con el propósito para el cual fue desarrollada. A veces, son tan elementales cómo asignarle el valor de 5 a una variable llamada edad, o mandar a imprimir en pantalla el mensaje “Hola mundo”. Sin embargo, el conjunto y orden de todas estas instrucciones simples es lo que le da la funcionalidad a una aplicación. Recuerda que derivado del paradigma de la Programación Estructurada, las sentencias en un programa se ejecutan una a una de la primera a la última, a menos de que modifiques ese flujo u orden con estructuras de control de secuencia selectivas, condicionales o repetitivas. Para que el compilador “conozca” dónde finaliza una sentencia y dónde comienza otra se utiliza el punto y coma ; por lo que recuerda agregarlo al finalizar cada instrucción. Por ejemplo:

Bloque de código

Se forma o sirve para agrupar a un determinado conjunto de sentencias o instrucciones en un programa de Java. Si observas la estructura que se mostró al inicio de esta lección, todas las sentencias de la clase principal están delimitadas con llaves {}, pues bien, esto ocurre también en los métodos o en algunas instrucciones que requieran de un cierto agrupamiento de sus sentencias, cómo el ciclo for, el while, do while, o las acciones a ejecutar en el if-else que ya conoces de la unidad 3 del curso pasado.

Ilustración 3. Ejemplo de bloques de código.

Tipos de datos primitivos

Son los tipos de datos que puedes utilizar para tus variables, atributos y valores de retorno de tus métodos que no necesitas definir en alguna clase. Básicamente lo que hacen es decirle al compilador que cuando se ejecute el programa, se reserve en memoria una locación de un determinado tamaño; por esa razón debes de considerar la siguiente tabla:

Nota: En Java para trabajar con cadenas de caracteres se utiliza String. Sin embargo, no se lista en la tabla anterior debido a que en este lenguaje las cadenas de caracteres se convierten automáticamente en instancias de la clase String. De hecho, esto se puede apreciar desde la letra mayúscula S en el nombre String y los métodos asociados a las cadenas de caracteres que se usan en Java cómo: lenght(), charAt(), concat(), compareTo(), toLowerCase(), toUpperCase(), replace(), equals(), etc. Toda la documentación de esta clase y sus métodos la puedes encontrar en:

Operadores

Los operadores son símbolos que puedes utilizar en tu programa y que tienen una función u operación asociada. Se clasifican en: asignación, aritméticos, lógicos, relacionales, de incremento, de concatenación y de agrupación. Para continuar con el repaso a continuación te presento la lista con los operadores más comunes que puedes usar para las expresiones de tus programas.

Tabla 4. Operadores aritméticos de Java.

Recuerda: Si divides dos números enteros es muy probable que se genere un número real como lo es el caso de dividir 7 entre 2 cuyo resultado sabemos de antemano es 3.5, en este caso debes de considerar que, si declaras a tus variables como enteras, Java no arrojará ningún error y truncará la parte fraccionaria del resultado, es decir, solo te va a mostrar el 3; por esa razón te sugiero declarar a tus variables como double, en caso de que utilices un operador como la división para no tener pérdida de información. La división por cero genera una ArithmeticException. Algunas expresiones no válidas no generan excepciones ni errores en tiempo de ejecución, sin embargo, se puede mostrar un resultado en pantalla como “NaN”, que significa Not a Number o no es un número, en español.

Tabla 5. Operadores lógicos y relacionales.

Tabla 6. Operadores de incremento y agrupamiento.

Jerarquía de operadores en java 

La jerarquía o también llamada precedencia de operadores indica el orden en el que se van a evaluar a los operadores en una expresión de Java; a mayor jerarquía o nivel del operador éste se ejecutará primero.

Tabla 7. Jerarquía de operadores en Java.

Expresiones

Las expresiones en Java son instrucciones que se construyen con variables, operadores y llamadas a otros métodos que permiten realizar cálculos y por ende obtener resultados en un programa. Estamos seguros de que alguna vez has realizado cálculos con fórmulas en otras asignaturas, pues bien, es exactamente lo mismo solo que para que se puedan ejecutar debes de usar los operadores que se te acaban de mencionar, por ejemplo:

Tabla 8. Expresiones en Java.

Nota: Observa cómo los paréntesis no tienen una operación asociada, solo se usan para alterar la jerarquía o precedencia de operadores y forzar a que se ejecute primero una determinada operación. En el ejemplo de la pendiente de la tabla anterior se puede apreciar el uso de los paréntesis en las restas de la ecuación, ya que de no hacerlo así, el programa calcularía primero la división entre y1 y x2, lo que invariablemente alteraría el resultado de la operación. Otro ejemplo podría ser el siguiente:

a = 3 + 5 * 6 🡪   a = 33

b = (3+5) * 6 🡪   b = 48

Revisa el siguiente video:

Ejecución de un programa en Java

Actividad H5P

Instrucción para el alumno: ¡Es el momento de revisar lo aprendido!