C# Abstraction

Khái Niệm Về Abstraction Trong C#

Abstraction (trừu tượng) là một trong những nguyên tắc cơ bản của lập trình hướng đối tượng (OOP) trong C#. Nó cho phép chúng ta ẩn đi các chi tiết phức tạp và chỉ cung cấp những thông tin cần thiết cho người sử dụng. Mục đích của abstraction là giảm thiểu sự phức tạp và tăng tính tái sử dụng của mã nguồn.

Cú Pháp Của Abstraction

Trong C#, abstraction có thể được đạt được bằng cách sử dụng các lớp trừu tượng (abstract classes) và giao diện (interfaces).

Lớp Trừu Tượng

Một lớp trừu tượng là một lớp không thể được khởi tạo và thường chứa ít nhất một phương thức trừu tượng. Các lớp con cần phải triển khai các phương thức trừu tượng này.

abstract class Animal
{
    public abstract void MakeSound();
}

class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Bark");
    }
}

class Cat : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Meow");
    }
}

Trong ví dụ trên, lớp Animal là một lớp trừu tượng với phương thức MakeSound. Các lớp DogCat kế thừa từ lớp Animal và triển khai phương thức MakeSound của riêng mình.

Giao Diện

Giao diện (interface) là một tập hợp các phương thức mà các lớp khác cần triển khai. Giao diện không chứa các implement cụ thể, mà chỉ định nghĩa các phương thức.

interface IFlyable
{
    void Fly();
}

class Bird : IFlyable
{
    public void Fly()
    {
        Console.WriteLine("Flying high!");
    }
}

class Airplane : IFlyable
{
    public void Fly()
    {
        Console.WriteLine("Jetting through the sky!");
    }
}

Trong ví dụ này, IFlyable là một giao diện với phương thức Fly. Các lớp BirdAirplane triển khai giao diện này và cung cấp cách thức riêng của mình để bay.

Kết Luận

Abstraction là một phần quan trọng trong lập trình C#, giúp lập trình viên tạo ra các thành phần có thể tái sử dụng và dễ dàng hiểu. Bằng cách sử dụng lớp trừu tượng và giao diện, bạn có thể giấu đi các chi tiết thực thi phức tạp, chỉ để lại các phương thức cần thiết cho người dùng. Điều này không chỉ giúp mã nguồn của bạn trở nên sạch sẽ hơn mà còn dễ bảo trì hơn trong thời gian dài.