OOP là gì? Tìm hiểu về lập trình hướng đối tượng
Lập trình hướng đối tượng (OOP) là gì? OOP được dùng để làm gì?
Lập trình hướng đối tượng (Object Oriented Programming – OOP) là một trong những kỹ thuật lập trình rất quan trọng và sử dụng nhiều hiện nay. Hầu hết các ngôn ngữ lập trình hiện nay như Java, PHP, .NET, Ruby, Python… đều hỗ trợ OOP. Vậy lập trình hướng đối tượng là gì? Và các nguyên lý cơ bản trong OOP cần biết là gì?
OOP (viết tắt của Object Oriented Programming) – lập trình hướng đối tượng là một phương pháp lập trình dựa trên khái niệm về lớp và đối tượng. OOP tập trung vào các đối tượng thao tác hơn là logic để thao tác chúng.
Mục tiêu của OOP là tối ưu việc quản lý source code, giúp tăng khả năng tái sử dụng và quan trọng hơn hết là giúp tóm gọn các thủ tục đã biết trước tính chất thông qua việc sử dụng các đối tượng.
Đối tượng (Object) và Lớp (Class) trong OOP là gì?
Đối tượng (Object)
Đối tượng trong OOP bao gồm 2 thành phần chính:
- Thuộc tính (Attribute): là những thông tin, đặc điểm của đối tượng
- Phương thức (Method): là những hành vi mà đối tượng có thể thực hiện
Để dễ hình dung, ta có một ví dụ thực tế về đối tượng là smartphone. Đối tượng này sẽ có:
- Thuộc tính: màu sắc, bộ nhớ, hệ điều hành…
- Phương thức: gọi điện, chụp ảnh, nhắn tin, ghi âm…
Lớp (Class)
Lớp là sự trừu tượng hóa của đối tượng. Những đối tượng có những đặc tính tương tự nhau sẽ được tập hợp thành một lớp. Lớp cũng sẽ bao gồm 2 thông tin là thuộc tính và phương thức.
Một đối tượng sẽ được xem là một thực thể của lớp.
Tiếp nối ví dụ ở phần đối tượng (object) phía trên, ta có lớp (class) smartphone gồm 2 thành phần:
- Thuộc tính: màu sắc, bộ nhớ, hệ điều hành…
- Phương thức: gọi điện, chụp ảnh, nhắn tin, ghi âm…
Các đối tượng của lớp này có thể là: iPhone, Samsung, Oppo, Huawei…
Ưu điểm của lập trình hướng đối tượng OOP:
- OOP mô hình hóa những thứ phức tạp dưới dạng cấu trúc đơn giản.
- Code OOP có thể sử dụng lại, giúp tiết kiệm tài nguyên.
- Giúp 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 thông qua đóng gói.
- Dễ mở rộng dự án.
4 đặc tính cơ bản của OOP là :
Tính đóng gói
Tính đóng gói và che dấu thông tin của OOP thường không cho phép người dùng sử dụng đối tương để thay đổi trạng thái nội tại của đối tượng. Tính chất này đảm bảo sự toàn vẹn của đối tượng. Chỉ có các phương thức nội tại của đối tượng mới có thể cho phép thay đổi trạng thái của nó. Việc cho phép môi trường tác động lên dữ liệu nội tại là tùy thuộc hoàn toàn vào người viết mã.
Tính kế thừa
Thuộc tính này của OOP cho phép một đối tượng có thể có sẵn các đặc tính mà đối tượng khác đã có, thông qua tính kế thừa. Cho phép các đối tượng chia sẻ cũng như mở rộng các đặc tính sẵn có mà không cần phải định nghĩa lại. Tuy vậy, không phải bất cứ ngôn ngữ định hướng nào cũng đều có tính chất này. Mà việc kế thừa chỉ có thể là lớp con thừa hưởng những gì lớp cha có và cho phép.
Tính đa hình
Tính chất này của lập trình hướng đối tượng thể hiện ở việc gửi các thông điệp. Các phương thức để trả lời cho một thông điệp sẽ tùy vào đối tượng để có phản ứng khác nhau. Lập trình viên có thể định nghĩa một đặc tính cho loạt những đối tượng gần nhau. Tính đa hình này cho phép các chức năng khác nhau được thực thi khác nhau trên các đối tượng khác nhau.
Tính trừu tượng
Tính trừu tượng cho phép lập trình hướng đối tượng có khả năng tập trung vào những cái cốt lõi, cần thiết nhất. Mỗi đối tượng có thể hoàn tất công việc nội bộ, báo cáo, thay đổi trạng thái, liên lạc với các đối tượng khác. Tính trừu tượng được xác định trong khái niệm lớp trừu tượng tập trung vào cốt lõi, bỏ qua những thứ không quan trọng của đối tượng.