import java.util.
ArrayList;
import java.util.List;
import java.util.Date;
// Clase Departamento
class Departamento {
private String nombre;
private int id;
private List<Empleado> empleados;
public Departamento(String nombre, int id) {
this.nombre = nombre;
this.id = id;
this.empleados = new ArrayList<>();
}
public void agregarEmpleado(Empleado empleado) {
empleados.add(empleado);
}
public List<Empleado> getEmpleados() {
return empleados;
}
public String getNombre() {
return nombre;
}
public int getId() {
return id;
}
}
// Clase Empleado
class Empleado {
private String nombre;
private String idDocumento;
private double salario;
private String rol;
private Departamento departamento;
private List<ReporteDesempeño> reportes;
public Empleado(String nombre, String idDocumento, double salario, String rol,
Departamento departamento) {
this.nombre = nombre;
this.idDocumento = idDocumento;
this.salario = salario;
this.rol = rol;
this.departamento = departamento;
this.reportes = new ArrayList<>();
departamento.agregarEmpleado(this);
}
public void agregarReporte(ReporteDesempeño reporte) {
reportes.add(reporte);
}
public List<ReporteDesempeño> getReportes() {
return reportes;
}
public String getNombre() {
return nombre;
}
public String getIdDocumento() {
return idDocumento;
}
public double getSalario() {
return salario;
}
public String getRol() {
return rol;
}
public Departamento getDepartamento() {
return departamento;
}
}
// Clase ReporteDesempeño
class ReporteDesempeño {
private Empleado empleado;
private Date fechaEvaluacion;
private double calificacion;
private String observaciones;
public ReporteDesempeño(Empleado empleado, Date fechaEvaluacion, double
calificacion, String observaciones) {
this.empleado = empleado;
this.fechaEvaluacion = fechaEvaluacion;
this.calificacion = calificacion;
this.observaciones = observaciones;
empleado.agregarReporte(this);
}
public Empleado getEmpleado() {
return empleado;
}
public Date getFechaEvaluacion() {
return fechaEvaluacion;
}
public double getCalificacion() {
return calificacion;
}
public String getObservaciones() {
return observaciones;
}
}
// Clase principal para pruebas
public class GestionEmpleados {
public static void main(String[] args) {
Departamento dptoTI = new Departamento("Tecnología", 1);
Empleado empleado1 = new Empleado("Carlos Pérez", "1012345678", 5000000,
"Desarrollador", dptoTI);
ReporteDesempeño reporte1 = new ReporteDesempeño(empleado1, new Date(),
4.5, "Buen desempeño en proyectos de software.");
System.out.println("Empleado: " + empleado1.getNombre());
System.out.println("Departamento: " +
empleado1.getDepartamento().getNombre());
System.out.println("Última evaluación: " +
empleado1.getReportes().get(0).getCalificacion());
}
}