¿Qué son las clases en Java?

Las clases en Java (Java Class) son plantillas para la creación de objetos, en lo que se conoce como programación orientada a objetos, la cual es una de los principales paradigmas de desarrollo de software en la actualidad.

Si buscamos Java en la Wikipedia, en la definición que hay disponible para el lenguaje de programación con este nombre encontraremos:

Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible.

Hay algo que destaca de esta breve definición: orientado a objetos. ¿Qué significa?

Según la Wikipedia:

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.

Yo se los voy a definir de una forma más sencilla: es el mejor paradigma de programación creado por el hombre. Permite escribir código de una forma ordenada, reutilizarlo, ordenar la información y hacer mil y una tareas que sin este paradigma serían impensables. Casi todos los lenguajes de programación de hoy poseen este tipo de paradigma, pero según mi parecer Java es sinónimo de lenguaje orientado a objetos. Es una de sus principales características.

Lo que intentaré hacer ahora es explicar qué es una clase a la vez que les transmito algunos tips a la hora de programar en Java. Tenemos que ser educados en la forma como programamos y llevar un orden en lo que hacemos.

¿Qué es una clase?

Las clases en Java son básicamente una plantilla que sirve para crear un objeto. Si imaginásemos las clases en el mundo en el que vivimos, podríamos decir que la clase “persona” es una plantilla sobre cómo debe ser un ser humano. Todos y cada uno de nosotros, los seres humanos, somos objetos de la clase “persona“, ya que todos somos personas. La clase “persona” contiene la definición de un ser humano, mientras que cada ser humano es una instancia u objeto de dicha clase.

Para poder comprender esto debemos verlo con ejemplos. Vamos a crear un proyecto en Netbeans al que voy a llamar JavaExamples.

clases en Java

Vemos que se crea un archivo llamado JavaExamples.java (Java File Class). Esta es la clase principal, la que contiene el método public static void main. Al ejecutarse un programa, lo que se encuentre establecido en el void main será lo primero en ejecutarse. La clase JavaExamples es un ejemplo de una clase, pero en ella no quedan claros los conceptos que me gustaría transmitirles, así que vamos a crear una clase a la que llamaremos “persona”.

clases en Java

clases en Java

Ahora vamos a empezar a construir la clase “persona”.  Necesitamos establecer las propiedades de la clase persona. Como personas, ¿qué propiedades poseemos?

Podríamos hablar de un nombre(s), apellido(s), una fecha en la que nacimos, nuestra edad y género. Hay muchas otras propiedades que podríamos mencionar, pero por ahora solamente tomaremos en cuenta las que hemos listado. Son simplemente características que posee todo ser humano, al menos en la mayoría de los casos.

Para establecer estas propiedades dentro de la clase creamos variables, cuidándonos de asignarle a cada propiedad el tipo de dato que le corresponde. Dicho esto, declaramos las propiedades de la clase persona:

Al establecer las propiedades como private estamos asegurando que dentro de la clase persona se pueda acceder y manipular estas propiedades, pero no así desde otra clase, a menos que el usuario así lo decida y se lleve a cabo a través de métodos públicos. Esto lo veremos un poco más adelante.

***Observación: Es necesario resaltar que, en la medida de lo posible, se debe utilizar nombres en inglés para las variables. Se puede usar el idioma que sea y la estructura que nos plazca, pero se recomienda nombres en inglés y que las variables empiecen con  minúscula. Si se trata de nombres compuestos de dos o más palabras se utiliza la primera palabra en minúscula y seguido la segunda palabra en mayúscula. Ejemplo: para llamar a una variable como Last Name, usamos lastName.

Una vez establecidas las propiedades de la clase creamos un constuctor. El contructor es un método con el nombre de la clase donde se establecen los parámetros y las acciones a ejecutar cuando sea que se cree un nuevo objeto o instancia (objeto e instancia es básicamente lo mismo) de la clase persona. En Java las llamadas “funciones” de otros lenguajes se conocen como “métodos”. Nuestro constructor sería:

Cuando vayamos a construir un objeto de la clase persona nos veremos obligados a establecer una serie de parámetros iniciales. Al crearse la instancia, la primera tarea que llevará a cabo la clase será asignarle los parámetros del constructor a las propiedades de la clase. Estas propiedades, como ya mencionamos, tienen un acceso privado dentro de la clase y no pueden ser modificadas desde el exterior. Sin embargo, podemos otorgarle acceso restringido desde las clases externas a las propiedades de nuestra clase “persona“. Para ello establecemos los llamados getters y setters que son métodos para obtener o modificar propiedades de una clase.

Un ejemplo sería el setter y el getter para la propiedad Nombre.

Al invocar el setter setName(String nombre) estamos cambiando la propiedad name por el parámetro que l introduzcamos, osea nombre. Este método es del tipo void, por lo que no devuelve ningún valor. Simplemente cambia la propiedad name y nada más.

Al invocar el getter getName() vamos a “llamar” a la propiedad name y obtendremos su valor. El método es tipo String, osea que devuelve una cadena de caracteres con el valor que tenga la propiedad name, de ahí que se use el comando return name.

Ahora establecemos los getters y setters para todas las propiedades. Nuestra clase persona quedaría así:

Entonces la estructura interna de nuestra clase “persona” debe lucir así:

clases en Java

 

Esta lista nuestra clase “personas”. Hemos creado una plantilla para “crear” personas. Pero, ¿cómo es esto?

Nos vamos a nuestra clase principal y creamos una instancia de la clase persona.

Esta persona nueva que he creado con el nombre de p1 posee como nombre “Antony”, apellidos “García González”, fecha de nacimiento “30/7/1992”, edad 22 años y sexo masculino.

El objeto p1 me representa a mi. Yo soy Antony García González, pero dentro de Java soy un objeto de nombre p1. Este objeto lo creamos siguiendo la siguiente sintaxis:

Nombre_de_la_clase nombre_de_objeto = new Nombre_de_la_clase(parámetros del constructor).

clases en Java

Las clases en Java siempre se instancian de la misma manera. Instanciar es crear un objeto de una clase. Entonces este objeto que creamos, dentro de nuestra aplicación se llama p1 pero para el usuario del software tiene mi nombre, Antony.

Del objeto p1 podemos “obtener” sus propiedades o bien, “modificar” las mismas. Si escribimos en nuestro código “p1.” nos aparecerá lo siguiente:

clases en Java

Vemos que el asistente de Netbeans nos presenta todos los métodos disponibles para el objeto p1. Esa es la ventaja de las clases en Java que un solo objeto contiene una gran cantidad de métodos en su interior para llevar a cabo distintos procedimientos resumidos en una sola línea de código. Por ahora hemos trabajado con sentencias cortas, solo establecer propiedades u obtener los valores de las mismas. Pero bien podríamos agregar un método que haga algo mucho más complicado y extenso e invocarlo luego de haber creado un objeto de la clase en cuestión. Hay algunos métodos que no establecimos, como equals, hashCode, etc… Estos son métodos heredados de la clase Object. El concepto de herencia lo estudiaremos en otros aportes. Por ahora basta con saber que tenemos a nuestra disposición los getters y setters que establecimos al construir nuestra clase “persona”.

Podemos construir cuantos objetos queramos.

clases en Java

Podemos repentinamente cambiar algún nombre de algún objeto.

clases en Java

Podemos probar los getters imprimiendo en consola la información de p2.

clases en Java

Al usar los getters simplemente obtenemos cadenas de caracteres con los valores de las propiedades establecidas. Estas cadenas las imprimimos en la consola con el System.out.println y en la parte inferior de la ventana vemos los resultados. En la primera impresión el nombre y demás propiedades son los que establecimos en la creación del objeto p2. Luego con los setters cambiamos algunas propiedades y al volver a imprimir vemos que cambió la información.

Espero que haya quedado claro el concepto de clases en Java, su construcción y la creación de objetos. En los siguientes días iré publicando un poco más sobre las mil y una cosas que podemos lograr con la programación orientada a objetos. Saludos.

¿Te gustó? ¡Comparte!Share on LinkedInShare on FacebookTweet about this on TwitterEmail this to someoneShare on RedditShare on TumblrShare on Google+Pin on PinterestBuffer this page