Lập trình hướng đối tượng (OOP) là một trong những kỹ thuật lập trình cực kì quan trọng vào thời điểm hiện tại. Nó được áp dụng ở hầu hết các ứng dụng thực tế xây dựng tại các doanh nghiệp. Hầu hết các ngôn ngữ lập trình và framework lập trình phổ biến vào thời điểm hiện tại như Java, PHP, .NET, ruby đều hỗ trợ lập trình hướng đối tượng
1. Lập trình hướng đối tượng (OOP) là gì?
Lập trình hướng đối tượng (OOP) là một kỹ thuật lập trình cho phép lập trình viên tạo ra các đối tượng trong code trừu tượng hóa các đối tượng.
Đối tượng
Một đối tượng mục tiêu bao gồm 2 thông tin: tính chất và phương thức.
- Thuộc tính chính là những thông tin, đặc điểm của đối tượng mục tiêu. Ví dụ: con người có các đặc tính như mắt, mũi, tay, chân…
- Phương thức là những thao tác, hành động mà đối tượng mục tiêu đó có thể thực hiện. Ví dụ: một người sẽ có thể thực hiện hành động nói, đi, ăn, uống, . . .
Lớp
Một lớp là một kiểu dữ liệu gồm có các tính chất và các phương thức được khái niệm từ trước. đây là sự trừu tượng hóa của đối tượng mục tiêu.
Khác với kiểu dữ liệu thường thường, một lớp là một đơn vị (trừu tượng) bao gồm sự kết hợp giữa các phương thức và các thuộc tính. Hiểu nôm na hơn là các đối tượng có các đặc tính tương tự nhau được gom lại thành một lớp đối tượng.
Sự khác nhau giữa đối tượng và lớp
Lớp là một khuôn mẫu còn đối tượng là một thể hiện nhất định dựa trên khuôn mẫu đấy.
Để dễ hiểu hơn mình sẽ lấy một VD thực tế:
Đề cập về con mèo thì lớp chính là loài mèo. Loài mèo có:
- Các thông tin, đặc điểm như 4 chân, 2 mắt, có đuôi, có chiều cao, có cân nặng, màu lông . . .
- Các hành động như: kêu meo meo, đi, ăn, ngủ, . . .
Như vậy mọi động vật thuộc loài mèo sẽ có những đặc điểm như trên.
Đối tượng mục tiêu chính là một con mèo nhất định nào đấy như con mèo con đang nằm dưới chân mình.
2. Tại sao cần đến lập trình hướng đối tượng?
OOP – lập trình hướng đối tượng ra đời để khắc phục tất cả những nhược điểm của những phương pháp lập trình trước đây có quá nhiều bất cập. Cụ thể:
- Lập trình hướng đối tượng mục tiêu rất sát với đời thực, áp dụng thực tế với chương trình. Khi đã hình dung được các đối tượng mục tiêu với các phương thức thuộc tính nào rồi. Thì lập trình viên có thể phát triển chương trình một cách tự nhiên, gần gũi với ngôn ngữ tự nhiên.
- OOP còn cung cấp năng lực sửa lỗi rất nhanh do gân gũi với ngôn ngữ tự nhiên.
- Dễ dàng quản lý code khi có những sự thay đổi từ chương trình
- Tính bảo mật rất cao, dễ mở rộng dự án
- OOP cho phép sử dụng mã nguồn để tiết kiệm tài nguyên
- Lập trình hướng đối tượng mục tiêu cũng rất trực quan khi chuyển từ mô hình phân tích thức tế sang mô hình thực thi phần mềm
- Năng lực bảo trì, thay đổi chương trình đạt kết quả tốt và rất nhanh hơn
- Đơn giản chia hệ thống thành từng phần nhỏ để giao về cho các nhóm phát triển.
- Năng lực tái dùng mã khi xây dựng những chương trình khác
- Tích hợp rất khả quan với các máy tính sẵn có, thích hợp với các hệ điều hành tối tân. năng lực tạo bố cục và giao diện người sử dụng trực quan
- OOP làm tăng năng suất, đơn giản hóa độ khó hiểu của bảo trì cũng như mở rộng phần mềm. Giảm nhẹ các thao tác viết mã cho người lập trình.
Chính vì thế mà OOP được dùng rộng rãi, lập trình viên có thể làm ra các ứng dụng mà các yếu tố bên ngoài có thể trao đổi qua lại với chương trinh đấy kiểu như các đối tượng vật lý.
3. Ưu điểm của lập trình hướng đối tượng
Dữ liệu không bị thay đổi tự do trong chương trình như lập trình cấu trúc.
Khi thay đổi cấu trúc dữ liệu của một đối tượng, không cần thay đổi các mã nguồn của các đối tượng mục tiêu khác mà chỉ cần thanh đổi một một số hàm thành phần
Có thể dùng lại mã nguồn qua kế thừa
Thích hợp các phần mềm phức tạp, lớn.
Được cho là dễ học, năng suất, dễ dàng, dễ bảo trì, dễ mở rộng…
4. Các đặc điểm cơ bản của lập trình hướng đối tượng
Tính đóng gói (Encapsulation)
Tính chất này không cho phép người sử dụng trực tiếp gây ảnh hưởng đến dữ liệu bên trong đối tượng mục tiêu mà phải thông qua các phương thức mà đối tượng mục tiêu cung cấp, thuộc tính này đảm bảo tính toàn vẹn của đối tượng mục tiêu.
Trong đoạn code trên tính đóng gói được thể hiện qua các thuộc tính mausac, chieudai, chieurong và phương thức input(), output() vào trong class mayvitinh. Bạn không thể truy xuất đến các private data hoặc gọi đến private methods của class từ bên ngoài class đấy.
Tính kế thừa (Inheritance)
Kế thừa, tái sử dụng phương thức, thuộc tính của lớp cơ sở và lớp kế thừa được gọi là lớp con, nó sẽ thừa hưởng những gì lớp cha có và cho phép.
Cũng với VD là class mayvitinh, class này sẽ có các thuộc tính: mausac, chieudai, chieurong. Một class mayAsus, mayAcer sẽ kế thừa class mayvitinh do mayAsus cũng có các thuộc tính: mausac, chieudai, chieurong.
Thay vì sao chép những thuộc tính này, ta nên đặt chúng vào một lớp chung gọi là lớp cha – trong trường hợp này là mayvitinh và có những lớp con mayAsus, mayAcer kế thừa từ nó, tạo ra một mối quan hệ cha/con.
Tính đa hình (Polymorphism)
Với đa số lập trình viên thì tính Kế thừa và Đóng gói trong OOP khá dễ hiểu còn tính Đa hình khi mới tiếp cận sẽ thấy khó hiểu hơn một chút. tuy nhiên đây lại là một thuộc tính có thể nói là chứa đựng hầu hết sức mạnh của lập trình hướng đối tượng.
Hiểu một cách đơn giản: Đa hình là khái niệm mà hai hoặc nhiều lớp có những phương thức giống nhau nhưng có thể thực thi theo những cách thức không giống nhau.
Tính trừu tượng(Abstraction)
Chú ý vào cốt lõi của đối tượng, bỏ qua những thứ không liên quan và không cần thiết.
Ví dụ: Bài toán quản lý học viên chúng ta chỉ cần quản lý các thông tin như
Họ và tên
Ngày sinh
Giới tính
…
Mà lại không cần quản lý thêm các thông tin:
Cân nặng
Màu da
Chiều cao
Tại vì chúng thực sự không quan trọng.
5. Kết luận
Hy vọng bài viết này sẽ mang đến một cái gì đó dễ dàng tiếp cận hơn cho các bạn, nhất là những lập trình viên mới tiếp xúc với lập trình hướng đối tượng. Chúc bạn thành công!
Xem thêm: Tổng hợp các công việc ngành IT hot nhất hiện nay
Phương Thoa – Tổng hợp, chỉnh sửa
(Nguồn tham khảo: topdev, codelearn, daynhauhoc)
Bình luận về chủ đề post