Autor Tema: Ejercicios Resueltos Java invocar métodos de superclases desde subClase CU00692B  (Leído 2934 veces)

nengue

  • Sin experiencia
  • *
  • Mensajes: 9
    • Ver Perfil
Buenas, aquí seguimos, desde ya muhas gracias a los que anteriormente se tomaron el tiempo de verificar mis soluciones presentadas.

Continuando con el curso y la llamada de un método de una superclase desde una subclase ... aquí dejo el código. Como siempre, "no me dejen pasar una" para seguir mejorando.

Algunos comentarios como

//declaracion de atributos
//constructores
//metodos

los sigo realizando aun para acostumbrarme a mantener un orden y en breve los estaria dejando de usar .aunque su uso en codigos mas complejos ayuda a la comprension del mismo

Código de la clase Profesor:

Código: [Seleccionar]
package CU00692B;

/**
 * Clase Profesor , una superclase que tiene como atributos los siguientes campos
 * Nombre, edad y numero de años consolidados
 */
public class Profesor{
    //declaracion de atributos
    private String nombre;
    private int edad;
    private int añosConsolidados;

    //Constructos
    /**
     * Constructor de la clase Profesor sin parametrizar
     * todas sus variables se iniciaran por defecto en 0 y ""
     */
    public Profesor(){
        nombre="";
        edad=0;
        añosConsolidados=0;
    }

    /**
     * Constructor de la clase Profesor parametrizada
     * @param nombre Nombre del profesor
     * @param edad Edad del profesor
     * @param añosConsolidados Los años consolidados del profesor
     */
    public Profesor(String nombre,int edad, int añosConsolidados){
        this.nombre=nombre;
        this.edad=edad;
        this.añosConsolidados=añosConsolidados;
    }
    //metodos de la clase Profesor
    /**
     * setNombre Permite establecer o modificar el nombre del profesor
     */
    public void setNombre(String nombre){
        this.nombre=nombre;
    }

    /**
     * setEdad Permite establecer o modificar la edad del profesor
     */
    public void setEdad(int edad){
        this.edad=edad;
    }

    /**
     * setAñosConsolidados permite establecer o modificar los años consolidados
     */
    public void setAñosConsolidados(int añosConsolidados){
        this.añosConsolidados=añosConsolidados;
    }

    /**
     * getNombre Devuelve el nombre del profesor
     */
    public String getNombre(){
        return nombre;
    }

    /**
     * getEdad Devuelve la edad del profesor
     */
    public int getEdad(){
        return edad;
    }

    /**
     * getAñosConsolidados devuelve los años consolidados del profesor
     */
    public int getAñosConsolidados(){
        return añosConsolidados;
    }

    /**
     * obtenerSalarioBase Devuelve el valor del salario base  del profesor
     */
    public double obtenerSalarioBase(){
        double salarioBase=(725 + (añosConsolidados*33.25));
        return salarioBase;
    }
}


Código de la clase profesorEmerito

Código: [Seleccionar]
package CU00692B;

/**
 * Clase ProfesorEmerito,sub-tipo(sub-clase) de clase Profesor
 * hereda todos sus atributos y añade un atributo especifico
 */
public class ProfesorEmerito extends Profesor{
    //declaracion de atributos
    private int añosEmerito;
    //constructor
    /**
     * Constructor sin parametrizar , inicializa todos los valores por defecto en 0 y ""
     */
    public ProfesorEmerito(){
        super();
        añosEmerito=0;
    }

    /**
     * Constructor parametrizado de la clase ProfesorEmerito
     * @param nombre Nombre del Profesor
     * @param eda Edad del profesor
     * @param añosConsolidados Años consolidados del profesor
     * @param añosEmerito Años emeritos del profesor
     */
    public ProfesorEmerito(String nombre,int edad,int añosConsolidados,int añosEmerito){
        super(nombre,edad,añosConsolidados);
        this.añosEmerito=añosEmerito;
    }
    //metodos
    /**
     * setAñosEmerito Permite establecer o modificar los años Emeritos del profesor
     */
    public void setAñosEmerito(int añosEmerito){
        this.añosEmerito=añosEmerito;
    }

    /**
     * getAñosEmerito devuelve el valor de añosEmerito
     */
    public int getAñosEmerito(){
        return añosEmerito;
    }

    /**
     * obtenerSalarioBase Devuelve el salario base mas un plus por años emerito
     */
    public double obtenerSalarioBase(){
        double salarioBase=(super.obtenerSalarioBase() + (47.80*añosEmerito));
        return salarioBase;
    }

}


Como consulta añadida me gustaria que me indicaran si esta forma sería correcta tambien

Código: [Seleccionar]
  public double obtenerSalarioBase(){
        return (super.obtenerSalarioBase() + (47.80*añosEmerito));
}

Evitaría la declaracion de una variable local, pero entiendo que no en todos los casos
seria posible evitar la declaracion de la misma, ya sea por necesidad o por legilibilidad.
       
« Última modificación: 24 de Enero 2021, 14:05 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, he revisado el ejercicio y lo veo muy bien resuelto.

Sobre lo que comentas de si usar return (super.obtenerSalarioBase() + (47.80*añosEmerito)); sería correcto, la respuesta es que sí, seguramente muchos programadores lo harían así por economía o para ir más rápido. Sin embargo a mí me gusta más como lo has hecho tú porque es más legible y más entendible.

Una recomendación que solemos hacer es evitar el uso de eñes en identificadores como nombres de métodos o de variables. En lugar de añosConsolidados usaríamos annosConsolidados. El motivo es que a la larga cuando se migran los programas o se ejecutan en otras plataformas usar caracteres con tildes o eñes puede acabar generando problemas y una forma de evitarlo es simplemente no usarlos ni aunque sean permitidos.

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