/**
 * Clase que extiende de persona e implementa el metodo comparable, para poder definir un objeto Estudiante.
 * @author Alejandro Merello - Felipe Diaz
 */
    public class Estudiante extends Persona implements Comparable {
   
   /** 
   * Constructor.  Inicializa un nuevo Estudiante.  
   * @param nombre Nombre completo del estudiante.
   * @param promedioPonderado float con el promedio del alumno.
   */
       public Estudiante(String nombre, float promedioPonderado) {
         super(nombre);
         pp= promedioPonderado;
      }
   /** Metodo que entrega el promedio del estudiante  
   * @return float con el promedio ponderado del estudiante.
   */
       public float getPromedioPonderado() {
         return pp;
      }
   /** Metodo que compara al objeto con otro para ver cual tiene una ponderacion mayor, la prioridad de comparacion es por medio de su promedio ponderado  
   * @param otherObject objeto con el cual se comparara.
   * @return int 0 si son iguales, -1 si el objeto con el cual se compara es mayor y 1 si el objeto con el cual se compara es menor.
   */
       public int compareTo(Object otherObject){      
         Estudiante other = (Estudiante)otherObject;
         if (pp < other.pp) 
            return -1;
         if (pp > other.pp) 
            return 1;
         return 0;
      }
   
   /** Metodo que compara al objeto con otro, para poder saber si estos son los mismos.  
   * @param otherObject objeto con el cual se comparara.
   * @return boolean false si los objetos son distintos. true si los objetos son identicos, en todos los sentidos posibles
   */
       public boolean equals(Object otherObject){  
      // a quick test to see if the objects are identical
         if (this == otherObject) 
            return true;
      
      // must return false if the explicit parameter is null
         if (otherObject == null) 
            return false;
      
      // if the classes don't match, they can't be equal
         if (getClass() != otherObject.getClass())
            return false;
      
      // now we know otherObject is a non-null Employee
         Estudiante other = (Estudiante)otherObject;
      
      // test whether the fields have identical values
         String nombre = super.getName();
         String nombreOtherObject = other.getName();
      //System.out.println(nombre +nombreOtherObject);
         return nombre.equals(nombreOtherObject)&& pp == other.pp;
      }  
   
   /**Genera un string con todos los datos correspondientes a el Estudiante.
   * @return String con nombre del estudiante y su promedio ponderado.
   */
       public String toString() {
         return new String("Nombre:" + super.getName() + "\tPromedio:" +(int)pp);
      }
   
      private float pp;
   }