Saltar a contenido

Semana 5 - Actividad: Clase Profesor en Java

Objetivo

Familiarizarte con los conceptos de constructores, sobrecarga de métodos y constructores, el uso del operador this, y la encapsulación en Java, aplicándolos en el contexto de un sistema educativo. Implementarás una clase Profesor que gestione información de docentes, sus asignaturas, y su carga horaria, con métodos más complejos y pruebas en un entorno educativo.


Instrucciones Generales

  1. Crea un proyecto en Java utilizando tu IDE favorito (Eclipse, IntelliJ, NetBeans, etc.).
  2. Implementa la clase Profesor con los atributos y métodos descritos a continuación.
  3. Crea una clase Curso para interactuar con Profesor.
  4. Prueba todas las funcionalidades en una clase Main con ejemplos realistas.
  5. Usa el operador this y sobrecarga de constructores/métodos donde sea aplicable.
  6. Sube tu código a un repositorio (opcional) o compártelo con tu instructor.

Ejercicio 1: Implementación de la Clase Profesor

Tarea

Crea una clase Profesor que represente a un docente en un sistema educativo. La clase debe incluir:

  • Atributos:
  • nombre (String): Nombre completo del profesor.
  • numeroIdentificacion (String): Cédula o DNI del profesor.
  • salarioMensual (double): Salario mensual del profesor.
  • horasSemanales (int): Horas semanales asignadas para dictar clases.
  • esTiempoCompleto (boolean): Indica si el profesor es de tiempo completo o no.

  • Constructores:

  • Un constructor completo que reciba nombre, numeroIdentificacion, salarioMensual, horasSemanales, y esTiempoCompleto.
  • Un constructor que reciba nombre, numeroIdentificacion, y salarioMensual, asignando 20 a horasSemanales y false a esTiempoCompleto.
  • Un constructor por defecto que inicialice los atributos con valores predeterminados ("Sin nombre", "Sin identificación", 0.0, 0, false).
  • Un constructor que reciba solo nombre y numeroIdentificacion, asignando valores predeterminados al resto (0.0, 10, false).

  • Métodos:

  • mostrarInformacion(): Muestra todos los datos del profesor en un formato claro.
  • calcularSalarioAnual(): Sobrecarga este método:
    • Sin parámetros: Calcula el salario anual (salarioMensual * 12).
    • Con un parámetro bonoAnual (double): Calcula el salario anual incluyendo el bono.
    • Con un parámetro meses (int): Calcula el salario para el número de meses indicado.
  • asignarHorasSemanales(int horas): Actualiza las horas semanales, con validación para no exceder 40 horas.
  • evaluarCargaHoraria(): Sobrecarga este método:
    • Sin parámetros: Devuelve "Carga normal" si las horas semanales son menores o iguales a 20, de lo contrario "Carga alta".
    • Con un parámetro limiteHoras (int): Devuelve el estado según el límite proporcionado.
  • asignarCurso(Curso curso): Registra al profesor en un curso, pasando el objeto actual (this) al método asignarProfesor de la clase Curso.
  • calcularHorasAnuales(): Calcula las horas anuales asumiendo 40 semanas laborales por año.

  • Clase Curso:

  • Atributos: nombreCurso (String) y profesorAsignado (Profesor).
  • Métodos:

    • asignarProfesor(Profesor profesor): Asigna un profesor al curso e imprime un mensaje de confirmación.
    • mostrarInformacionCurso(): Muestra el nombre del curso y el nombre del profesor asignado (si existe).
  • Encapsulación:

  • Todos los atributos deben ser private.
  • Incluye getters y setters para todos los atributos, con validaciones en los setters (por ejemplo, salarioMensual no puede ser negativo, horasSemanales no puede exceder 40).

Ejercicio 2: Pruebas en la Clase Main

Tarea

En la clase Main, escribe un programa que:

  1. Cree cuatro instancias de Profesor usando los cuatro constructores.
  2. Muestre la información de cada profesor con mostrarInformacion().
  3. Pruebe los tres métodos calcularSalarioAnual() para un profesor.
  4. Pruebe ambos métodos evaluarCargaHoraria() para un profesor.
  5. Calcule las horas anuales de un profesor con calcularHorasAnuales().
  6. Asigne un profesor a un curso y muestre la información del curso.
  7. Modifique las horas semanales de un profesor con asignarHorasSemanales() y muestre la información actualizada.