Objetos en Java

Última actualización: Julio 24

Un objeto es la pieza básica de la programación orientada a objetos y pretende representar una entidad del mundo real. Un programa java típico, creará varios objetos invocando constructores de la clase que corresponda.

Un objeto concreto viene representado por su:

  • Estado: representado por los atributos del objeto que almacenamos en los parámetros del mismo.
  • Comportamiento: representado por los métodos del objeto.
  • Identidad: el nombre que damos al objeto le proporciona una identidad única que le permite interactuar con otros objetos.

Instanciar un objeto

Por instanciar un objeto en Java, entendemos crear un objeto con el comando new, llamando a un constructor de la clase asociada. Decimos que hemos creado una instancia de la clase, un objeto concreto con valores concretos para sus parámetros.

Todas las instancias de objetos de una clase, comparten los mismos parámetros y métodos, como no podía ser de otra forma, ya que todos están creados con el mismo molde definido en la clase.

Para entenderlo bien, vamos a continuar con una actividad, practicando con estos conceptos.

Actividad: Creando objetos

  1. Abre un proyecto Java en el IDE de trabajo
  1. En la post anterior, definimos la clase Coche pero no la usamos. En esta actividad crearemos varios objetos basados en dicha clase.
  2. Lo primero de todo es declarar el objeto, igual que hacemos con una variable primitiva; tenemos que indicar el tipo y darle un nombre. El tipo del Objeto será la clase y el nombre, el que queramos ponerle. Por ejemplo, para declarar el objeto miCoche de tipo Coche, escribiría el siguiente código:
Coche miCoche;
  1. Lo siguiente que hay que hacer es crear el objeto, asignarle valores a sus parámetros. Para ello uso un constructor de la Clase. De momento, el único constructor que tenemos en la Clase Coche es al que le pasamos el número de puertas y el propietario. Si quisiéramos que miCoche tuviera 5 puertas y el propietario fuera Jesús García, usaríamos el siguiente código:
miCoche = new Coche (5,"Jesús Garcia");
  1. El proceso es el mismo que con una variable normal. Primero la declaramos y luego realizamos la asignación, guardando un valor en la variable. Para el objeto es lo mismos, primero lo declaramos y luego asignamos valores a sus parámetros mediante un constructor de la clase. Estos dos pasos los podemos colocar en una única instrucción, al igual que ocurría con las variables.
Coche miCoche = new Coche (5,"Jesús Garcia");
  1. Para acceder a los parámetros del objeto, utilizaremos el nombre del Objeto, un punto y el nombre del parámetro. De momento podemos acceder al parámetro directamente, más adelante veremos como acceder de manera más segura, declarando el parámetro como privado y utilizando un método para acceder al valor del mismo. Sin embargo, por ahora y para entender que son, accederemos a los parámetros del objeto de esta forma. Por ejemplo, si quisieramos dibujar por pantalla el propietario del objeto miCoche, usaríamos el siguiente código.
System.out.println("El propietario es "+ miCoche.propietario);
  1. El programa completo quedaría:
public class MyClass {
    public static void main(String args[]) {

      Coche miCoche;
      miCoche = new Coche (5,"Jesús Garcia");
      System.out.println("El propietario es "+ miCoche.propietario);
    }
}
  1. Si ejecutamos el programa, obtendremos el resultado:
El propietario es Jesús Garcia
  1. Sin embargo, el resto de parámetros del objeto no han sido inicializados. Unicamente hemos definido el número de puertas y el propietario. Veamos que pasa si imprimimos sus valores, para lo que ejecutaríamos el siguiente código:
public class MyClass {
    public static void main(String args[]) {
      Coche miCoche;
      miCoche = new Coche (5,"Jesús Garcia");
      System.out.println("**********dibujando los parámetros *********");
      System.out.println("El propietario es "+ miCoche.propietario);
      System.out.println("La potencia es "+ miCoche.CV + " Caballos de vapor");
      System.out.println("El número de puertas es "+ miCoche.numeroPuertas);
      System.out.println("El año de fabricación es "+ miCoche.añoFabricacion);
      System.out.println("El propietario es "+ miCoche.propietario);
      System.out.println("El color del coche es "+ miCoche.color);
      System.out.println("El tipo de combustible es "+ miCoche.combustible);
      System.out.println("Coche arrancado? "+ miCoche.encendido);
      System.out.println("Porcentaje del tanque lleno:  "+ miCoche.porcentajeTanqueLleno);
    }
}
  1. Al ejecutar el programa, el resultado es:
**********dibujando los parámetros *********
El propietario es Jesús Garcia
La potencia es 0 Caballos de vapor
El número de puertas es 5
El año de fabricación es 0
El propietario es Jesús Garcia
El color del coche es null
El tipo de combustible es null
Coche arrancado? false
Porcentaje del tanque lleno:  0
  1. Puedes apreciar que las variables de tipo integer que no han sido inicializadas tienen un valor de 0, mientras que las de tipo String no inicializadas tienen un valor null.

Accediendo a parámetros y métodos de un objeto

En la anterior actividad, accedimos a los parámetros de un objeto de la Clase Coche, dibujándolos todos por pantalla. La forma de acceder era muy sencilla, utilizábamos el nombre del objeto seguido de un punto y el nombre del parámetro al que queríamos acceder.

Para acceder a los métodos de la clase, el procedimiento es el mismo pero cambiando el nombre del parámetro por el del método, y pasando al método todos los datos que requiera.

Veamos como funciona, practicando con más parámetros y métodos.

Actividad: Trabajando con los parámetros y métodos de una Clase

  1. Abre el IDE de trabajo.
  1. Empleando la clase Coche con la que ya venimos trabajando, vamos a crear dos objetos Coche, cambiar los valores de algunos de sus parámetros y llamar a alguno de sus métodos. Para hacer todo ello, introduce el siguiente código:
public class MyClass {
    public static void main(String args[]) {
      Coche primerCoche;
      Coche segundoCoche;
      primerCoche = new Coche (5,"Jesús Garcia");
      segundoCoche = new Coche (3,"Laura Perez");
      System.out.println("El propietario del primer coche es: "+ primerCoche.propietario);
      System.out.println("El propietario del segundo coche es: "+ segundoCoche.propietario);
    }
}
  1. De momento no hacemos nada nuevo. Creamos dos objetos de tipo coche y los inicializamos utilizando el constructor de la Clase. Luego declaramos los objetos primerCoche y segundoCoche. Instanciamos los dos objetos declarados usando el constructor de la Clase. Y dibujamos los propietarios de los dos objetos coche.
  2. Hay varios parámetros que no hemos empleado, simplemente porque no los inicializamos con el constructor. ¿Cómo podemos trabajar con esos parámetros?
  3. Teclea el siguiente código para practicar el acceso y actualización de los valores de los distintos parámetros:
public class MyClass {
    public static void main(String args[]) {
      Coche primerCoche;
      Coche segundoCoche;
      primerCoche = new Coche (5,"Jesús Garcia");
      segundoCoche = new Coche (3,"Laura Perez");
      System.out.println("El propietario del primer coche es: "+ primerCoche.propietario);
      System.out.println("El propietario del segundo coche es: "+ segundoCoche.propietario);
      
      primerCoche.combustible = "gasolina";
      primerCoche.color = "negro";
      segundoCoche.combustible = "diesel";
      segundoCoche.color = "amarillo";
      System.out.println("El color del primer coche es "+ primerCoche.color + " y utiliza como combustible "+primerCoche.combustible);
      System.out.println("El color del segundo coche es "+ segundoCoche.color + " y utiliza como combustible "+segundoCoche.combustible);
    }
}
  1. Simplemente uso el código de la actividad anterior y añado algo de código al final. Accedo a los parámetros combustible y color de ambos objetos, almacenando valores en los mismos, para luego dibujarlos en pantalla.
  2. Lo siguiente es acceder a un método de la clase. Para practicar con ello, vamos a introducir el siguiente código en la clase MyClass, donde tengo el método main.
public class MyClass {
    public static void main(String args[]) {
      Coche primerCoche;
      Coche segundoCoche;
      primerCoche = new Coche (5,"Jesús Garcia");
      segundoCoche = new Coche (3,"Laura Perez");
      System.out.println("El porcentaje de tanque lleno es: "+ primerCoche.porcentajeTanqueLleno);
      if (primerCoche.porcentajeTanqueLleno<25){
          System.out.println("Vamos a proceder a llenar el tanque");
          primerCoche.llenadoTanque();
      }
      System.out.println("El porcentaje de tanque lleno es: "+ primerCoche.porcentajeTanqueLleno);
    }
}
  1. En la línea 7, dibujo por pantalla el porcentaje del tanque que está lleno, valor del parámetro porcentajeTanqueLleno. En este punto, como no hemos inicializado el parámetro, su valor es cero, valor por defecto para un integer sin inicializar.
  2. Como el porcentaje anterior está por debajo de 25, la comparación de la sentencia if es verdadera y pasamos a ejecutar las instrucciones del bloque if.
  3. En la línea 10, llamamos al método llenadoTanque para el objeto primerCoche. La llamada se hace con el nombre del objeto, seguido de un punto, el nombre del método y le pasamos los parámetros que requiera el método.
primerCoche.llenadoTanque();
  1. En este caso, como el método no requiere parámetros, los paréntesis están vacíos. Puede observarse que siempre que llamemos a un método tendremos que usar paréntesis, aunque no haya que pasarle ningún parámetro. Si no hay paréntesis, significa que lo que estamos llamando no es un método sino un parámetro de la clase.
  2. Finalmente, el porcentaje del tanque lleno se dibuja por pantalla.

NOTA:

Este post es parte de la colección “Java”. Puedes ver el índice de esta colección aquí.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.