Tính Trừu Tượng - OOP PHP

Tính trừu tượng (abstraction) trong lập trình hướng đối tượng giúp giảm sự phức tạp thông qua việc tập trung vào các đặc điểm trọng yếu hơn là đi sâu vào chi tiết.

 

Ví dụ khi một lập trình viên tạo một lớp (class) dùng đại diên cho các tài khoản tiền gửi ngân hàng của các khách hàng và đặt tên cho lớp này là BankAccount. Lớp này có hai thuộc tính là $balance và $interest dùng để lưu dữ liệu số tiền dư và lãi suất tiền gửi của tài khoản.

class BankAccount {
    public $balance;
    public $interest;
}

Tiếp theo lập trình viên này thêm các phương thức gửi tiền (deposit) và rút tiền (withdraw) như sau:

class BankAccount {
    public $balance; // số dư tài khoản
    public $interest; // lãi suất

    public function deposit ($amount) {
    // code...
    }

    public function withdraw ($amount) {
    // code...
    }
}

Với tính trừu tượng (abstraction) thì toàn bộ sự phức tạp của việc xử lý quá trình gửi tiền và rút tiền sẽ được thực hiện trong 2 phương thức deposit và withdraw. Các lập trình viên không cần phải quan tâm tới sự phức tạp (hay nội dung chi tiết) của việc xử lý các công việc gửi tiền và rút tiền trên mà chỉ cần biết mục đích của từng phương thức là gì.

Dưới đây là một cách thực hiện (implementation) của phương thức deposit:

    // nạp tiền vào tài khoản
    public function deposit ($amount) {
        if ($amount < 50000) { // số tiền nạp vào dưới mức tối thiểu 50 ngàn
            return "Error! The minimum amount is 50";
        }
        if ($amount  > 100000000) { // tài khoản này cho phép nạp tối đa 100 triệu một lần
            return "Error! You exceed the maximum amount, please upgrade your account";
        }
        $balance += $amount; // tăng số dư tài khoản
    }

Với tính trừu tượng thì lập trình viên chỉ cần quan tâm tới mục đích của phương thức deposit là để nạp tiền vào tài khoản. Toàn bộ chi tiết của quy trình xử lý gửi tiền sẽ được thực hiện ở bên trong phương thức deposit.