Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con Arrays

Estas en el tema de Ayuda con Arrays en el foro de Java en Foros del Web. Hola, tengo dudas con el siguiente ejercicio ya que no entiendo muy bien lo que me estan pidiendo, la clase persona y empleado ya las ...
  #1 (permalink)  
Antiguo 15/11/2008, 10:43
 
Fecha de Ingreso: noviembre-2008
Mensajes: 1
Antigüedad: 15 años, 5 meses
Puntos: 0
Ayuda con Arrays

Hola, tengo dudas con el siguiente ejercicio ya que no entiendo muy bien lo que me estan pidiendo, la clase persona y empleado ya las tengo creadas respecto a eso no hay problema, mi duda viene con la clase Prueba ya que nose como crear un vector de dos personas cuya primera componente sea una persona y la segunda un empleado y despues llamar al metodo de escribir componentes del vector. Os dejo el enunciado y si me podeis ayudar solo en esa última parte, lo demás ya lo tengo creado. Os dejo mis clases persona y empleado por si os sirven para ayudarme, muchas gracias:

Enunciado:

Tenemos una empresa en la que queremos guardar los datos de los empleados. Para ello necesitamos
crear una clase Empleado en la que guardaremos su nombre, número de hijos y fecha de nacimiento
además de un número que representa la categoría de su puesto de trabajo. Como un empleado es una
persona, la clase Empleado derivará de la clase Persona. En un fichero aparte crea la clase Empleado e
inserta métodos para construir un empleado, leer su categoría y cambiar su categoría. Además, redefine el
método mostrarDatos() para que incluya también la categoría del empleado.
Para probarlo créate un tercer fichero Prueba.java. Contendrá un método main en el que se cree un vector
de dos personas. En la primera componente pon una Persona y en la segunda un Empleado. A
continuación se llamará al método de escribir los componentes del vector.
Compila Prueba y Empleado y ejecuta Prueba


Código:
public class Persona{
	
	static int numObj;

	private String nombre;
	private int hijos;
	
	public void setNombre (String nom) {nombre=nom;}
	public void setHijos (int hij) {hijos=hij;}
	
	public String getNombre() {return nombre;}
	public int getHijos() {return hijos;}
	
	Persona(String nombre,int hijos){
		
		this.nombre=nombre;
		this.hijos=hijos;
		numObj++;
		
		}
		
	Persona(){
	
		nombre="Anónimo";
		numObj++;
		
		}
	
	

	public void mostrarDatos(String nombre,int hijos){
		
		this.nombre=nombre;
		this.hijos=hijos;
		
		System.out.println(nombre+" "+hijos);
		}
		
		
		public void mostrarDatos(){
			
			System.out.println(nombre+" "+hijos);
			}

    }

Código:
import util.*;

public class Empleado extends Persona{


String fecha_nac;
int categoria;

public void construir_emple(){
	nombre=Consola.pideString("Introduce el nombre: ");
	hijos=Consola.pideInt("Introduce el numero de hijos: ");
	fecha_nac=Consola.pideString("Introduce su fecha de nac. ");
	categoria=Consola.pideInt("Introduce su categoría: ");
	}
	


public void mostrar_categoria(){

	System.out.println("La categoria del empleado " +nombre+" es: "+categoria);
	}
	
public void cambiar_categoria(){
	categoria=Consola.pideInt("Introduce una nueva categoría para " +nombre+" : ");
	}
	
	public void mostrarDatos(){
		System.out.println(nombre+" "+hijos+" "+fecha_nac+" "+categoria);
		}



}//fin clase Empleado
  #2 (permalink)  
Antiguo 16/11/2008, 13:18
 
Fecha de Ingreso: enero-2008
Mensajes: 17
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Ayuda con Arrays

Bueno, te dejo unas indicaciones. Lo que tienes que hacer es crear un array del supertipo de la herencia, es decir Persona, y en el añades la persona y el empleado creándolos y agregándolos al array.

Código:
Persona[] array = new Persona[2];

Persona p = new Persona ();
Empleado e = new Empleado ();

array[0] = p;
array[1] = (Persona)e; // aquí estariamos perdiendo la funcionalidad de la clase Empleado.
A la hora de recuperarlo tendrás que hacer un casting para poder volver a acceder a los métodos de empleado:

Código:
Empleado e2 = (Empleado)array[1];
e2.mostrarDatos ();
Espero que te ayude un poco la idea.

Para hacerlo más correcto, yo usaría el operador instanceof, y de paso te pongo lo que creo que pides:

Código:
for (int x = 0; x < array.length(); x++){ 
    if (array[x] instanceof Empleado){
        Empleado e = (Empleado)array[x];
        e.mostrarDatos ();
    } else {
        if (array[x] instanceof Persona) {
            Persona p = array[x];
            p.mostrarDatos ();
        }
    }
}
Espero que la sintaxis sea correcta, ya que lo he heho a pelo, sin probar el código.

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:30.