Programar en el lenguaje Java requiere la comprensión del desarrollo Orientado a Objetos, el manejo de referencias y el modelo de memoria del computador. Este artículo recopila los detalles para escribir Clases Métodos Atributos y Código básico en Java.

1. Clases en Java

Las clases son las piezas fundamentales de programación, aunque es posible aprender a programar en Java y sin adentrarse en los detalles de la Programación Orientada a Objetos.

En la Figura 1, se muestra la diferencia existente entre las aproximaciones a la programación siendo los lenguajes de bajo nivel aquellos que se encuentran más cerca de la máquina y los de alto nivel aquellos que se encuentran cerca del humano (programador).

1.1. Atributos y Métodos

Los atributos y métodos se conocen como miembros y componen las clases en Java.

  • Atributos: también llamados propiedades, variables o campos están relacionados con el estado y los datos que se podrán almacenar.
  • Métodos: también llamados operaciones, procedimientos o funciones están relacionados con las acciones que se podrán ejecutar, aquí se encuentra la lógica.
Lenguajes de Programación Código Java
Figura 1. Lenguajes de alto y bajo nivel

Las clases son simplemente plantillas que ayudan a definir características y normalmente están relacionadas con conceptos concretos o abstractos del contexto que se programa, por ejemplo: Casa, Vehículo, Nota Musical.

En Java una clase se crea típicamente en un archivo, sin embargo, es posible tener varias clases en un mismo archivo, de cualquier manera un archivo solo puede tener la definición de una clase pública (conceptos como público, privado y otros se conocen como modificadores de acceso y se verán más adelante).

Es necesario para Java que el nombre de la clase pública coincida con el nombre del archivo. A continuación se muestra un ejemplo de clase:

public class Person {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

1.2. Anatomía de una Clase en Java

Esta clase inicia con la palabra reservada public la cual indica que esta clase puede ser usada por otras clases, además tiene un atributo denominado name el cual almacena información del nombre de la persona como una secuencia de caracteres o String y al ser privado este atributo solamente puede ser usado al interior de la clase Person, finalmente tiene dos métodos públicos que permiten acceder al atributo privado, de hecho estos métodos son muy conocidos y se llaman métodos getter and setter y permiten que los objetos de la clase accedan leyendo o escribiendo respectivamente a los atributos privados.

1.3. Métodos get y set: encapsulamiento

Es muy común no permitir el acceso directo de los objetos a los atributos ya que a menudo se quiere implementar una lógica antes de escribir o leer que permita hacer validaciones y transformaciones, por ejemplo si la clase fuera Hora podríamos pensar en almacenarla como la cantidad de milisegundos que han transcurrido desde media noche, en este sentido solamente tendríamos un atributo, pero los métodos set y get podrían establecer y devolver la hora usando un String que la represente. El uso de los métodos getter y setter se conoce como encapsulamiento.

Cuando construimos clases en Java debemos crear un archivo por cada clase, es obligatorio que el nombre del archivo coincida con el nombre de la clase marcada como pública, en este sentido en un mismo archivo pueden existir más de una clase, pero solamente una de ellas puede ser marcada como pública.

Revisa más detalles de encapsulamiento aquí.

2. Objetos en Java

Los objetos por su parte, son instancias de las clases, es decir, podemos asimilar la clase como un molde y los objetos son aquellas creaciones que salen del molde, por lo tanto cada objeto tiene su propia copia de los atributos y aunque los objetos de una misma clase tengan los mismos atributos podrán diferir en sus valores de forma independiente. Crear un objeto también se conoce como instanciar una clase y para ello se usa la palabra reservada new como se muestra a continuación en el listado de código 2.

Person p1 = new Person()

Es importante reconocer la palabra reservada new la cual instancia la clase y crea un nuevo objeto en memoria con su propia copia de las variables o atributos de la clase.

El acceso a los miembros del objeto se realiza utilizando el operador punto (.) de esta manera y basados en los modificadores de acceso un objeto puede utilizar sus atributos y métodos.

3. Métodos en Java

Los métodos y tomando nuestra clase de ejemplo Person son piezas reutilizables de lógica que están programados usando programación estructurada y los cuales en su primera línea (también llamada firma o prototipo) especifican el nivel de acceso, en el ejemplo del código 1 los métodos son públicos, indicando que estos métodos se pueden llamar desde cualquier objeto, continuando con el tipo de retorno, es decir, el tipo de dato que es devuelto a quien lo llame, a continuación un identificador, es decir, un nombre que se le da al método y finalizando con una lista de parámetros separados por coma, opcionalmente los métodos terminan con la especificación de los tipos de errores que pueden lanzar.

3.1. Tipo de Retorno en los métodos

El tipo de retorno y los parámetros o en otras palabras, la salida del método y las entradas del método, siendo un caso particular de lo anterior cuando un método no devuelve nada en cuyo caso se utiliza la palabra reservada void, tal como se ha hecho en el método setName. Como nota al margen, se debe considerar que Java es un lenguaje fuertemente tipado, lo que significa que Java verifica que los tipos de datos de las expresiones de retorno o de las expresiones de llamados a métodos que asignan valores a parámetros coincidan, en nuestro ejemplo podemos ver como el tipo de retorno del método getName() es el mismo que la expresión return que en este caso es String.

4. Modificadores de acceso de Métodos

Los modificadores de acceso permiten establecer el nivel de visibilidad de una clase, método o atributo en Java, este nivel de visibilidad esta relacionado con los lugares del código donde los podemos referir, esto es lo que se conoce como nivel de exposición a posibles llamadores y por lo general hay que tratar de mantener este nivel de exposición al mínimo posible utilizando lo que conocemos como principio del menor privilegio, es mejor quitar todos los permisos e ir agregando a medida que se necesitan.

4.1. Niveles de acceso de los métodos

Java posee cuatro niveles de acceso que son los siguientes y que se describen del más restrictivo al menos restrictivo.

4.2. Privado

Se utiliza con la palabra reservada private, e indica que los atributos o métodos solamente pueden ser llamados en la propia clase donde se definen.

4.3. Protegido

Se utiliza con la palabra reservada protected, e indica que los atributos o métodos solamente pueden ser llamados en la propia clase donde se definen o en clases derivadas (haciendo uso de herencia).

4.4. Por defecto

No se requiere especificar ninguna palabra clave, solo basta con definir la clase, método o atributo y significa que solamente las propia clase o clases del mismo paquete podrán acceder a dichos miembros.

4.5. Público

Es el acceso más permisivo de todos y para ello se utiliza la palabra reservada public que indica que cualquier objeto en cualquier clase puede acceder a las clases, métodos o atributos etiquetadas con este modificador de acceso.

5. Comentarios en Java

En todo lenguaje de programación es importante realizar comentarios a fin de permitir documentar el código, estas es una de las prácticas más convenientes y que todo buen programador tiene en cuenta.

/*
* Este es un comentario de varias líneas
*/
// Este es un comentario de una línea
/**
* Este es un comentario con propósitos de documentación
*/

Los comentarios son instrucciones no ejecutable que es usado para clarificar el código. Los tipos de comentarios son los siguientes.

5.1. Comentario de documentación

Utilizan etiquetas especiales para que la utilidad javadoc genere automáticamente archivos HTML que son un compendio de la documentación, estos comentarios se utilizan especialmente con las clases, métodos y atributos.

5.2. Comentarios una o varias líneas

Los comentarios de una línea comentan todo lo que existe a la derecha, por lo que en ocasiones se ponen al final de declaraciones de variables, en general, la practica común utilizada es dejar los comentarios en líneas independientes.

6. Método main Código Java

Los programas de Java son ejecutados usando un interprete de instrucciones conocido como Java Virtual Machine (JVM), es decir, no es directamente el sistema operativo y el procesador. La JVM busca las instrucciones iniciales a ejecutar en el método especial denominado main. En general, el método main se escribe como se muestra a continuación.

public static void main(String args[]) {
}

La declaración de este método tiene algunas partes importantes a considerar.

  1. Es público, debido a que el método será invocado por la JVM y por lo tanto debe ser visible desde afuera de la clase donde fue declarado.
  2. Es estático, para ser invocado sin necesidad de instanciar la clase (crear un objeto) donde se encuentre.
  3. No retorna nada debido a que la JVM no espera ninguna respuesta.
  4. Recibe una lista de parámetros en cadenas de texto o String que son los parámetros de la línea de comandos cuando se ejecuta desde una consola, esta lista de parámetros es un arreglo nativo que puede ser escrito alternativamente como String [] args o también String... args. Este último caso se conoce como parámetros variables y simplifica las labores de creación de un arreglo al momento de invocar un método que recibe varios parámetros del mismo tipo.

6.1. Ejecución del main de Java

Si se quiere ejecutar un archivo .class (el resultante de compilar el archivo .java) el mismo deberá tener al menos un método main, para tal efecto se pueden usar los comandos javac Clase.class y java Clase arg1 arg2 respectivamente para compilar y ejecutar desde la línea de comandos.

Para más detalles de ejecución de programas Java sigue este link.

7. Identificadores en Java

Los identificadores son nombres que se ponen a los diferentes elementos del código, son elegidos por el programador y normalmente siguen un estándar, el más usado en Java es Camel Case que consiste en crear los nombres en minúsculas excepto por la primera letra de cada palabra, ayudando a la legibilidad.

Los nombre seleccionados deben ser reflexionados y puestos con calma, escogerlos bien ayuda al mantenimiento y entendimiento del código. Para el caso de paquetes, métodos, atributos, variables se inicia con minúsculas, mientras que las clases y las interfaces comienzan con mayúscula. Todos los identificadores siguen las siguientes reglas:

  • El nombre debe empezar con letra o símbolo $ o _.
  • Caracteres subsecuentes pueden ser números.
  • No pueden ser palabras reservadas.

8. Palabras reservadas en Java

Las palabras reservadas se utilizan para fines particulares del lenguaje y no pueden ser elegidas o cambiadas a justo del programados. Así mismo, las palabras clave no pueden ser usadas por el programador como identificadores, a continuación se muestra una tabla con las diferentes palabras clave.

abstract assert boolean break byte case catch char class const continue default do double else eunum extend false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static stricttfp super switch synchronized this throw throws transient true try void volatile while

9. Artículos de Interés

Link con la especificaciones de Java Formales de Oracle