Ejercicio Herencia Polimorfismo

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

Enunciado: La empresa XYZ requiere una aplicacin informtica para administrar los datos de su

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

clases EContratado y EDestajo.


Finalmente, el paquete presentacion incluye las clases: Aplication y AplicationRunner.

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,

public void setNombre (String nombre) {


this.nombre = nombre;
}
public String getNombre () {
return nombre;
}
public void setApellidos (String apellidos) {
this.apellidos = apellidos;
}
public String getApellidos () {
return apellidos;
}
public void setFechaIngreso (java.util.GregorianCalendar fechaIngreso) {
this.fechaIngreso = fechaIngreso;
}
public java.util.GregorianCalendar getFechaIngreso () {
return fechaIngreso;
}
@Override
public String toString () {
int dia, mes, ao;
dia = getFechaIngreso().get(java.util.Calendar.DAY_OF_MONTH);
mes = getFechaIngreso().get(java.util.Calendar.MONTH)+1;
ao = getFechaIngreso().get(java.util.Calendar.YEAR);
return "DNI: " + getDni() + "\nNombre y Apellidos: " + getNombre() +
" " + getApellidos() + "\nFecha de ingreso: " +
(dia<=9?"0"+dia:dia) + "/" + (mes<=9?"0"+mes:mes) + "/" + ao;
}
}

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,

public void setClientesCaptados (int clientesCaptados) {


this.clientesCaptados = clientesCaptados;
}
public int getClientesCaptados () {
return clientesCaptados;
}
public float getSalario () {
return salarioD*clientesCaptados;
}
@Override
public String toString () {
return super.toString() + "\nSalario: " + getSalario();
}
}

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;

public class Aplication {


int opt;
ListaEmpleados ListaContratados = new ListaEmpleados();
ListaEmpleados ListaDestajos = new ListaEmpleados();
private static Scanner Lector = new Scanner(System.in);
public static final short CONTRATADO = 0;
public static final short POR_DESTAJO = 1;
private static String Leer(String msje)
{
System.out.print(msje+": ");
return Lector.nextLine();
}
private void Leer(int Type)
{
String dni = Leer("Ingrese su DNI");
String nombre = Leer("Ingrese su nombre");
String apellidos = Leer("Ingrese sus apellidos");
System.out.println("Ingrese fecha de ingreso:");
int anio = Integer.parseInt( Leer("Ao") );
int mes = Integer.parseInt( Leer("Mes (1-12)") );
int dia = Integer.parseInt( Leer("Da") );
GregorianCalendar fechaIngreso = new GregorianCalendar(anio,mes1,dia);
if(Type == CONTRATADO)
{
int salarioB = Integer.parseInt( Leer("Ingrese salario base") );
ListaContratados.addEmpleado( new EContratado(dni, nombre,
apellidos, fechaIngreso, salarioB) );
}else{
int clientesObtenidos = Integer.parseInt( Leer("Ingrese clientes
reclutados") );

ListaDestajos.addEmpleado( new EDestajo(dni, nombre, apellidos,


fechaIngreso, clientesObtenidos) );
}
}
private void MostrarSalarios()
{
System.out.println("Salarios de los empleados contratados: ");
for(int i=0; i<=ListaContratados.getPosicion(); ++i)
System.out.println( ListaContratados.getEmpleado(i) );
System.out.println("Salarios de los empleados por destajo: ");
for(int i=0; i<=ListaDestajos.getPosicion(); ++i)
System.out.println( ListaDestajos.getEmpleado(i) );
}

private int Menu()


{
System.out.print(
"MENU DE OPCIONES\n"
+ "---- -- --------\n"
+ "1. Registrar empleados contratados.\n"
+ "2. Registrar empleados a destajo.\n"
+ "3. Mostrar salarios por empleado.\n"
+ "4. Salir.\n");
return Integer.parseInt( Leer("Seleccione opcin") );
}
private void Accionar(int opt)
{
switch(opt)
{
case 1:
Leer(CONTRATADO);
break;
case 2:
Leer(POR_DESTAJO);
break;
case 3:
MostrarSalarios();
break;
case 4:
System.out.println("Cerrando programa . . .");
break;
default:
System.err.println("Al menos ingresa una opcin vlida ._.");
}
}
public void Ejecutar () {
do{
opt = Menu();
Accionar(opt);
}while(opt!=4);
}

Clase AplicationRunner
package presentacion;
public class AplicationRunner {
public static void main(String[] args) {
new Aplication().Ejecutar();
}
}

También podría gustarte