Calcular la nómina de los empleados con polimorfismo en C#
En esta lección vas a calcular el total de los salarios de distintos tipos de empleados a través de una clase base abstracta.
Introducción
Cada tipo de empleado tiene su propia forma de calcular el salario: el empleado con sueldo fijo y el empleado que cobra por horas. Al definir una clase base abstracta con el método Pay(), el código de la nómina puede tratar a todos los empleados de la misma forma.
La clase Salaried devuelve el sueldo fijo, mientras que Hourly calcula el salario multiplicando la tarifa por hora por el número de horas trabajadas. El arreglo staff tiene el tipo común Employee, pero al llamar a employee.Pay(), el programa elige automáticamente el cálculo correcto para cada tipo de empleado. El total de los salarios es 1000 + 20 × 10 = 1200.
Ejemplo de C# ejecutable
using System;
using System.Linq;
abstract class Employee { public abstract decimal Pay(); }
class Salaried(decimal salary) : Employee { public override decimal Pay() => salary; }
class Hourly(decimal rate, int hours) : Employee { public override decimal Pay() => rate * hours; }
class Program
{
static void Main()
{
Employee[] staff = { new Salaried(1000), new Hourly(20, 10) };
Console.WriteLine(staff.Sum(employee => employee.Pay()));
}
}
1200Practica con el depurador
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
Todos los retos