Práctica: instanciar un objeto en Java

Como ya te dije en el último artículo, hoy voy a pasar a la práctica, para que aprendas con rapidez cómo crear e instanciar un objeto en Java. Recuerda que, si te suscribes, recibirás de manera totalmente gratuita un curso de IntelliJ, donde podrás practicar todo de lo que te hablo en mis artículos sobre Java.

More...

Puedes también echarle un vistazo a este artículo, para aprender más sobre el orden de inicialización en Java.

Pasos a seguir para instanciar un objeto en Java

Al ser esta un artículo práctico, te recomiendo que utilices un editor de código (IDE). En este artículo yo voy a utilizar Ideone (¿sabes utilizarlo?), pero te recomiendo que empieces desde ya a utilizar herramientas profesionales, como IntelliJ (¿sabes que te regalo un curso de IntelliJ IDEA por suscribirte?).

1º Crea tu "receta" o clase

Crea un archivo .java que contenga la clase

Ya te expliqué en un artículo anterior que una clase Java no es más que un molde o receta con el vas a crear un esquema del objeto que quieres instanciar. Como nosotros vamos a crear una lámpara, vamos a crear el archivo Lampara.java:

El primer paso para instanciar un objeto en Java es crear su clase.

Compártelo

En este caso he creado dos clases, la que voy a instanciar (Lampara) y otra, LamparaCreator, desde la que voy a instanciar los objetos de tipo Lampara. Puedes ejecutar la clase: compila con normalidad e instancia un objeto, pero no hace nada más.

2º Define las características del objeto

En mi ejemplo concreto, voy a crear lámparas que van a tener un color (ya sea el color que se introduzca al instanciar el objeto, o uno predeterminado) y que, por supuesto, se van a poder encender y apagar.

En este paso voy a hacer uso de la encapsulación: es decir, las variables van a ser privadas y se va a acceder a ellas a través de métodos que he creado con este fin.

De nuevo, la clase compila y se instancia el objeto. Pero, ¿qué hacemos con las variables? Hay que inicializarlas creando nuestro propio constructor.

Si te fijas en el constructor, verás que, a la hora de instanciar, tengo dos opciones. Por un lado, puedo instanciar un objeto sin ningún parámetro. Esto quiere decir que utilizo el constructor que no admite parámetros que, a su vez, ejecuta el segundo constructor con el parámetro predeterminado "Roja". Por otro lado, también puedo instanciar un objeto de tipo Lampara utilizando el color que yo quiera.

Además, verás que la variable encendida se queda sin inicializar. Más adelante escribiré un artículo sobre el valor predeterminado de las variables de clase o instancia; en este caso, al ser un boolean, el valor predeterminado es false. Es decir, de manera predeterminada la lámpara está apagada.

La clase es una "receta" en la que vas a describir las características del objeto.

Compártelo

Ya que estás aprendiendo Java, ¿por qué no aprovechas y aprendes de manera simultánea a utilizar IntelliJ IDEA? Suscríbete y ahora mismo te envío un curso gratuito, para que empieces a aprender YA.

Y ya puestos, ¿te imaginas crear en Java el juego de la Serpiente? Si te registras en Skillshare con mi invitación, obtienes GRATIS DOS MESES Premium. Puedes darte de baja cuando quieras (tienes dos meses gratis para aprender, ¡no lo olvides!).

Logo de Skillshare

3º Instanciar un objeto no es toda la historia: ¿y si quieres modificarlo?

¡No te olvides del encapsulamiento!

Habrás observado que las variables que definen el color y el estado (encendida/apagada) de la lámpara son privadas. El siguiente paso para aplicar el encapsulamiento consiste en crear unos métodos para acceder o modificar estas variables.

¿En qué consiste el encapsulamiento?
  • Limita el acceso a las variables, tanto de instancia como de clase (estáticas) mediante la palabra clave private.
  • Crea métodos para acceder y/o modificar las variables. Por convención, el nombre del método que devuelve el valor de la variable comienza por get (o is si es un variable boolean); el nombre del método que establece un nuevo valor comienza por set.

Quizá te preguntes por qué no se puede permitir el acceso directo a las variables. La respuesta es sencilla: si el acceso/modificación de las variables se realiza mediante un método, se puede controlar que el valor que se le vaya a asignar a la variable sea un valor válido.

Un ejemplo gráfico de encapsulamiento

Supón que el objeto es una vivienda, y tú no tienes la llave. No obstante, dentro de la vivienda hay personas que van a realizar tu solicitud: van a contestar a tus preguntas sobre el piso, y van a aceptar tus modificaciones, siempre y cuando se correspondan con un criterio predeterminado. Por ejemplo, no van a pintar las paredes del piso de color negro, pero sí de azul celeste. Si tú tuvieras acceso al piso, podrías hacer y deshacer sin control, y romper o estropear cosas.

En el caso del nuestro objeto de tipo Lampara, el color de la lámpara no se va a poder modificar una vez instanciada, pero sí se va a poder encender y apagar.

Como ves, he agregado unas líneas más de código en el método main de la clase LamparaCreator para no solo instanciar un objeto, sino también para comprobar el color de la lámpara, para comprobar si está encendida o apagada y para cambiarle este último estado.

En un inicio la lámpara está apagada (false); la segunda línea muestra el cambio de estado y, al volver a imprimir el estado de la lámpara, vemos que está encendida (true).

La última línea es el resultado de imprimir el objeto utilizando System.out.println(lampara);

Imprime el objeto que has instanciado

¿Recuerdas la herencia de métodos de la que te hablé? Pues bien, todos los objetos heredan de manera implícita de la clase Object, y heredan una serie de métodos de esta. Uno de ellos, el que voy a utilizar ahora, es toString().

Puedes ejecutar este método directamente, o de manera implícita, imprimiendo un objeto. Como has visto en el ejemplo anterior, si utilizas directamente el método que tu clase hereda de la clase Object, el resultado es poco intuitivo. Es por ello que es recomendable que implementes tu propia versión:

¿Ves el resultado? Ahora te imprime una línea en la que puedes comprobar el estado de la lámpara.

Ejercicios recomendados

Ahora te toca a ti instanciar tantos objetos como puedas, con todas las características que quieras y haciendo uso del encapsulamiento. También puedes instanciar objetos que contengan, a su vez, otros objetos (de hecho, String es un objeto). 

Déjame un comentario si tienes algún problema con tu código 🙂

Los recursos con los que yo superé el OCA con una puntuación del 92%

Si estás en serio con la programación en Java, te recomiendo dos recursos esenciales: el manual de Java que te muestro a la izquierda, y los exámenes de práctica de Enthuware. Son los que yo utilicé para obtener un 92% de puntuación.

También existen cursos en español en Udemy, y en inglés en Skillshare, Lynda y Udacity (en este último, gratuitos). Échale un vistazo al apartado Recursos para Java.

Deja una respuesta 0 comentarios

Utilizamos cookies propias y de terceros para realizar el análisis de la navegación de los usuarios y mejorar nuestros servicios. Si continúa navegando, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información en nuestra política de cookies. ACEPTAR

Aviso de cookies