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.

Compartir

5 comentarios

  1. Andres

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

  2. Yaxiel Victores

    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. carlos

    y si lo que quiero de tomar del arreglo son los strings?

  4. Raimon

    Como harias para crear objetos a traves del constructor pasandole como argumentos vectores ? Es decir, yo lo que quiero crear en el main son objetos automaticamente de una clase ya hecha, invoco al constructor de la clase, y le paso dos vectores como argumentos, para que el coga cada posicion del vector, y haga un objeto con ella, guardando en cada objeto, un parametro del vector, como atributos del objeto, lo intento controlar con un for, pero me repite el mismo dato todo el rato.
    Gracias

  5. Jesús Vidaurre

    Crear un programa que permita administrar a los alumnos del curso de Taller de Programación 1 que
    acepte las siguientes operaciones:
     Ingresar los datos de un alumno (código, nombre, sexo y nota)
     Listar los alumnos ingresados
     Mostrar el promedio general por sexo
    2. Crear un programa que permita administrar los alumnos del curso de Taller de Proyectos que acepte las
    siguientes operaciones:
     Ingresar los datos de un alumno (código, nombre, sexo y edad)
     Listar los alumnos ingresados
     Mostrar la cantidad de alumnos mujeres
     El alumno con la edad máxima y la edad mínima con sus datos completos
    3. Crear un programa que permita administrar un inventario valorizado que acepte las siguientes
    operaciones:
     Ingresar los datos del producto (código, nombre del producto, cantidad, unidad medida, costo)
     Listar los productos
     Mostrar la cantidad valorizada por producto
     Mostrar el producto de stock máximo y el stock mínimo con sus costos valorizados

Deja una respuesta

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