Arrays de objetos en Java

Hola a todos, hoy os explicare como podemos usar un array de objetos en Java.

Como hemos visto en los arrays, debemos definir el tipo de dato que debe contener, pues también puede contener objetos de una clase. Con las posiciones, podemos hacer igual que si fuera un objeto, como invocar métodos.

Veamos un ejemplo:

public class EmpleadoApp {

	public static void main(String[] args) {

		//Creamos un array de objetos de la clase empleados
		Empleado arrayObjetos[]=new Empleado[3];

		//Creamos objetos en cada posicion
		arrayObjetos[0]=new Empleado("Fernando", "Ureña", 23, 1000);
		arrayObjetos[1]=new Empleado("Epi", "Dermis", 30, 1500);
		arrayObjetos[2]=new Empleado("Blas", "Femia", 25, 1200);

		//Recorremos el array para calcular la suma de salarios

		int suma=0;
		for (int i=0;i<arrayObjetos.length;i++){
			suma+=arrayObjetos[i].getSalario();
		}
		System.out.println("La suma de salarios es "+suma);
	}

}

¿Pero que pasaría si tenemos un array con muchas posiciones? Podríamos usar un bucle for, para crear una serie de objetos. Veamos un ejemplo:

public class EmpleadoApp {

	public static void main(String[] args) {

		//Creamos un array de objetos de la clase empleados
		Empleado arrayObjetos[]=new Empleado[10];

		//Creamos 10 empleados por defecto
		int suma=0;
		for (int i=0;i<arrayObjetos.length;i++){
			arrayObjetos[i]=new Empleado();
		}

		//Lo recorremos y sumamos de nuevo los salarios (600*10)
		for (int i=0;i<arrayObjetos.length;i++){
			//Mostramos la direccion del objeto
			System.out.println(arrayObjetos[i]);
			suma+=arrayObjetos[i].getSalario();
		}
		System.out.println("La suma de salarios es "+suma);
	}

}

En principio, no seria muy útil el ejemplo anterior ya que crea empleados por defecto, un buen método que pida por teclado cada uno de los atributos necesarios para crear el objeto. Veamos como queda:

import javax.swing.JOptionPane;
public class EmpleadoApp {

	public static void main(String[] args) {

		//Creamos un array de objetos de la clase empleados
		Empleado arrayObjetos[]=new Empleado[10];

		//Creamos 10 empleados por defecto
		int suma=0;
		for (int i=0;i<arrayObjetos.length;i++){
			//Indicamos cada uno de los parametros del objeto
			String nombre=JOptionPane.showInputDialog("Escribe un nombre");

			String apellido=JOptionPane.showInputDialog("Escribe un apellido");

			String texto=JOptionPane.showInputDialog("Escribe una edad");
			int edad=Integer.parseInt(texto);

			texto=JOptionPane.showInputDialog("Escribe un salario");
			double salario=Double.parseDouble(texto);

			arrayObjetos[i]=new Empleado(nombre, apellido, edad, salario);
		}

		//Lo recorremos y sumamos de nuevo los salarios
		for (int i=0;i<arrayObjetos.length;i++){
			//Mostramos la direccion del objeto
			System.out.println(arrayObjetos[i]);
			suma+=arrayObjetos[i].getSalario();
		}
		System.out.println("La suma de salarios es "+suma);
	}

}

Recuerda que si tenemos un array de objetos de una superclase, este array puede contener objetos de sus clases hijas.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Etiquetas

13 comments

  1. Gran aporte, pero como seria si quiero sacar el menor salario de entre todos los salarios ingresados? agradezco su respuesta

  2. Buenas noche, tengo un problema relacionado con un arreglo de Objetos, creé una clase Estudiante donde, entre sus atributos se incluye idEstudiante, luego creé una clase Universidad, donde declaro un arreglo de Estudiantes, en este caso no estoy implimentando el idEstudiante como usted lo explica, sino que el usuario lo proporsiona manulamente, bien, mi problema es el siguiente: Cómo puedo identificar si ya un determinado Estudiante fue creado anteriormente? Estoy implimentando este método pero no identifica cuando un objeto Estudiante ya fue creado.

    He estado tratando de implementar este metodo:

    public void MatriculaEstudiante(Estudiante est)
    {
    boolean existe = false;
    for(int i = 0; i < this.estudiante.length; i++) {
    if (this.estudiante[i].getId_est()==est.getId_est()) {
    System.out.println("Ese estudiante fue matriculado anteriormente");
    break;
    } else {
    this.estudiante[i] = est;
    System.out.println("El estudiante fue matriculado con exito");
    break;
    }
    }

  3. hice el mismo codigo y no funciona

Deja un comentario

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