What is Object-Oriented Programming?

OOP là một mô hình lập trình máy tính tổ chức thiết kế phần mềm xoay quanh dữ liệu hoặc đối tượng, thay vì các chức năng và logic.
Please wait 0 seconds...
Scroll Down and click on Go to Link for destination
Congrats! Link is Generated

What is Object-Oriented Programming?

Lập trình hướng đôi tượng (OOP) là một mô hình lập trình máy tính tổ chức thiết kế phần mềm xoay quanh dữ liệu hoặc đối tượng, thay vì các chức năng và logic. Một đối tượng có thể được định nghĩa như một trường dữ liệu có các thuộc tính và hành vi duy nhất.

OOP tập trung vào các đối tượng mà các nhà phát triển muốn điều khiển (manipulate - vận dụng) thay vì các logic cần thiết để điều khiển chúng. Cách tiếp cận (approach) này trong lập trình rất phù hợp với các chương trình lớn, phức tạp và được cập nhật và bảo trì một cách tích cực. Điều này bao gồm các chương trình sản xuất (manufacturing - chế tạo) và thiết kế, cũng như các ứng dụng di động. Ví dụ, OOP có thể được sử dụng để sản xuất phần mềm mô phỏng hệ thống.

Việc tổ chức một chương trình hướng đối tượng cũng làm cho phương pháp này có lợi (beneficial - có lợi) cho việc phát triển hợp tác (collaborative - hợp tác), trong đó các dự án được chia thành các nhóm. Lợi ích bổ sung của OOP bao gồm khả năng tái sử dụng code, khả năng mở rộng và hiệu quả (efficiency).

Lập trình thủ tục (Procudural Programming) là viết các thủ tục hoặc các phương thức thực hiện thao tác trên dữ liệu, trong khi lập trình hướng đối tượng là tạo ra các đối tượng chưa cả dữ liệu và phương thức.

Lập trình hướng đối tượng có một vài ưu điểm so với lập trình thủ tục:

  • OOP nhanh hơn và dễ thực thi hơn
  • OOP cung cấp một cấu trúc rõ ràng cho các chương trình
  • OOP giúp cho mã nguồn DRY (Don't repeat yourself), và làm cho code dễ dàng hơn trong việc bảo trì, chỉnh sửa và gỡ lỗi.
  • OOP cho phép tạo các ứng dụng có thể tái sử dụng hoàn toàn với ít code hơn và thời gian phát triển ngắn hơn.

What is the structure of OOP?

Cấu trúc của hướng đối tượng bao gồm:
  • Classes - Các lớp: là các kiểu dữ liệu do người dùng tự định nghĩa đóng vai trò (act as) là bản thiết kế (blueprint) chi tiết cho các đối tượng cụ thể, bao gồm thuộc tính và phương thức riêng lẻ (individual - cá nhân, riêng tư).
  • Objects - Đối tượng là các thể hiện của một lớp được tạo bằng dữ liệu được xác định cụ thể. Các đối tượng có thể tương ứng (correspond - giống nhau) với các đối tượng  trong thế giới thực hoặc một thể trừu tượng. Khi lớp được định nghĩa ban đầu, mô tả là đối tượng duy nhất được định nghĩa.
  • Methods - Các phương thức là các hàm được định nghĩa bên trong một lớp nhằm mô tả các hành vi của một đối tượng. Mỗi phương thức chứa trong định nghĩa lớp bắt đầu bằng cách tham chiếu đến một đối tượng thể hiện (instance object). Ngoài ra, các chương trình con (subroutines) chứa trong một đối tượng được gọi là các phương thức thể hiện (instance methods). Các lập trình viên sử dụng các phương thức để tái sử dụng hoặc giữ việc chức năng được đóng gọi bên trong một đối tượng vào một thời điểm.
  • Attributes - Các thuộc tính được định nghĩa trong mẫu lớp và đại diện cho trạng thái của một đối tượng. Đối tượng sẽ có dữ liệu được lưu trữ trong các trường thuộc tính. Các thuộc tính lớp thuộc về chính lớp đó.

What are the main principles of OOP?

Encapsulation

All importance information is contained inside an object and only select information is exposed.

Tính đóng gọi khẳng định rằng tất cả các thông tin quan trọng được chứa bên trong một đối tượng và chỉ một số thông tin được tiết lộ. Việc triển khai và trạng thái của mỗi đối tượng được giữ riêng tư bên trong một lớp được xác định. Các đối tượng khác không có quyền truy cập vào lớp này hoặc có thẩm quyền thực hiện thay đổi. Chúng chỉ có thể gọi một danh sách các hàm hoặc phương thức công khai. Đặc điểm (characteristic - đặc trưng) này của việc ẩn dữ liệu cung cấp tính bảo mật cao hơn cho chương trình và tránh làm hỏng (corruption - tham nhũng, bại hoại, sự hỏng) dữ liệu ngoài ý muốn (intended - dự định).

Abstraction

Objects only reveal internal mechanism that are relevant for the use of other objects, hiding any unnecessary implementation code.

Tính trừu tượng chỉ ra rằng các đối tượng chỉ tiết lộ (reveal) các cơ chế (mechanism) nội bộ có liên quan (relevant) đến việc sử dụng của các đối tượng khác, ẩn đi bất kì mã triển khai không cần thiết nào. Lớp dẫn xuất (derived - nguồn gốc) có thể có thể mở rộng chức năng của nó. Khái niệm này có thể giúp các nhà phát triển dễ dàng hơn trong việc thực hiện các thay đổi bổ sung hoặc bổ sung theo thời gian.

Inheritance

Classes can reuse code form other classes.

 Các lớp có thể tái sử dụng code từ những lớp khác. Các mối quan hệ và lớp con giữa các đối tượng có thể được gán, cho phép các nhà phát triển tái sử dụng các logic chung trong khi vẫn duy trì một bảng phân cấp duy nhất. Thuộc tính này của OOP buộc phải phân tích dữ liệu kỹ lưỡng hơn (thorough - kỹ lưỡng), giảm thiểu thời gian phát triển và đảm bảo mức độ chính xác cao hơn (accuracy - độ chính xác).

Polymorphism

Objects are designed to share behaviors and they can take on more than one form.

 Các đối tượng được thiết kế để chia sẻ các hành vi và chúng có thể có nhiều hình dạng. Chương trình sẽ xác định (determine) xem ý nghĩa hoặc cách sử dụng nào là cần thiết cho mỗi lần thực thi của đối tượng từ một lớp cha, giảm thiểu nhu cầu (reducing the need) sao chép mã. Một lớp con sau đó được tạo ra, nó mở rộng chức năng của lớp cha. Tính đa hình cho phép các loại đối tượng khác nhau đi qua cùng một giao diện.

What are the benefits of OOP?

Lợi ích của OOP bao gồm:
  • Modularity - Tính mô đun. Tính đóng gói cho phép các đối tượng được khép kín (self-contained - bí mật, kín đáo), giúp việc khắc phục sự cố (troubleshooting - xử lý sự cố) và phát triển hợp tác trở nên dễ dàng hơn.
  • Reusability - Khả năng tái sử dụng. Mã có thể được sử dụng lại thông qua sự kế thừa, có nghĩa là một nhóm không cần thiết phải viết cùng một đoạn code nhiều lần.
  • Productivity - Năng suất. Các lập trình viên có thể cấu trúc các chương trình mới nhanh hơn thông qua việc sử dụng nhiều thư viện và mã có thể tái sử dụng.
  • Easily upgradable and scalable -  Dễ dàng nâng cấp và mở rộng. Các lập trình viên có thể triển khai các chức năng của hệ thống một cách độc lập (independently).
  • Interface description - Mô tả giao diện. Việc mô tả các hệ thống bên ngoài rất đơn giản, do (due to - bởi vì) kỹ thuật truyền thông điệp (message passing techniques) được sử dụng để liên lạc với các đối tượng.
  • Security - Bảo mật. Bằng cách sử dụng tính đóng gói và trừu tượng hóa, mã phức tạp sẽ được ẩn đi, bảo trì phần mềm sẽ dễ dàng hơn và các giao thức mạng được bảo vệ.
  • Flexibility - Sự linh hoạt. Tính đa hình cho phép một hàm đơn thích ứng (adapt - thích nghi) với class mà nó được đặt vào. Các đối tượng khác nhau có thể đi qua cùng một giao diện.

Criticism of OOP?

Mô hình lập trình hướng đối tượng đã bị chỉ trích (criticized) bởi các nhà phát triển vì nhiều lý do. Mối quan tâm lớn nhất là OOP quá nhấn mạnh (overemphasizes - nhấn mạnh quá mức) vào thành phần dữ liệu của phát triển phần mềm mà không tập trung đủ vào tính toán hay thuật toán. Thêm nữa, mã OOP có thể phức tạp hơn khi viết và mất nhiều thời gian biên dịch hơn.

Các phương pháp thay thế cho OOP bao gồm:

  • Functional Programming - Lập trình chức năng. Điều này bao gồm các ngôn ngữ như Erlang và Scala, những ngôn ngữ được sử dụng cho các hệ thống viễn thông có khả năng chịu lỗi.
  • Structured or modular programming - Lập trình có cấu trúc hoặc mô đun. Điều này bao gồm các ngôn ngữ như PHP và C#.
  • Imperative programming - Lập trình bắt buộc. Sự thay thế này giúp cho OOP tập trung vào các chức năng hơn là mô hình và bao gồm C++ và Java.
  • Declarative programming - Lập trình khai báo. Phương pháp lập trình này liên quan đến (involves) các câu lệnh nêu ra nhiệm vụ hoặc kết quả mong muốn (desired outcome) mà không nói rõ cách thức để đạt được nó. Các ngôn ngữ bao gồm Prolog và Lisp.
  • Logical programming - Lập trình logic. Phương pháp này chủ yếu dựa trên logic hình thức và sử dụng các ngôn ngữ như Prolog, chứa một tập hợp các câu mô tả các sự thật hoặc quy tắc về một lĩnh vực vấn đề. Nó tập trung vào các nhiệm vụ có thể hưởng lợi từ các truy vấn logic dựa trên quy tắc (rule-based logical queries).
Hầu hết các ngôn ngữ lập trình bậc cao cho phép các nhà phát triển kết hợp các mô hình vì chúng có thể được sử dụng cho các phương pháp lập trình khác nhau. Ví dụ, JavaScript có thể sử dụng cho OOP và lập trình chức năng.

Đăng nhận xét

Tham gia cuộc trò chuyện