Calcular a folha de pagamento com polimorfismo em C#
Nesta lição, você vai calcular o total de salários de vários tipos de funcionários por meio de uma classe base abstrata.
Introdução
Cada tipo de funcionário tem sua forma de calcular o salário: o funcionário com salário fixo e o que trabalha por hora. Ao definir uma classe base abstrata com o método Pay(), o código da folha pode tratar todos os funcionários da mesma maneira.
A classe Salaried retorna o salário fixo, e Hourly calcula o valor multiplicando o preço da hora pelas horas trabalhadas. O array staff tem o tipo comum Employee, mas ao chamar employee.Pay() o programa escolhe sozinho o cálculo certo de cada tipo de funcionário. O total é 1000 + 20 × 10 = 1200.
Exemplo de C# executável
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()));
}
}
1200Pratique com o depurador
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
Todos os desafios