Autor Tema: Palabra clave super:invocar métodos de superclases desde subclases Java CU00692B  (Leído 2568 veces)

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
Hola a todos ! Dejo el código del ejercicio propuesto en la clase CU00692B del tutorial pdf de programación Java. Desde ya muchas gracias por la atención. Saludos

Luis

EJERCICIO
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]
public class Profesor {  //Ejemplo aprenderaprogramar.com
    private String nombre;
    private int edad;
    private int aniosConsolidados;
    private double salarioBase;
    public Profesor (String nombre, int edad, int aniosConsolidados) {
        this.nombre=nombre; this.edad=edad; this.aniosConsolidados=aniosConsolidados;
        salarioBase=0;
        obtenerSalarioBase();
    }
    public double obtenerSalarioBase(){
        salarioBase=(725+aniosConsolidados)*33.25;
        return salarioBase;}
    public void mostrarDatos() {
        System.out.println ("Datos Profesor. nombre: "+nombre+", edad: "+edad+", consolidados :"+aniosConsolidados);   }
    public void mostrarSalario(){
        System.out.println ("Salario base profesor:"+salarioBase);
    }
} //Cierre de la clase

Clase ProfesorEmerito
Código: [Seleccionar]
public class ProfesorEmerito extends Profesor {  //Ejemplo aprenderaprogramar.com
    private int aniosEmerito;
    private double salarioBase;
    public ProfesorEmerito (String nombre, int edad, int aniosConsolidados, int aniosEmerito) {
        super(nombre, edad, aniosConsolidados);
        this.aniosEmerito=aniosEmerito;
        obtenerSalarioBase();
    }
    public double obtenerSalarioBase(){
        salarioBase = super.obtenerSalarioBase() + (47.80*aniosEmerito);
        return salarioBase;
    }
    public void mostrarDatos() {
        super.mostrarDatos();
        System.out.println ("Años como profesor emérito :"+aniosEmerito);   }
    public void mostrarSalario(){
        System.out.println ("Salario base profesor emérito:"+salarioBase);
    }
   
} //Cierre de la clase

Clase ListinProfesores
Código: [Seleccionar]
import java.util.ArrayList; //Ejemplo aprenderaprogramar.com
public class ListinProfesores{
    private ArrayList <Profesor> listinProfesores;
    //Constructor
    public ListinProfesores () {
        listinProfesores = new ArrayList <Profesor> (); }
    //Métodos
    public void addProfesor (Profesor profesor) {
        listinProfesores.add(profesor);}     // Cierre método addProfesor
    public void listar() {
        System.out.println ("Se procede a mostrar los datos de los profesores existentes en el listín");
        for (Profesor tmp: listinProfesores) {       //Uso de for extendido
            tmp.mostrarDatos(); tmp.mostrarSalario();}
    } //Cierre método
} //Cierre de la clase

Clase Test (método main)
Código: [Seleccionar]
public class Test {
    public static void main (String [ ] Args) {
        Profesor profesor1 = new Profesor ("Juan Lopez", 53, 25);
        ProfesorEmerito emerito1 = new ProfesorEmerito("José Luis Perez", 54, 20, 10);
        ListinProfesores listin1 = new ListinProfesores ();
        listin1.addProfesor(profesor1);
        listin1.addProfesor(emerito1);
        listin1.listar();} //Cierre del main
} //Cierre de la clase
« Última modificación: 18 de Noviembre 2017, 18:44 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, en la clase Profesor habría que corregir

Donde dice salarioBase=(725+aniosConsolidados)*33.25;

Debe decir salarioBase=725+aniosConsolidados*33.25;

Esto es así porque es tal y como dice el enunciado 725 + el número de años consolidados multiplicado por 33.25, donde la multiplicación se ejecuta con prioridad respecto a la suma. Es decir, un salario base, más un importe por cada año consolidado.

Lo demás lo veo todo correcto

Saludos

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
Muchas gracias Alex !! y todavía no entiendo cómo confundí 725 con años ya que es un importe. Y el enunciado es claro.
Un saludo,
Luis

 

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