Phương thức trong lập trình hướng đối tượng (OOP)? Các Phương pháp trong lập trình hướng đối tượng thế nào?
Hiện nay, công nghệ thông tin phát triển vượt bậc, các phương pháp lập trình cũng theo đó đổi mới và sáng tạo. Lập trình hướng đối tượng là một kỹ thuật lập trình nhằm mục đích tạo ra các đối tượng trong code trừu tượng hóa các đối tượng. Phương thức trong lập trình hướng đối tượng bao gồm những phương thức nào và cụ thể từng phương thức ra sao?
Mục lục bài viết
1. Phương thức trong lập trình hướng đối tượng (OOP):
Một phương thức trong lập trình hướng đối tượng (OOP) là một thủ tục được liên kết với một thông báo và một đối tượng. Một đối tượng bao gồm dữ liệu và hành vi; những thứ này tạo ra một giao diện, chỉ định cách đối tượng có thể được sử dụng bởi bất kỳ người tiêu dùng nào trong số những người tiêu dùng khác nhau của nó.
Dữ liệu được biểu diễn dưới dạng các thuộc tính của đối tượng và các hành vi được biểu diễn dưới dạng các phương thức. Ví dụ, một đối tượng Window có thể có các phương thức như mở và đóng, trong khi trạng thái của nó (cho dù nó đang mở hay đóng tại bất kỳ thời điểm nhất định nào) sẽ là một thuộc tính.
Trong lập trình dựa trên lớp, các phương thức được định nghĩa trong một lớp và các đối tượng là các thể hiện của một lớp nhất định. Một trong những khả năng quan trọng nhất mà một phương thức cung cấp là ghi đè phương thức – cùng một tên (ví dụ: khu vực) có thể được sử dụng cho nhiều loại lớp khác nhau. Điều này cho phép các đối tượng gửi gọi các hành vi và ủy quyền việc thực hiện các hành vi đó cho đối tượng nhận. Một phương thức trong lập trình Java thiết lập hành vi của một đối tượng lớp. Ví dụ: một đối tượng có thể gửi thông báo diện tích đến một đối tượng khác và công thức thích hợp được gọi cho dù đối tượng nhận là hình chữ nhật, hình tròn, hình tam giác, v.v.
Các phương thức cũng cung cấp giao diện mà các lớp khác sử dụng để truy cập và sửa đổi các thuộc tính của một đối tượng; điều này được gọi là đóng gói. Đóng gói và ghi đè là hai đặc điểm phân biệt chính giữa các phương thức và lời gọi thủ tục.
Ghi đè và quá tải
Ghi đè và nạp chồng phương thức là hai trong số những cách quan trọng nhất mà một phương thức khác với một thủ tục thông thường hoặc một lệnh gọi hàm. Ghi đè đề cập đến một lớp con xác định lại việc triển khai một phương thức của lớp cha của nó. Ví dụ: findArea có thể là một phương thức được xác định trên một lớp hình dạng, [3] tam giác, v.v. mỗi phương thức sẽ xác định công thức thích hợp để tính diện tích của chúng. Ý tưởng là xem các đối tượng như “hộp đen” để các thay đổi đối với bên trong của đối tượng có thể được thực hiện với tác động tối thiểu đến các đối tượng khác sử dụng nó. Điều này được gọi là đóng gói và có nghĩa là để làm cho mã dễ dàng hơn để bảo trì và sử dụng lại.
Mặt khác, nạp chồng phương thức đề cập đến việc phân biệt mã được sử dụng để xử lý một thông báo dựa trên các tham số của phương thức. Nếu một người xem đối tượng nhận là tham số đầu tiên trong bất kỳ phương thức nào thì ghi đè chỉ là một trường hợp đặc biệt của quá tải trong đó lựa chọn chỉ dựa trên đối số đầu tiên.
2. Các Phương pháp trong lập trình hướng đối tượng thế nào:
– Phương pháp trình truy cập, trình biến đổi và trình quản lý:
Các phương thức truy cập được sử dụng để đọc các giá trị dữ liệu của một đối tượng. Các phương thức đột biến được sử dụng để sửa đổi dữ liệu của một đối tượng. Các phương thức trình quản lý được sử dụng để khởi tạo và hủy các đối tượng của một lớp, ví dụ: hàm tạo và hàm hủy.
Các phương thức này cung cấp một lớp trừu tượng tạo điều kiện cho việc đóng gói và mô-đun hóa. Ví dụ: nếu một lớp tài khoản ngân hàng cung cấp phương thức truy cập get Balance để truy xuất số dư hiện tại (thay vì truy cập trực tiếp vào các trường dữ liệu số dư), thì các bản sửa đổi sau của cùng một mã có thể triển khai một cơ chế phức tạp hơn để truy xuất số dư (ví dụ: , tìm nạp cơ sở dữ liệu), mà không cần thay đổi mã phụ thuộc. Các khái niệm về đóng gói và mô-đun không phải là duy nhất đối với lập trình hướng đối tượng. Thật vậy, theo nhiều cách, cách tiếp cận hướng đối tượng chỉ đơn giản là sự mở rộng hợp lý của các mô hình trước đó như kiểu dữ liệu trừu tượng và lập trình có cấu trúc.
+ Người xây dựng: Hàm tạo là một phương thức được gọi ở đầu vòng đời của đối tượng để tạo và khởi tạo đối tượng, một quá trình được gọi là xây dựng (hoặc khởi tạo). Khởi tạo có thể bao gồm việc mua lại các tài nguyên. Các hàm tạo có thể có các tham số nhưng thường không trả về giá trị trong hầu hết các ngôn ngữ.
+ Kẻ hủy diệt: Hàm hủy là một phương thức được gọi tự động khi kết thúc vòng đời của một đối tượng, một quá trình được gọi là hủy. Hàm hủy trong hầu hết các ngôn ngữ không cho phép đối số của phương thức hủy cũng như không trả về giá trị. Việc tiêu hủy có thể được thực hiện để thực hiện các công việc dọn dẹp và các nhiệm vụ khác khi tiêu hủy đối tượng.
+ Người hoàn thiện: Trong các ngôn ngữ được thu thập rác, chẳng hạn như Java, C # và Python, trình hủy được gọi là trình hoàn thiện. Chúng có mục đích và chức năng tương tự với hàm hủy, nhưng do sự khác biệt giữa ngôn ngữ sử dụng tính năng thu gom rác và ngôn ngữ có quản lý bộ nhớ thủ công, trình tự mà chúng được gọi là khác nhau.
– Phương pháp trừu tượng: Một phương thức trừu tượng là một phương thức chỉ có chữ ký và không có phần thân thực thi. Nó thường được sử dụng để chỉ định rằng một lớp con phải cung cấp một triển khai của phương thức. Các phương thức trừu tượng được sử dụng để chỉ định giao diện trong một số ngôn ngữ lập trình.
– Phương thức lớp:
Phương thức lớp là các phương thức được gọi trên một lớp chứ không phải là một cá thể. Chúng thường được sử dụng như một phần của mô hình siêu đối tượng. Tức là, đối với mỗi lớp, một thể hiện của đối tượng lớp trong mô hình meta được xác định sẽ được tạo. Giao thức siêu mô hình cho phép tạo và xóa các lớp. Theo nghĩa này, họ cung cấp chức năng ame như các hàm tạo và hủy được mô tả ở trên. Nhưng trong một số ngôn ngữ như Hệ thống đối tượng Lisp chung (CLOS), siêu mô hình cho phép nhà phát triển tự động thay đổi mô hình đối tượng tại thời điểm chạy: ví dụ: để tạo các lớp mới, xác định lại hệ thống phân cấp lớp, sửa đổi thuộc tính, v.v.
– Phương pháp đặc biệt:
Các phương thức đặc biệt rất cụ thể về ngôn ngữ và một ngôn ngữ có thể không hỗ trợ, một số hoặc tất cả các phương thức đặc biệt được định nghĩa ở đây. Trình biên dịch của một ngôn ngữ có thể tự động tạo ra các phương thức đặc biệt mặc định hoặc một lập trình viên có thể được phép tùy chọn xác định các phương thức đặc biệt. Hầu hết các phương thức đặc biệt không thể được gọi trực tiếp, mà là trình biên dịch tạo ra mã để gọi chúng vào những thời điểm thích hợp.
– Phương pháp tĩnh:
Các phương thức tĩnh có nghĩa là liên quan đến tất cả các cá thể của một lớp hơn là bất kỳ cá thể cụ thể nào. Chúng tương tự như các biến tĩnh theo nghĩa đó. Một ví dụ sẽ là một phương thức tĩnh để tính tổng các giá trị của tất cả các biến của mọi thể hiện của một lớp. Ví dụ: nếu có một lớp Sản phẩm, nó có thể có một phương thức tĩnh để tính giá trung bình của tất cả các sản phẩm.
Trong Java, một phương thức tĩnh thường được sử dụng là: Math.max (nhân đôi a, nhân đôi b) Phương thức tĩnh này không có đối tượng sở hữu và không chạy trên một cá thể. Nó nhận tất cả thông tin từ các đối số của nó.
Một phương thức tĩnh có thể được gọi ngay cả khi chưa có trường hợp nào của lớp tồn tại. Các phương thức tĩnh được gọi là “tĩnh” vì chúng được giải quyết tại thời điểm biên dịch dựa trên lớp mà chúng được gọi và không động như trong trường hợp với các phương thức thể hiện, được giải quyết đa hình dựa trên kiểu thời gian chạy của đối tượng.
Sao chép toán tử gán: Các toán tử sao chép-gán định nghĩa các hành động sẽ được thực hiện bởi trình biên dịch khi một đối tượng lớp được gán cho một đối tượng lớp cùng kiểu.
Các hàm thành viên trong C ++: Một số ngôn ngữ thủ tục đã được mở rộng với các khả năng hướng đối tượng để tận dụng các bộ kỹ năng lớn và mã kế thừa cho các ngôn ngữ đó nhưng vẫn cung cấp các lợi ích của phát triển hướng đối tượng. Có lẽ ví dụ nổi tiếng nhất là C ++, một phần mở rộng hướng đối tượng của ngôn ngữ lập trình C. Do các yêu cầu thiết kế để thêm mô hình hướng đối tượng vào ngôn ngữ thủ tục hiện có, thông điệp truyền trong C ++ có một số khả năng và thuật ngữ riêng. Ví dụ, trong C ++, một phương thức được gọi là một hàm thành viên. C ++ cũng có khái niệm về các hàm ảo là các hàm thành viên có thể được ghi đè trong các lớp dẫn xuất và cho phép điều phối động.