Ejercicio Herencia Polimorfismo
Ejercicio Herencia Polimorfismo
Ejercicio Herencia Polimorfismo
personal.
Del personal se conoce: nmero de DNI, nombre, apellidos y fecha de ingreso.
Existen dos categoras de personal: el personal contratado y el personal a destajo. Los empleados
contratados tienen un sueldo bsico y un porcentaje adicional en funcin al tiempo laborado: de 0 a 3
aos: 5%; de 4 a 7 aos: 10%; de 8 a 15 aos: 15% y ms de 15 aos: 20%. Los empleados a destajo
tienen un nmero de clientes captados y un monto por cliente captado.
El desarrollo se compone de 3 paquetes: datos, entidades y presentacion.
En el paquete datos se encuentra una clase llamada ListaEmpleados.
Dentro
de
entidades
tenemos
la
clase
padre Empleado de
la
que
heredan
las
Clase Empleado
package entidades;
public class Empleado {
private String dni;
private String nombre;
private String apellidos;
protected java.util.GregorianCalendar fechaIngreso;
public Empleado () {
dni = "00000000";
nombre = "NN";
apellidos = "NA";
fechaIngreso = new java.util.GregorianCalendar(1800,0,1);
}
public Empleado (String dni, String
java.util.GregorianCalendar fechaIngreso) {
this.dni = dni;
this.nombre = nombre;
this.apellidos = apellidos;
this.fechaIngreso = fechaIngreso;
}
public void setDni (String dni) {
this.dni = dni;
}
public String getDni () {
return dni;
}
nombre,
String
apellidos,
Clase EContratado
package entidades;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class EContratado extends Empleado {
private float salarioB;
public EContratado () {
super();
salarioB = 0.0f;
}
public EContratado (String dni, String nombre, String
java.util.GregorianCalendar fechaIngreso, float salarioB) {
super(dni, nombre, apellidos, fechaIngreso);
this.salarioB = salarioB;
}
public void setSalario (float salarioB) {
apellidos,
this.salarioB = salarioB;
}
public float getSalario () {
GregorianCalendar Actual = new GregorianCalendar();
int
anios
=
Actual.get(Calendar.YEAR)
fechaIngreso.get(Calendar.YEAR);
if(fechaIngreso.get(Calendar.MONTH)>Actual.get(Calendar.MONTH)
|| fechaIngreso.get(Calendar.MONTH)==Actual.get(Calendar.MONTH)
&&
fechaIngreso.get(Calendar.DAY_OF_MONTH)>Actual.get(Calendar.DAY_OF_MONTH)
) anios--;
switch(anios)
{
case 0: // break;
case 1:
case 2:
case 3: return 1.05f*salarioB;
case 4:
case 5:
case 6:
case 7: return 1.10f*salarioB;
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15: return 1.15f*salarioB;
default: return 1.20f*salarioB;
}
}
@Override
public String toString () {
return super.toString() + "\nSalario: " + getSalario();
}
}
Clase EDestajo
package entidades;
public class EDestajo extends Empleado {
private int clientesCaptados;
public static final float salarioD = 130.05f;
public EDestajo () {
super();
clientesCaptados = 0;
}
public EDestajo (String dni, String nombre, String
java.util.GregorianCalendar fechaIngreso, int clientesCaptados) {
super(dni, nombre, apellidos, fechaIngreso);
this.clientesCaptados = clientesCaptados;
}
apellidos,
Clase ListaEmpleados
package datos;
import entidades.Empleado;
import java.util.ArrayList;
public class ListaEmpleados {
private ArrayList listaE;
private int posicion; // ltima posicin.
public ListaEmpleados () {
listaE = new ArrayList();
posicion = -1;
}
public void addEmpleado (Empleado empleado) {
listaE.add(empleado);
++posicion;
}
public Empleado getEmpleado (int pos) {
if(pos>=0 && pos<=posicion)
return listaE.get(pos);
return null;
}
public int getPosicion () {
return posicion;
}
@Override
public String toString () {
String cadena = "";
for(int i=0; i<=posicion; i++)
cadena += "\n\tEmpleado " + (i+1) + ":\n" + listaE.get(i);
return cadena;
}
}
Clase Aplication
/*
* Menu de opciones:
* 1. Registrar empleados contratados
* 2. Registrar empleados a destajo
* 3. Mostrar salarios por empleado
* 4. Salir
*/
package presentacion;
import
import
import
import
datos.ListaEmpleados;
entidades.*;
java.util.GregorianCalendar;
java.util.Scanner;
Clase AplicationRunner
package presentacion;
public class AplicationRunner {
public static void main(String[] args) {
new Aplication().Ejecutar();
}
}