Autor Tema: Ejercicio! entrega CU00692B palabra clave super con herencia java  (Leído 3613 veces)

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
 Ejercicio:
Citar
Considera que estás desarrollando un programa Java donde trabajas con la superclase Profesor y la
subclase ProfesorEmerito. Crea el código para estas clases que cumpla los requisitos que indicamos.

Como atributos de la superclase tendremos nombre (String), edad (int) y añosConsolidados (int). Un
método de la superclase será double obtenerSalarioBase () que obtendrá el salario base como (725 + el
número de años consolidados multiplicado por 33.25).

En la subclase se trabajará con el campo adicional añosEmerito. Queremos hacer lo siguiente:
sobreescribir el método obtenerSalarioBase () en la subclase para calcular el salario base del profesor
emérito invocando mediante la palabra clave super al cálculo del salario base de Profesor y añadiéndole
la cantidad de (47.80 * añosEmerito).
public class Profesor
Código: [Seleccionar]
public class Profesor
{
    private String nombre, apellidos;
    private int edad, añosConsolidados;
    //Constructor general
    public Profesor()
    {
      nombre = "";
      apellidos = "";
      edad = 0;
      añosConsolidados = 0;
    }
    //Constructor con parametros
    public Profesor(String nombre, String apellidos, int edad, int añosConsolidados)
    {
      this.nombre = nombre;
      this.apellidos = apellidos;
      this.edad = edad;
      this.añosConsolidados = añosConsolidados;
    }
    //Setters
    public void setNombre(String nombre)
    {
      this.nombre = nombre;
    }
     public void setApellidos(String apellidos)
    {
      this.apellidos = apellidos;
    }
    public void setEdad(int edad)
    {
      this.edad = edad;
    }
    public void setAñosConsolidados(int añosConsolidados)
    {
      this.añosConsolidados = añosConsolidados;
    }   
    //Getters
    public String getNombre()
    {
      return nombre;
    }
    public String getApellidos()
    {
      return apellidos;
    }
    public int getEdad()
    {
      return edad;
    }
    public int getAñosConsolidados()
    {
      return añosConsolidados;
    }
    //Otros metodos
    public double obtenerSalarioBase()
    {
     return  725 + (añosConsolidados * 33.25);
    }
    public String mostrarInfoProf()
    {
      return "Nombre: " + nombre + "\nApellidos: " + apellidos + "\nEdad: " + edad + " años" + "\nAños consolidados: " +
      añosConsolidados + "\nSalario base: US$" + obtenerSalarioBase();
    }
}
public class ProfesorEmerito extends Profesor
Código: [Seleccionar]
public class ProfesorEmerito extends Profesor//En esta clase se implementa la herencia.
{
    private int añosEmerito;
    //Constructor general
    public ProfesorEmerito()
    {
      super();
      añosEmerito = 0;
    }
    //Constructor con parametros
    public ProfesorEmerito(String nombre, String apellidos, int edad, int añosConsolidados, int añosEmerito)
    {
      super(nombre, apellidos, edad, añosConsolidados);
      this.añosEmerito = añosEmerito;
    }
    //Setter
    public void setAñosEmerito(int añosEmerito)
    {
      this.añosEmerito = añosEmerito;
    }
    //Getters
    public int getAñosEmerito()
    {
      return añosEmerito;
    }
    //Otros metodos
    @Override public double obtenerSalarioBase()
    { //En este metodo se implementa la sobre escritura.
      return super.obtenerSalarioBase() + (47.80 * añosEmerito);
    }
    @Override public String mostrarInfoProf()
    { //En este metodo se implementa la sobre escritura.
      return "Nombre: " + getNombre() + "\nApellidos: " + getApellidos() + "\nEdad: " + getEdad() + " años" + "\nAños consolidados: " +
      getAñosConsolidados() + "\nAños emerito: " +
      añosEmerito + "\nSalario base: US$" + obtenerSalarioBase();
    }
}
public class TestPolimorfismoHerenciaYSobreEscritura
Código: [Seleccionar]
public class TestPolimorfismoHerenciaYSobreEscritura
{
    public static void main(String []args)
    {
      Profesor p1 = new Profesor("Felipe", "Duran Contreras", 35, 10);
      Profesor pE1 = new ProfesorEmerito("Adrian", "Romero Garcia", 48, 20, 12);//En la creacion de este objeto se implementa el polimorfirmo.
      String linea = "____________________________";
      System.out.println("Informacion sobre profesores:\n" + linea + "\n\t  Profesor\n" + linea + "\n" + p1.mostrarInfoProf() +
      "\n" + linea + "\n" + "      Profesor emerito\n" + linea + "\n" + pE1.mostrarInfoProf() + "\n" + linea + "\nFin de información a mostrar.");
    }
}
Saludos!
« Última modificación: 09 de Septiembre 2014, 09:37 por Alex Rodríguez »
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:Ejercicio! entrega CU00692B
« Respuesta #1 en: 08 de Septiembre 2014, 18:25 »
Lo veo todo correcto, buen uso de las palabras this y super, solo una cosita.... quita las Ñ´s por favor.... XDD y con el @Override, te vuelvo a comentar, por claridad, ponlo una linea anterior a la signatura del método, es que mezclas una anotacion con la signatura del método esto no es muy claro.
El día que trabajes con hibernate y tengas que poner 3 o 4 anotaciones por cada atributo o método, pondrás las 3 o 4 anotaciones en la misma linea...??  las anotaciones por claridad, como te digo, que vayan en una linea aparte ellas solas, jeje.

Un saludo!!

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejercicio! entrega CU00692B
« Respuesta #2 en: 09 de Septiembre 2014, 00:55 »
 Parece que eres alérgico a las Ñ´s dongo  ;D
Ignoraba que podrían ocasionar problemas, tomare en cuenta sustituirlas (en el codigo)

En cuanto a @Override, también tomo nota.

Saludos!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".