Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Jorge lopez en 07 de Septiembre 2014, 23:36
-
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).
public class Profesor
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
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
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!
-
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!!
-
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!