EJEMPLO PROGRAMA
[Link]
public abstract class Empleado implements Payable {
private final String nombre;
private final String apellido;
private final String dni;
private final Fecha fechaNacimiento;
public Empleado(String nombre, String apellido, String dni, Fecha
nacimiento) {
[Link] = nombre;
[Link] = apellido;
[Link] = dni;
[Link] = nacimiento;
}
public String toString() {
return [Link]("%s %s (DNI: %s) - Nac: %s",
nombre, apellido, dni, fechaNacimiento);
}
}
[Link]
public class EmpleadoAsalariado extends Empleado {
private double salarioSemanal;
public EmpleadoAsalariado(String nombre, String apellido, String dni, Fecha nac,
double salario) {
super(nombre, apellido, dni, nac);
[Link] = salario;
}
public double getPaymentAmount() {
return salarioSemanal;
}
public String toString() {
return "Asalariado: " + [Link]() +
[Link](" | Salario: $%.2f", salarioSemanal);
}
}
[Link]
public class EmpleadoPorHora extends Empleado {
private double horas;
private double tarifa;
public EmpleadoPorHora(String nombre, String apellido, String dni, Fecha nac,
double horas, double tarifa) {
super(nombre, apellido, dni, nac);
[Link] = horas;
[Link] = tarifa;
}
public double getPaymentAmount() {
if (horas <= 40)
return horas * tarifa;
else
return 40 * tarifa + (horas - 40) * tarifa * 1.5;
}
public String toString() {
return "Por Hora: " + [Link]() +
[Link](" | Horas: %.2f | Pago: $%.2f", horas, getPaymentAmount());
}
}
[Link]
public class Factura implements Payable {
private String codigo;
private String descripcion;
private int cantidad;
private double precioUnitario;
public Factura(String codigo, String descripcion, int cantidad, double precio) {
[Link] = codigo;
[Link] = descripcion;
[Link] = cantidad;
[Link] = precio;
}
public double getPaymentAmount() {
return cantidad * precioUnitario;
}
public String toString() {
return [Link]("Factura: %s (%s) x%d - $%.2f",
codigo, descripcion, cantidad, getPaymentAmount());
}
}
fecha
public class Fecha {
private int dia;
private int mes;
private int anio;
public Fecha(int dia, int mes, int anio) {
[Link] = dia;
[Link] = mes;
[Link] = anio;
}
public String toString() {
return [Link]("%02d/%02d/%d", dia, mes, anio);
}
}
MAIN
public class Main {
public static void main(String[] args) {
Payable[] items = new Payable[4];
items[0] = new EmpleadoAsalariado("Ana", "Lopez", "123", new Fecha(1, 1, 1990),
800.0);
items[1] = new EmpleadoPorHora("Juan", "Perez", "456", new Fecha(5, 6, 1985),
42, 20.0);
items[2] = new Factura("A1", "Teclado", 2, 150.0);
items[3] = new Factura("B2", "Mouse", 3, 100.0);
for (Payable p : items) {
[Link](p);
}
// Demostracion de sobrecarga de métodos
[Link]("\nPruebas con Util:");
[Link]("Square de 5: " + [Link](5));
[Link]("Square de 3.2: " + [Link](3.2));
[Link]("Maximo de 4.5, 9.2 y 3.1: " + [Link](4.5, 9.2, 3.1));
}
}
[Link]
public interface Payable {
double getPaymentAmount();
}
[Link]