Bài tập C#

Tính lương nhân viên bằng đa hình trong C#

Trong bài học này, bạn sẽ tính tổng lương cho nhiều loại nhân viên khác nhau thông qua một class cơ sở trừu tượng.

Giới thiệu

Mỗi loại nhân viên có cách tính lương riêng: nhân viên hưởng lương cố định và nhân viên làm theo giờ. Bằng cách định nghĩa một class cơ sở trừu tượng với phương thức Pay(), phần code tính lương có thể xử lý mọi nhân viên theo cùng một cách.

Class Salaried trả về lương cố định, còn Hourly tính lương bằng đơn giá nhân số giờ làm việc. Mảng staff có kiểu chung Employee, nhưng khi gọi employee.Pay(), chương trình tự chọn đúng cách tính của từng loại nhân viên. Tổng lương là 1000 + 20 × 10 = 1200.

Ví dụ C# chạy được

C#
Chạy code →
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()));
    }
}
Kết quả khi chạy
1200

Luyện tập với trình gỡ lỗi

Đặt breakpoint ở một phép gán hoặc điều kiện quan trọng, bấm Debug và xem giá trị các biến cục bộ (local variable) trước khi bước sang dòng tiếp theo.

Luyện tập với thử thách

Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.

Tất cả thử thách