Abstraction (Trừu tượng)

Trừu tượng là một mô hình của đối tượng/hiện tượng trong thế giới thực, GIỚI HẠN TRONG MỘT NGỮ CẢNH CỤ THỂ: đại diện cho tất cả chi tiết liên quan đến ngữ cảnh này với độ chính xác cao, và BỎ QUA tất cả phần còn lại.

Ví dụ: không phải lúc nào bạn cũng cần mọi chi tiết của đối tượng - có khi bạn quan tâm đến tốc độ của chiếc xe, nhưng có khi chỉ cần quan tâm số chỗ ngồi.

Ví dụ kinh điển: Animal / Dog / Cat

<?php
// Lớp trừu tượng Animal
abstract class Animal {
    // Phương thức trừu tượng: KHÔNG có triển khai
    abstract public function makeSound();
 
    // Phương thức thông thường: có triển khai cụ thể
    public function move() {
        echo "Động vật đang di chuyển\n";
    }
}
 
class Dog extends Animal {
    public function makeSound() { echo "Gâu gâu\n"; }
}
 
class Cat extends Animal {
    public function makeSound() { echo "Meo meo\n"; }
}
 
$dog = new Dog();
$dog->makeSound(); // Gâu gâu
$dog->move();      // Động vật đang di chuyển
  • Lớp trừu tượng Animal: định nghĩa phương thức trừu tượng makeSound (không triển khai) + phương thức thường move (có triển khai).
  • Dog, Cat: kế thừa và cung cấp triển khai cụ thể cho makeSound.

Vai trò trong thiết kế

Trừu tượng là nền của nguyên tắc Program to Interface - Tập trung vào trừu tượng: phụ thuộc vào interface/abstract class thay vì class cụ thể - và từ đó là Dependency Inversion Principle.

Liên quan