Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lorenzo31 en 22 de Abril 2015, 23:56

Título: Ejemplo reutilización código y herencia en Java super sobreescritura CU00692B#
Publicado por: Lorenzo31 en 22 de Abril 2015, 23:56
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());
    }
}
Título: Re:Ejemplo reutilización código y herencia en Java super y sobreescritura CU00692B
Publicado por: Alex Rodríguez en 24 de Abril 2015, 21:14
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