Autor Tema: Ejemplo reutilización código y herencia en Java super sobreescritura CU00692B#  (Leído 6551 veces)

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Buenas noches, dejo mi respuesta al ejercicio, no tenía mas cosa (ni menos) que comprobar como actua java con los metodos sobreescritos.

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



Clase Profesor

Código: [Seleccionar]


/**
 * Clase Profesor. Ejercicio 692
 *
 * @author Lorenzo31
 * @version 22.04.2015
 */
public class Profesor {
   
    private String nombre;
    private int edad;
    private int yearsConsolidados;
   
    //Constructor
    public Profesor(String nombre, int edad, int yearsConsolidados){
        this.nombre = nombre;
        this.edad = edad;
        this.yearsConsolidados = yearsConsolidados; }
       
    //Getters
    public String getNombre(){ return nombre; }
    public int getEdad(){ return edad; }
    public int getYearsConsolidados(){ return yearsConsolidados; }
   
    //Setters
    public void setNombre(String nombre) { this.nombre = nombre; }
    public void setEdad(int edad){ this.edad = edad; }
    public void setYearsConsolidados(int yearsConsolidados){ this.yearsConsolidados = yearsConsolidados; }
   
    //Método calculo salario base
    public double obtenerSalarioBase(){ return (725 + (yearsConsolidados * 33.25)); }
   
    //Método mostrar datos
    public String mostrarDatos(){ return ("El nombre del profesor es: " + nombre + "\n su edad es: " + edad
                                          + "\n sus años consolidados son: " + yearsConsolidados); }

}//cierre clase
       



Clase ProfesorEmerito

Código: [Seleccionar]


/**
 * clase ProfesorEmerito extiende a Profesor. Ejercicio 692
 *
 * @author Lorenzo31
 * @version 22.04.2015
 */
public class ProfesorEmerito extends Profesor {
   
    private int yearsEmerito;
   
    //Constructor
    public ProfesorEmerito(String nombre, int edad, int yearsConsolidados, int yearsEmerito){
        super(nombre, edad, yearsConsolidados);
        this.yearsEmerito = yearsEmerito; }
         
    //Setter
    public void setYearsEmerito(int yearsEmerito){ this.yearsEmerito = yearsEmerito; }
   
    //Getter
    public int getYearsEmerito(){ return yearsEmerito; }
   
    //Método sobreEscrito obtener salario base
    public double obtenerSalarioBase(){ return (super.obtenerSalarioBase() + ( yearsEmerito * 47.80 )); }
   
    //Método mostrar datos
    public String mostrarDatos(){ return (super.mostrarDatos() + "\n los años de profesor Emérito son: " + yearsEmerito); }
   
} //cierre clase



Clase TestSobreescrito

Código: [Seleccionar]


/**
 * Clase test ejercicio 692
 *
 * @author Lorenzo31
 * @version 22.04.2015
 */
public class TestSobreescrito {
   
    public static void main (String [] args) {
       
        Profesor profesor1 = new Profesor("Pedro Lopez", 50, 10);
        Profesor profesor2;
       
        profesor2 = new ProfesorEmerito("Juan Gomez", 60, 20, 6);
       
        System.out.println(profesor1.mostrarDatos());
        System.out.println(profesor1.obtenerSalarioBase());
       
        System.out.println(profesor2.mostrarDatos());
        System.out.println(profesor2.obtenerSalarioBase());
    }
}
« Última modificación: 24 de Abril 2015, 21:15 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Lorenzo, has creado un código donde haces un buen uso de todos los conceptos vistos en el curso. Para quienes lean o estudien el ejercicio, es interesante ver cómo la herencia favorece la reutilización de código como vemos en los métodos sobreescritos invocando a super, por ejemplo:

    public double obtenerSalarioBase(){ return (super.obtenerSalarioBase() + ( yearsEmerito * 47.80 )); }


En la subclase se invoca super para recuperar lo que hace la superclase y se añade aquello que es específico de la subclase.

Todo bien!

Saludos

 

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