Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: LuisM en 28 de Septiembre 2017, 17:37
-
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
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
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
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)
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
-
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
-
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