[OOP] Tính đóng gói trong OOP – Encapsulation

1. Đóng gói trong lập trình hướng đối tượng là gì?

Đóng gói tức là cách thức mà Class che giấu thông tin, hạn chế quyền try cập từ bên ngoài vào.
Chắc hẳn anh em đều biết đến 3 loại Access modifiers: Public – Protected – Private. Chúng giúp ta thể hiện tính chất đóng gói của OOP bằng cách nói cho Complier biết nên, có quyền try cập vào thuộc tính, phương thức nào.

2. Phân biệt Public – Protected – Private

Phân biệt giữa các Access modifiers là một trong những câu hỏi huyền thoại khi phỏng vấn  :10: 

private – Chỉ có Class hiện tại (không phải Class kế thừa, không phải Object) mới có thể truy cập được vào thuộc tính và phương thức có kiểu là private.

protected – Chỉ có Class hiện tại và Class kế thừa nó (subclasses) mới có quyền truy cập vào thuộc tính và phương thức có kiểu là protected.

public – Class hiện tại, Class kế thừa, Object khởi tạo từ Class đều có thể truy cập đến thuộc tính và phương thức với kiểu là public.

3. Ví dụ + tại sao lại có tính chất này?

// Vi du chi mang tinh vi du :D, hee

class Hanhtrinhtuoitre
{
    public $name;

    protected $urlAdminPage;

    private $passwordAdmin;
    
    public function register($id, $classId)
    {
        // dang ky tai khoan
    }

    protected function deletePost($id, $classId)
    {
        // xoa mot bai viet
    }

    private function deleteAccount($id, $classId)
    {
        // xoa mot tai khoan
    }
}

Có anh em từng nói với mình: gớm ông chỉ lắm trò, để hết là public cho nó dễ làm việc, có cái gì đâu mà phải đắn đo, suy nghĩ xem là private hay protected hay public.  :38: 

Nghe có vẻ không ổn, tưởng tượng mình xây một cái nhà, xây xong lại cứ để thằng nào thích vào thì vào, thích lấy gì thì lấy, thích thay đổi gì thì thay đổi, thế thì loạn.

Có một Class Nhà.
– Class Nhà có thuộc tính Public $name: giả định nhà mình có tên là hanhtrinhtuoitre, nhưng ông nào thích gọi thế thì gọi, không thì ông ấy có thể tự bịa cho Class Nhà này một cái tên mới ví như: DCM chẳng hạn  :29: 
– Class Nhà có một phương thức là Protected VaoThamNha(): tức là chỉ có hàng xóm, người thân thì vào được. Một thanh niên giời ơi đất hỡi đòi vào nhà là lỗi ngay.
– Class Nhà có một phương thức là Private MoKetSatLayTienChoiGai(): thôi xong, method này thì chỉ mỗi ông chủ nhà mở được thôi, chứ ai mà mém động vào thì chặt cụt tay.

Tạm thời anh em ta thống nhất hiểu chung chung, cơ bản là vậy.

Chắc chắn sau này khi số năm kinh nghiệm tăng lên thì chúng ta sẽ nghiệm và nhìn thấy nó rõ hơn trong từng dòng code.

:39:

This entry was posted in 4 đặc tính của OOP (Object-oriented programming). Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

:1: :2: :12: :46: :59: :51: :38: :31: :22: :15: :8: more »