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ượngmakeSound(không triển khai) + phương thức thườngmove(có triển khai). Dog,Cat: kế thừa và cung cấp triển khai cụ thể chomakeSound.
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
- OOP là gì - 1 trong 4 trụ cột
- Inheritance - Kế thừa - cách class con triển khai abstract method
- Template Method Pattern - abstract class định nghĩa bộ khung