×

Trừu tượng hóa trong C# Lớp trừu tượng và giao diện

Trừu tượng hóa (abstraction) trong C# là một khái niệm quan trọng giúp ẩn chi tiết thực hiện và chỉ hiện ra các phần cần thiết của một lớp hoặc đối tượng. Trừu tượng hóa được thực hiện bằng cách sử dụng các lớp trừu tượng (abstract classes) và giao diện (interfaces). Dưới đây là cách triển khai cả hai cách:

1. Lớp Trừu tượng (Abstract Class)

  • Định nghĩa: Lớp trừu tượng là một lớp không thể được khởi tạo và có thể chứa các phương thức trừu tượng (abstract methods) mà không có cài đặt, cũng như các phương thức cụ thể (concrete methods) với cài đặt.

  • Cách sử dụng:

    abstract class Animal {
        public abstract void MakeSound(); // Phương thức trừu tượng
    
        public void Eat() { // Phương thức cụ thể
            Console.WriteLine("Eating");
        }
    }
    
    class Dog : Animal {
        public override void MakeSound() {
            Console.WriteLine("Bark");
        }
    }
    
    class Cat : Animal {
        public override void MakeSound() {
            Console.WriteLine("Meow");
        }
    }
    
  • Sử dụng lớp trừu tượng:

    Animal myAnimal = new Dog();
    myAnimal.MakeSound(); // Output: Bark
    myAnimal.Eat(); // Output: Eating
    

2. Giao diện (Interface)

  • Định nghĩa: Giao diện chỉ định các phương thức mà một lớp phải cài đặt mà không cung cấp cài đặt. Một lớp có thể thực hiện nhiều giao diện.

  • Cách sử dụng:

    interface IShape {
        void Draw(); // Phương thức không có cài đặt
    }
    
    class Circle : IShape {
        public void Draw() {
            Console.WriteLine("Drawing Circle");
        }
    }
    
    class Rectangle : IShape {
        public void Draw() {
            Console.WriteLine("Drawing Rectangle");
        }
    }
    
  • Sử dụng giao diện:

    IShape shape = new Circle();
    shape.Draw(); // Output: Drawing Circle
    
    shape = new Rectangle();
    shape.Draw(); // Output: Drawing Rectangle
    

So sánh giữa lớp trừu tượng và giao diện:

  • Lớp trừu tượng: Có thể chứa các phương thức trừu tượng và cụ thể, có thể chứa thuộc tính, và có thể có các trường dữ liệu.
  • Giao diện: Chỉ định các phương thức cần cài đặt, không chứa cài đặt hoặc dữ liệu. Một lớp có thể thực hiện nhiều giao diện.

Trừu tượng hóa giúp giảm sự phức tạp và làm cho mã nguồn dễ bảo trì hơn bằng cách cung cấp các giao diện rõ ràng và ẩn chi tiết thực hiện bên trong các lớp hoặc đối tượng.

Comments