programa en c++
En una empresa automotriz se tienen 3 tipos de empleados: administrativos, mecanicos y vendedores.
En general, para todos los empleados se tiene los datos RFC (Registro Federal de Contribuyentes), el nombre, el departamento y el puesto.
En particular; para el empleado administrativo se tiene el dato sueldo mensual; para el mecánico se tiene el precio del trabajo, tantas veces como trabajos haya realizado; y para el vendedor se tiene el precio del auto, por cada auto que vendió.
El sueldo quincenal se calcula:
Para el administrativo, sueldo mensual entre 2.
Para el mecánico, el 4% del valor total.
Para el vendedor, el salario mínimo, mas el 2 porciento del valor de la venta realizada.
Respuestas a la pregunta
El programa en C++ puede resolverse mediante una clase genérica "empleado" y luego según la categoría de cada uno crear clases derivadas. Un miembro declarado como protected en la clase base es private en la clase derivada, las clases quedan:
class empleado{
public:
int empleado();
void SetSueldoMinimo(int iSueldoMinimo) {sueldo_minimo=iSueldoMinimo};
protected:
int sueldo_minimo;
};
class admin: public empleado{
public:
int getSueldo(void) {return sueldo_minimo/2};
};
class mecanico: public empleado{
public:
mecanico(int iTrabajos, int iValorTrabajo){nTrabajos=iTrabajos; ValorTrabajo=iValorTrabajo};//Es el constructor de la clase
int getSueldo(void) {return sueldo_minimo+0.04*nTrabajos*ValorTrabajo};
private:
int nTrabajos;
int iValorTrabajo;
};
class vendedor: public empleado{
public:
vendedor (int valor_ventas){iValorVentas=valor_ventas};//Es el valor de todas las ventas realizadas, una mejora incluiría una lista enlazada donde se cargaría cada venta con su valor y luego sumaría todo.
int getSueldo(void){return sueldo_minimo+0.02*iValorVentas},
private:
int iValorVentas;
};
Luego el programa principal instancia un objeto de cada clase por cada empleado de cada categoría y se inicializan sus valores:
int main(void)
{
int sueldo_minimo, ventas, valor_reparacion, valor_ventas1, valor ventas2,..., cantidad_rep1, .......;
admin admin1, admin2, ...;
//Rutina de ingreso de datos ya sea desde teclado o desde un archivo
vendedor vendedor1(valor_ventas1), vendedor2(valor_ventas2), ...;
mecanico mecanico1(cantidad_rep1, valor_reparación), mecanico2(, cantidad_rep2, valor_reparacion), ...;
admin1.SetSueldoMinimo()=admin2.SetSueldoMinimo()=...=sueldo_minimo;//cargo el sueldo mínimo a todos los objetos,
//muestro el resultado:
cout<<sueldo administrativo<<admin1.getSueldo()<<endl;
cout<<sueldo administrativo<<admin2.getSueldo()<<endl;
...
}