Lập trình hướng đối tượng, khó hiểu hay do mình không hiểu
- Mô hình hóa những thứ phức tạp dưới dạng cấu trúc đơn giản để dễ dàng quản lý.
- Code có thể tái sử dụng lại, giúp tiết kiệm tài nguyên và thời gian.
- Giúp dễ dàng debug và sửa lỗi dễ dàng hơn. So với việc tìm lỗi ở nhiều vị trí trong code thì tìm lỗi trong các lớp (được cấu trúc từ trước) đơn giản và ít mất thời gian hơn.
- Có tính bảo mật cao, bảo vệ thông tin quan trọng thông qua đóng gói.
- Dễ dàng mở rộng dự án.
- Thuộc tính (property): là những thông tin về đặc điểm của đối tượng
- Phương thức (method): là những hành động mà đối tượng có thể thực hiện.
Bạn có thể thấy các thuộc tính hay phương thức có chứa các từ như: public, protected, private. Đây là các cách mà OOP quy định phạm vi truy cập (access modifier) cho một thuộc tính hay một phương thức trong một class.
- Public: Bất kì ai cũng có thể truy cập đến được.
- Protected: Những class kế thừa (sử dụng extends) mới được truy cập
- Private: Chỉ truy cập nội bộ trong một class.
Ví dụ bạn có một class trong đó có một thuộc tính mà bạn chỉ muốn sử dụng nội bộ trong class, bên ngoài không thể get cũng set lại giá trị cho thuộc tính đó thì bạn có thể sử dụng private hoặc chỉ lớp kế thừa mới có thể tương tác với thuộc tính thì sẽ là protected, còn public thì bất kì ai cũng có thể thao tác được với thuộc tính.
4.2 Tính kế thừa (Extends)
Tính chất này thì khá dễ hiểu, tính chất này liên quan đến việc tái sử dụng code (reuseable) kế thừa những thứ đã có sẵn ở class cha, có thể thay đổi hoặc chỉnh sửa, thêm những phần mới trong class con. Từ khóa cho tính chất này là extends.
4.2 Tính trừu tượng (Abstract)
Trừu tượng có nghĩ là tổng quát hóa một cái gì đó lên, không cần chú ý chi tiết bên trong. Nó không màng đến chi tiết bên trong là gì và người ta vẫn hiểu nó mỗi khi nghe về nó.
Có thể nói đây là tính chất khó hiểu nhất trong OOP, có thể hiểu rằng việc chúng ta nên trừu tượng. một class và những thứ bên trong nó như, để khi nhìn vào thì có thể biết được class đó là gì và thực hiện được những gì. Theo mình đây là một tính chất khá quan trọng trong việc tổ chức và xây dựng class. Tính chất này cũng được đề cập trong nguyên tắc D trong SOLID. Mình sẽ viết một bài để phân tích về Tại sao cần phải trừu tượng trong OOP?
4.3 Tính đa hình (Polymorphism)
Tính đa hình (Polymorphism) là một đối tượng có thể thực hiện một hành động theo nhiều cách khác nhau. Tính chất này giúp trong việc tái sử dụng code base. Thể hiện rõ nhất thông qua việc override hoặc overload lại các method.
5. Tóm lại:
OOP thật sự sẽ rất khó hiểu nếu mới bắt đầu, thật sự cần nhiều thời gian để tìm hiểu và thực hành. Đến một lúc nào đó bạn sẽ hiểu nó!!!