Ejercicios de programación orientada a objetos
Ejercicio 1
Define una clase llamada Empleado que represente un empleado de una empresa con los siguientes atributos privados:
nombre(std::string)edad(int)sueldo(double)departamento(std::string)
La clase debe incluir:
-
Un constructor por defecto que inicialice todos los atributos con valores razonables (por ejemplo: nombre vacío, edad 0, sueldo 0, departamento vacío).
-
Un constructor que reciba todos los atributos como parámetros.
-
Métodos
double calcularBono()ydouble calcularSalarioAnual()que devuelvan, respectivamente:- Bono = 10% del sueldo
- Salario anual = sueldo mensual × 12 + bono
-
Métodos setters y getters para cada atributo.
-
Un método
mostrarInformacion()que imprima todos los datos del empleado. -
En el
main, crea al menos dos empleados, uno usando el constructor por defecto y otro usando el constructor con parámetros, y muestra su información completa junto con el bono y el salario anual.
Ejercicio 2
Partiendo de la clase Empleado, modifica la clase para incluir:
- Un atributo estático
contadorEmpleadosque lleve la cuenta de cuántos empleados se han creado. - Un método estático
totalEmpleados()que devuelva el valor decontadorEmpleados. - Actualiza los constructores (por defecto y con parámetros) para incrementar
contadorEmpleadoscada vez que se crea un empleado. - Mantén todos los atributos anteriores (
nombre,edad,sueldo,departamento) y los métodos de cálculo (calcularBono(),calcularSalarioAnual()) y de mostrar información. - En el
main, crea varios empleados y, además de mostrar su información, muestra el total de empleados creados usando el método estático.
Ejercicio 3
-
Define una clase llamada
Fechacon los siguientes atributos privados:dia(int)mes(int)anio(int)
La clase debe incluir:
- Constructor por defecto que inicialice la fecha a 1/1/2000.
- Constructor que reciba día, mes y año.
- Métodos setters y getters para cada atributo.
- Método
mostrar()que imprima la fecha en formatodd/mm/aaaa.
-
Modifica la clase
Empleadodel ejercicio anterior para añadir un atributo privadofechaIncorporacionde tipoFecha.La clase
Empleadodebe incluir:- Modificar los constructores para inicializar también
fechaIncorporacion. - Métodos setters y getters para
fechaIncorporacion. - Actualizar el método
mostrarInformacion()para mostrar también la fecha de incorporación.
- Modificar los constructores para inicializar también
-
En el
main, crea varios empleados con distintas fechas de incorporación y muestra toda su información.
Ejercicio 4
-
Partiendo de la clase
Empleadoque ya has creado (con atributosnombre,edad,sueldoydepartamento, y métodos de cálculo de bono y salario anual), define una clase derivada llamadaEmpleadoTemporal. -
La clase
EmpleadoTemporaldebe incluir:- Un atributo privado
duracionContrato(int) que represente la duración del contrato en meses. - Un constructor que reciba todos los atributos de
EmpleadomásduracionContrato. - Métodos setters y getters para
duracionContrato. - Un método
mostrarInformacion()que sobrescriba el de la clase base y muestre también la duración del contrato.
- Un atributo privado
-
Define otra clase derivada llamada
EmpleadoFijoque represente un empleado con contrato indefinido:- Un atributo privado
beneficios(std::string) que indique beneficios adicionales (por ejemplo: “Seguro médico”). - Constructor que reciba los atributos de
Empleadoybeneficios. - Métodos setters y getters para
beneficios. - Método
mostrarInformacion()que sobrescriba el de la clase base y muestre también los beneficios.
- Un atributo privado
-
En el
main, crea al menos unEmpleadoTemporaly unEmpleadoFijo, y llama amostrarInformacion()para ambos. -
Opcional: Haz que
mostrarInformacion()en la clase base sea virtual para preparar el polimorfismo dinámico.