Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Código
#include <iostream>
#include <vector>
class Empleado {
protected:
string nombre;
int identificacion;
double salario;
public:
virtual ~Empleado() {}
return nombre;
this->nombre = nombre;
return identificacion;
this->identificacion = identificacion;
return salario;
this->salario = salario;
};
return salario;
};
private:
double horasTrabajadas;
double tarifaPorHora;
public:
return horasTrabajadas;
this->horasTrabajadas = horasTrabajadas;
return tarifaPorHora;
this->tarifaPorHora = tarifaPorHora;
}
double calcularSalario() const override {
};
class SistemaEmpleados {
private:
vector<Empleado*> empleados;
public:
empleados.push_back(empleado);
if (empleado->getIdentificacion() == identificacion) {
return empleado->calcularSalario();
};
int main() {
SistemaEmpleados sistema;
while (true) {
int opcion;
switch (opcion) {
case 1: {
string nombre;
cin.ignore();
getline(cin, nombre);
int identificacion;
int tipoEmpleado;
if (tipoEmpleado == 1) {
double salarioMensual;
} else if (tipoEmpleado == 2) {
double tarifaPorHora;
double horasTrabajadas;
empleadoPorHoras->setHorasTrabajadas(horasTrabajadas);
sistema.agregarEmpleado(empleadoPorHoras);
break;
case 2:
sistema.mostrarInformacionEmpleados();
break;
case 3: {
int identificacion;
cout << "Ingrese la identificacion del empleado para calcular su salario: ";
cout << "Salario del empleado con identificacion " << identificacion << ": " << salario << endl;
break;
case 4:
return 0;
default:
cout << "Opcion invalida. Por favor, ingrese una opcion valida." << endl;
break;
Descripción
Se definen tres clases principales: Empleado, EmpleadoAsalariado y
EmpleadoPorHoras. La clase Empleado es la clase base, y las clases
EmpleadoAsalariado y EmpleadoPorHoras son clases derivadas de la clase base.
La clase Empleado tiene atributos comunes a todos los empleados, como nombre,
identificación y salario. También tiene métodos para obtener y establecer estos
atributos, así como un método virtual puro llamado calcularSalario(), que se
implementará en las clases derivadas.
La clase EmpleadoAsalariado representa a un empleado asalariado y hereda de la
clase Empleado. No tiene atributos adicionales ni modifica los métodos heredados.
La clase EmpleadoPorHoras representa a un empleado que se paga por horas
trabajadas y también hereda de la clase Empleado. Tiene atributos adicionales
para almacenar las horas trabajadas y la tarifa por hora, y también implementa el
método calcularSalario() de manera diferente para calcular el salario en función de
las horas trabajadas y la tarifa por hora.
La clase SistemaEmpleados se encarga de gestionar la colección de empleados.
Tiene un vector de punteros a objetos Empleado para almacenar los empleados
agregados.
El método agregarEmpleado() permite agregar un objeto Empleado al vector de
empleados.
El método mostrarInformacionEmpleados() muestra en la consola la información
de todos los empleados almacenados en el vector.
El método calcularSalarioEmpleado() recibe una identificación de empleado y
busca en el vector el empleado correspondiente. Si lo encuentra, llama al método
calcularSalario() del empleado y devuelve el salario calculado. Si no encuentra al
empleado, devuelve 0.
El programa principal (main()) implementa una interfaz de usuario basada en la
consola. Muestra un menú con diferentes opciones: agregar empleado, mostrar
información de empleados, calcular salario de empleado y salir del programa.
Dependiendo de la opción seleccionada por el usuario, se ejecuta el código
correspondiente en el switch para llevar a cabo la operación deseada. Por ejemplo,
al seleccionar la opción "Agregar empleado", se solicita al usuario que ingrese los
datos del empleado y se llama al método agregarEmpleado() del objeto
SistemaEmpleados para agregarlo al sistema.
El programa se ejecuta en un bucle while (true) para que el menú se muestre
continuamente hasta que el usuario elija la opción de salir.
Se utilizan las funciones cout y cin para mostrar mensajes en la consola y recibir la
entrada del usuario, respectivamente.
Diagrama de clases
+----------------+
| Empleado |
+----------------+
| - nombre |
| - identificacion|
| - salario |
+----------------+
| + getNombre() |
| + setNombre() |
| + getIdentifi- |
| cacion() |
| + setIdentifi- |
| cacion() |
| + getSalario() |
| + setSalario() |
| + calcularSala-|
| rio() |
+-------+--------+
+---------+--------+
|EmpladoAsalariado|
+-----------------+
| |
+-----------------+
| + calcularSala- |
| rio() |
+-----------------+
+---------+--------+
| EmpleadoPorHoras|
+-----------------+
| - horasTrabajadas|
| - tarifaPorHora |
+-----------------+
| + getHorasTraba-|
| jadas() |
| + setHorasTraba-|
| jadas() |
| + getTarifaPor- |
| Hora() |
| + setTarifaPor- |
| Hora() |
| + calcularSala- |
| rio() |
+-------+--------+
^
|
+-------+--------+
| SistemaEmpleados|
+-----------------+
| - empleados |
+-----------------+
| + agregarEmplea-|
| do() |
| + mostrarInfor- |
| macionEmplea- |
| dos() |
| + calcularSala- |
| rioEmpleado() |
+-----------------+
En este diagrama de clases, se muestra la estructura de las clases y sus relaciones. La clase
Empleado es la clase base que tiene los atributos comunes a todos los empleados, como nombre,
identificación y salario. También define el método virtual puro calcularSalario().
La clase SistemaEmpleados se encarga de gestionar los empleados y tiene una asociación con la
clase Empleado. Contiene un vector de punteros a objetos Empleado para almacenar los
empleados agregados. Los métodos agregarEmpleado(), mostrarInformacionEmpleados() y
calcularSalarioEmpleado() permiten agregar empleados, mostrar su información y calcular el
salario de un empleado específico.
Diagrama de objetos
+------------------------------------+
| SistemaEmpleados |
+------------------------------------+
| - empleados: vector<Empleado*> |
+------------------------------------+
| + agregarEmpleado(empleado: Empleado*) |
| + mostrarInformacionEmpleados() |
| + calcularSalarioEmpleado(identificacion: int) |
+------------------------------------+
+-----------+------------+
| |
+--------------------+ +---------------------+
| Empleado | | EmpleadoAsalariado |
+--------------------+ +---------------------+
| - nombre || |
| - identificacion | +---------------------+
| - salario || |
+--------------------+ +---------------------+
| + getNombre() || |
| + setNombre() | | + calcularSalario() |
| + getIdentificacion() | |
| + setIdentificacion() | |
| + getSalario() || |
| + setSalario() || |
| + calcularSalario() | | |
+--------------------+ +---------------------+
+-----------+------------+
| |
+------------------------------------+
| EmpleadoPorHoras |
+------------------------------------+
| - horasTrabajadas |
| - tarifaPorHora |
+------------------------------------+
| + getHorasTrabajadas() |
| + setHorasTrabajadas() |
| + getTarifaPorHora() |
| + setTarifaPorHora() |
| + calcularSalario() |
+------------------------------------+
En este diagrama de objetos, se representan las instancias de las clases que se crean
durante la ejecución del programa.
El objeto SistemaEmpleados es el encargado de gestionar los empleados y tiene
asociaciones con las clases Empleado, EmpleadoAsalariado y EmpleadoPorHoras.
Contiene un vector de punteros a objetos Empleado llamado empleados, donde se
almacenan los empleados agregados.
Las instancias de las clases Empleado, EmpleadoAsalariado y EmpleadoPorHoras
representan empleados individuales con sus respectivos atributos. Las clases derivadas
EmpleadoAsalariado y EmpleadoPorHoras heredan los atributos y métodos de la clase
base Empleado y agregan funcionalidades específicas. Por ejemplo, EmpleadoPorHoras
tiene atributos adicionales horasTrabajadas y tarifaPorHora, y también tiene su propia
implementación del método calcularSalario().
Las flechas indican las relaciones entre los objetos. Por ejemplo, el objeto
SistemaEmpleados se relaciona con los objetos Empleado a través del vector empleados.
Además, los métodos de SistemaEmpleados interactúan con los objetos de las clases
Empleado para realizar operaciones como agregar empleados, mostrar información y
calcular salarios.
Paso a Paso
PASO A PASO PROYECTO.mp4