Упражнения C#

Расчёт зарплаты сотрудников с полиморфизмом в C#

В этом уроке вы вычислите общую сумму зарплат разных типов сотрудников через абстрактный базовый класс.

Введение

У каждого типа сотрудников свой способ расчёта зарплаты: у сотрудника с окладом и у сотрудника с почасовой оплатой. Если определить абстрактный базовый класс с методом Pay(), код расчёта зарплаты сможет обращаться со всеми сотрудниками одинаково.

Класс Salaried возвращает оклад, а Hourly вычисляет зарплату, умножая почасовую ставку на число отработанных часов. Массив staff имеет общий тип Employee, но при вызове employee.Pay() программа автоматически выбирает нужный расчёт для каждого типа сотрудника. Сумма зарплат 1000 + 20 × 10 = 1200.

Пример на C#, который можно запустить

C#
Запустить код →
Program.cs
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()));
    }
}
Результат выполнения
1200

Практика с отладчиком

Поставьте точку останова на важное присваивание или условие, нажмите Debug и посмотрите локальные значения, прежде чем перейти к следующей строке.

Попрактикуйтесь на задаче

Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.

Все задачи