Ejercicio N° 1
Cargar a través de un formulario los datos de un postulante para un puesto
de trabajo. Los datos son los siguientes:
● Nombre y Apellido
● Fecha de nacimiento
● Dirección
● Sexo
● Disponibilidad (medio tiempo o full time)
● Puesto (informática, contable, rrhh)
● Cargar CV (archivo de cualquiera de los 3 tipos: .pdf, .doc, .jpg)
Al enviar el formulario, mostrar por pantalla un mensaje de confirmación:
“El postulante [Nombre y Apellido] se inscribió en el puesto [Puesto]“.
Formulario de postulación
Ejercicio N° 2
Usando herencia realice dos clases una Postulante y la otra Empleado, que
hereden de la clase Persona.
* Los datos de la clase Postulante son los mismos que se ingresan por formulario en el punto 1.
* Esta clase debe permitir calcular la edad del postulante.
* Los datos que se guardan de la clase Empleado son:
* Nombre y Apellido
* Fecha de nacimiento
* Dirección
* Sexo
* Disponibilidad (medio tiempo o full time)
* Puesto (informática, contable, rrhh)
* Fecha de ingreso
* Esta clase debe permitir calcular los años de antigüedad del empleado
nombre = $nombre;
// ... inicialización de otros atributos ...
}
}
// La clase 'Postulante' hereda de 'Persona' y tiene características adicionales.
class Postulante extends Persona {
private $cv; // Propiedad específica de 'Postulante' para guardar el CV.
// Constructor que también inicializa el CV además de las propiedades heredadas.
public function __construct($nombre, $apellido, $fechaNacimiento, $direccion, $sexo, $disponibilidad, $puesto, $cv) {
parent::__construct($nombre, $apellido, $fechaNacimiento, $direccion, $sexo, $disponibilidad, $puesto); // Llama al constructor de 'Persona'.
$this->cv = $cv; // Inicializa el CV.
}
// Método que calcula la edad del postulante basado en su fecha de nacimiento.
public function calcularEdad() {
// ... lógica de cálculo ...
return $edad->y; // Retorna la edad.
}
}
// La clase 'Empleado' también hereda de 'Persona' pero tiene características distintas a 'Postulante'.
class Empleado extends Persona {
private $fechaIngreso; // Propiedad específica para guardar la fecha en que el empleado ingresó.
// Constructor que inicializa la fecha de ingreso además de las propiedades heredadas.
public function __construct($nombre, $apellido, $fechaNacimiento, $direccion, $sexo, $disponibilidad, $puesto, $fechaIngreso) {
parent::__construct($nombre, $apellido, $fechaNacimiento, $direccion, $sexo, $disponibilidad, $puesto); // Llama al constructor de 'Persona'.
$this->fechaIngreso = $fechaIngreso; // Inicializa la fecha de ingreso.
}
// Método que calcula los años de antigüedad del empleado en base a su fecha de ingreso.
public function calcularAntiguedad() {
// ... lógica de cálculo ...
return $antiguedad->y; // Retorna los años de antigüedad.
}
}
?>
Ejercicio N° 3
Agregue un método estático a la clase Empleado del punto anterior que permita mostrar los puestos existentes (informática, contable, rrhh). Muestre por pantalla el resultado de ejecutar dicho método.
";
}
}
}
// Llama al método estático 'mostrarPuestos()' de la clase 'EmpleadoEjercicio3'.
// No es necesario instanciar la clase para llamar a este método porque es estático.
EmpleadoEjercicio3::mostrarPuestos();
?>
Ejercicio N° 4
Implementar el polimorfismo (varias formas de resolver un mismo método) para calcular el sueldo de tres tipos de Empleados:
Empleado Informático:
Sueldo = $básico + $xcantidadAplicaciones
★ $básico = $200.000
★ 1-5 aplicaciones = $10.000
★ 6 o más aplicaciones = $20.000
Empleado de RRHH:
Sueldo = $básico + $xcantidadProyectos
★ $básico = $300.000
★ 1-5 proyectos = $20.000
★ 6 o más proyectos = $30.000
Empleado Contable:
Sueldo = $básico + $xcantidadExpedientes
★ $básico = $100.000
★ 1-5 expedientes = $50.000
★ 6 o más expedientes = $80.000
Muestre el sueldo de un empleado Informático con 10 aplicaciones.
Sugerencia: Puede utilizar una clase donde estará el método calcSueldo() para su posterior implementación particular por cada tipo de Empleado.
fechaIngreso = $fechaIngreso;
$this->cantidad = $cantidad;
}
// Método abstracto que obliga a las clases que extienden 'EmpleadoConSueldo' a implementarlo.
abstract protected function calcularSueldo();
}
// Subclase que extiende 'EmpleadoConSueldo' y representa un empleado informático.
class EmpleadoInformatico extends EmpleadoConSueldo {
// Método para calcular sueldo específico para empleados informáticos.
public function calcularSueldo() {
$basico = 200000;
$extra = $this->cantidad <= 5 ? 10000 : 20000;
return $basico + $extra;
}
}
// Subclase para empleados de RRHH.
class EmpleadoRRHH extends EmpleadoConSueldo {
// Método para calcular sueldo específico para empleados de RRHH.
public function calcularSueldo() {
$basico = 300000;
$extra = $this->cantidad <= 5 ? 20000 : 30000;
return $basico + $extra;
}
}
// Subclase para empleados contables.
class EmpleadoContable extends EmpleadoConSueldo {
// Método para calcular sueldo específico para empleados contables.
public function calcularSueldo() {
$basico = 100000;
$extra = $this->cantidad <= 5 ? 50000 : 80000;
return $basico + $extra;
}
}
// Instancia de un empleado informático y muestra su sueldo.
$empleadoInformatico = new EmpleadoInformatico("Juan", "Perez", "1990-01-01", "Calle 123", "Masculino", "Full Time", "Informatico", "2023-01-01", 10);
echo "El sueldo del empleado informático es: $" . $empleadoInformatico->calcularSueldo();
?>