Calcolare gli stipendi con il polimorfismo in C#
In questa lezione calcolerai il totale degli stipendi di diversi tipi di dipendenti tramite una classe base astratta.
Introduzione
Ogni tipo di dipendente ha il suo modo di calcolare lo stipendio: il dipendente con stipendio fisso e quello pagato a ore. Definendo una classe base astratta con il metodo Pay(), il codice che calcola gli stipendi può trattare tutti i dipendenti allo stesso modo.
La classe Salaried restituisce lo stipendio fisso, mentre Hourly calcola l'importo moltiplicando la tariffa oraria per le ore lavorate. L'array staff ha il tipo comune Employee, ma chiamando employee.Pay() il programma sceglie da solo il calcolo giusto per ogni tipo di dipendente. Il totale è 1000 + 20 × 10 = 1200.
Esempio C# eseguibile
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()));
}
}
1200Esercitati con il debugger
Esercitati con una sfida
Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.
Tutte le sfide