OOP (Lập trình hướng đối tượng) là khái niệm được khá nhiều bạn mới bắt đầu con đường lập trình quan tâm. Đây là định nghĩa mà bắt buộc những ai đi trên con đường Developer đều phải nắm bắt được. Vậy OOP là gì? Đặc điểm của OOP là gì? Lập trình hướng đối tượng có những nguyên lý nào. Cùng Aptech tìm hiểu trong bài viết dưới đây nhé!
Lập trình hướng đối tượng là gì?
OOP (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.
OOP là một nền tảng quen thuộc của các design pattern hiện nay. OOP đặt ra mục tiêu quản lý source code giúp gia tăng khả năng tái sử dụng và quan trọng hơn hết là có thể tóm gọn được các thủ tục đã biết trước tính chất thông qua quá trình sử dụng các đối tượng.
OOP đượ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 hiện nay như Java, Python, C++, C# Ruby, PHP, JavaScript, .NET ,…đều hỗ trợ lập trình hướng đối tượng.
Giải thích cụ thể về định nghĩa OOP là gì như sau:
Đố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 cho lập trình viên.
- OPP giúp quá trình 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.
- OPP có tính bảo mật cao, bảo vệ thông tin thông qua việc đóng gói.
- OPP dễ mở rộng dự án.
Các nguyên lý cơ bản của OOP
1. Tính đóng gói (Encapsulation)
Tính đóng gói cho phép che giấu thông tin và những tính chất xử lý bên trong của đối tượng. Các đối tượng khác không thể tác động trực tiếp đến dữ liệu bên trong và làm thay đổi trạng thái của đối tượng mà bắt buộc phải thông qua các phương thức công khai do đối tượng đó cung cấp.
Tính chất này giúp tăng tính bảo mật cho đối tượng và tránh tình trạng dữ liệu bị hư hỏng ngoài ý muốn.
2. Tính kế thừa (Inheritance)
Đây là tính chất được sử dụng khá nhiều. Tính kế thừa cho phép xây dựng một lớp mới (lớp Con), kế thừa và tái sử dụng các thuộc tính, phương thức dựa trên lớp cũ (lớp Cha) đã có trước đó.
Các lớp Con kế thừa toàn bộ thành phần của lớp Cha và không cần phải định nghĩa lại. Lớp Con có thể mở rộng các thành phần kế thừa hoặc bổ sung những thành phần mới.
Ví dụ:
- Lớp Cha là smartphone, có các thuộc tính: màu sắc, bộ nhớ, hệ điều hành…
- Các lớp Con là iPhone, Samsung, Oppo cũng có các thuộc tính: màu sắc, bộ nhớ, hệ điều hành…
3. Tính đa hình (Polymorphism)
Tính đa hình trong lập trình OOP cho phép các đối tượng khác nhau thực thi chức năng giống nhau theo những cách khác nhau.
Ví dụ:
- Ở lớp smartphone, mỗi một dòng máy đều kế thừa các thành phần của lớp cha nhưng iPhone chạy trên hệ điều hành iOS, còn Samsung lại chạy trên hệ điều hành Android.
- Chó và mèo cùng nghe mệnh lệnh “kêu đi” từ người chủ. Chó sẽ “gâu gâu” còn mèo lại kêu “meo meo”.
4. Tính trừu tượng (Abstraction)
Tính trừu tượng thể hiện tổng quát hóa lên một cái gì đó mà không cần chú ý các chi tiết bên trong. Nó sẽ không màng đến những chi tiết bên trong là gì mà người ta vẫn có thể hiểu nó ngay mỗi khi nó được nhắc đến.
Trong lập trình OOP thì tính trừu tượng có nghĩa là chọn ra các phương thức, các thuộc tính của đối tượng cần cho việc giải quyết các bài toán lập trình. Bởi vì đối tượng sẽ có rất nhiều thuộc tính phương thức nhưng với bài toán cụ thể thì bạn không nhất thiết phải chọn toàn bộ.
Ví dụ: Quản lý nhân viên thì chỉ cần quan tâm đến những thông tin như:Họ tên, Ngày sinh, Giới tính,… Chứ không cần phải quản lý thêm thông tin về: Chiều cao, Cân nặng, Sở thích, Màu da,..
Những ngôn ngữ OOP phổ biến nhất
Java
Java là ngôn ngữ lập trình hướng đối tượng (OOP), đa mục đích và độc lập nền tảng. Thay vì biên dịch mã nguồn thành mã máy trên nền tảng cụ thể, code Java được biên dịch thành bytecode – một định dạng trung gian. Bytecode sau đó sẽ được chạy bởi môi trường thực thi (runtime environment).
Code Java “viết một lần, chạy mọi nơi” nên khá lý tưởng cho những người mới tìm hiểu.
Python
Python là ngôn ngữ lập trình hướng đối tượng bậc cao, dùng để phát triển website và nhiều ứng dụng khác nhau. Python được tạo ra bởi Guido van Rossum và được phát triển trong một dự án mã mở (open source).
Với cú pháp cực kì đơn giản và thanh lịch, Python là lựa chọn hoàn hảo cho những ai lần đầu tiên học lập trình.
Ruby
Được thiết kế và phát triển bởi Yukihiro Matsumoto, Ruby là một trong các ngôn ngữ lập trình thuần OOP. Có thể nói rằng Ruby hoạt động dựa trên object và object chính là giá trị ẩn bên trong Ruby. Vốn là một ngôn ngữ thông dịch, bậc cao và đa năng nên Ruby rất mạnh mẽ và hiệu quả. Đặc biệt hơn, Ruby còn có những framework (khung lập trình) để developer phát triển ứng dụng web nhanh chóng. Một trong số các framework này chính là Ruby on Rails cực kỳ nổi tiếng trong những năm gần đây.
PHP
PHP là ngôn ngữ lập trình đa mục đích, được rất nhiều Developer sử dụng. Đây là ngôn ngữ kịch bản mã nguồn mở, chạy ở phía server và được dùng để tạo ra các ứng dụng web
JavaScript
JavaScript là ngôn ngữ lập trình được sử dụng trong việc xây dựng các website có tính tương tác cao, với mức độ phổ biến được xếp hạng bậc nhất. Học JavaScript khá dễ dàng và đặc biệt phù hợp cho những developer mới bắt đầu học lập trình.
C++
Là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Bjarne Stroustrup nhưng C++ mang cả 2 phong cách: lập trình hướng cấu trúc giống C và có thêm phong cách hướng đối tượng. Nếu đã quen với lập trình hướng cấu trúc trước đó thì việc học C++ không phải là điều quá khó khăn.
C#
Để đáp trả lại ngôn ngữ lập trình Java của Sun Microsystems, Microsoft tạo ra ngôn ngữ lập trình C#. Nó được thiết kế để trở thành một ngôn ngữ đơn giản, đa năng, hiện đại và hỗ trợ OOP. Có thể nói, ngôn ngữ này là sự cân bằng giữa các ngôn ngữ C++, Visual Basic, Delphi và Java. Từ đó, C# đã dần trở thành nền tảng cho Microsoft .NET Framework cùng nhiều ứng dụng web, phần mềm,… Ngoài ra, Microsoft vẫn không ngừng cải tiến C# để trở nên phù hợp với thời đại, nhu cầu hơn.
Có thể thấy rằng lập trình hướng đối tượng là một trong những quá trình quan trọng không thể thiếu đối với mỗi lập trình viên. Trong bài viết trên. Hy vọng, sau khi tham khảo bài viết thì bạn đã tiếp cận gần hơn với OOP. Chúc bạn sớm thành công trên con đường chinh phục lập trình của mình!