Mục lục
Hướng đối tượng là gì?
Lập trình hướng đối tượng(OOP) là phương pháp lập trình hướng đến việc triển khai các thực thể trong thế giới thực. OOP được xem là giúp tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc cao hơn. Ngoài ra, nhiều người còn cho rằng OOP dễ tiếp thu hơn cho những người mới học về lập trình hơn là các phương pháp trước đó. Một cách giản lược, đây là khái niệm và là một nỗ lực nhằm giảm nhẹ các thao tác viết mã cho người lập trình, cho phép họ tạo ra các ứng dụng mà các yếu tố bên ngoài có thể tương tác với các chương trình đó giống như là tương tác với các đối tượng vật lý.
Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữ liệu mà chúng được nhìn nhận như là một đơn vị duy nhất. Mỗi đối tượng có một tên riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành qua tên của nó. Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo, xử lý dữ liệu (bên trong của nó), và gửi ra hay trả lời đến các đối tượng khác hay đến môi trường.
Đa phần các ngôn ngữ lập trình thông dụng nhất hiện nay (như C++, Delphi, Java, Python etc.) là các ngôn ngữ lập trình đa mẫu hình và đều hỗ trợ lập trình hướng đối tượng ở nhiều mức độ khác nhau, thường được kết hợp với lập trình mệnh lệnh, lập trình thủ tục. Các ngôn ngữ lập trình hướng đối tượng đáng chú ý gồm có Java, C++, C#, Python, PHP, Ruby, Perl, Object Pascal, Objective-C, Dart, Swift, Scala, Common Lisp, và Smalltalk.
Các tính chất trong lập trình hướng đối tượng
Object
Các thực thể có trạng trái hành vi được gọi là object. vd: cây bút, con người, con chim…
Class
Class là một bản vẽ thiết kế của các object(blueprint). Ví dụ khi nói đến xe đạp thì chúng ta có hàng ngàn chiếc xe đạp thế nhưng mà mỗi chiếc đều khác nhau có thể về giá, chất liệu, thiết kế… nhưng chúng vẫn là xe đạp.
Vậy là xe đạp được hiểu như là một class và hàng ngàn chiếc xe đạp kia mỗi chiếc là một instance.
Kế thừa (Inheritance)
Kế thừa cho phép các class sắp xếp thành các mối quan hệ theo thứ bâc (ông nội -> cha -> con -> cháu).
Class cấp thấp có thể sử dụng các thuộc tính, method… của class cấp trên.
Đa hình (Polymorphism)
Một đối tượng có thể biểu hiện bằng nhiều hình thức và các hành động khác nhau gọi là tính đa hình.
Như ở ví dụ trên, Shape là một đối tượng nó có thể biến hoá thành các hình tam giác, hình tròn…
Trừu tượng (Abstraction)
Trừu tượng cho phép ẩn đi quá trình thực thi bên trong và chỉ hiển thị những chức năng.
Ví dụ: Khi bạn dùng một chiếc điện thoại di dộng có thể gọi điện và nhắn tin và bạn dùng nó để gọi điện và nhắn tin cho bạn bè, thế nhưng bạn không biết được bên trong điện thoại nó làm những gì để thực hiện các yêu cầu gọi và nhắn tin cho chúng ta phải không nào.
Đóng gói (Encapsulation)
Trong lập trình hướng đối tượng việc liên kết dữ liệu và method lại với nhau và giữ chúng an toàn khỏi những tác động bên ngoài gọi là tính đóng gói.
Trong java một class có thể cấp quyền cho một thuộc tính hay một phương thức ra bên ngoài dựa vào các từ khoá:
- public: Cho phép truy cập ở mọi phạm vi
- private: Cho phép truy cập trong nội bộ class
- protected: Chỉ cho phép các class kế thừa truy cập
- default: Chỉ cho phép truy cập nội bộ class và cùng package
Note:
Bốn tính chất: Trừu tượng, kế thừa, đa hình, đóng gói là 4 tính chất quan trọng trong lập trình hướng đối tượng mà chúng ta cần phải nắm thật kỹ càng. Bốn tính chất trên sẽ đi kèm các kỹ thuật trong lập trình mà chúng ta sẽ tìm hiểu ở những phần sau.