Trường hợp phương pháp của NỀN là một thuật ngữ đặc biệt trong OOP bắt nguồn từ đâu?


13

"Phương pháp" là một thuật ngữ đặc biệt trong Lập trình hướng đối tượng. Có ai biết khi nào từ bắt đầu được sử dụng theo nghĩa đặc biệt này, và liên quan đến ngôn ngữ lập trình hoặc nhánh khác của học định lượng không?

Câu trả lời:


11

Java và C # có phương thức từ C ++, lấy từ Simula .

Algol có lẽ đã có ảnh hưởng đến Simula:

Ngoài ra, phiên bản MIT ALGOL, AED-0, cấu trúc dữ liệu được liên kết ("plexes", theo phương ngữ đó) trực tiếp với các thủ tục, tạo tiền đề cho những gì sau này được gọi là "thông điệp", "phương thức" và "chức năng thành viên"


3
IIRC, C ++ thường thích 'chức năng thành viên' hơn 'phương thức'.
tdammers

Theo cùng một bài viết trên Wikipedia, đặt đồng tiền của thuật ngữ (liên quan đến OOP) trong nửa đầu của thập niên 60.
Tulains Córdova

2

Thật khó để tìm thấy một câu trả lời chắc chắn ngoài kia, nhưng ngôn ngữ đầu tiên đề cập đến mọi thứ như các phương thức dường như là Simula mặc dù điều này có thể sai hoặc hồi tố. Cho rằng các hàm (từ toán học) và các thủ tục (cũng từ toán học) hiển thị trong các ngôn ngữ lập trình, điều tốt nhất tôi có thể hình dung là "Phương thức" là dạng viết tắt của "Phương pháp luận".

Tất cả đều là các chương trình con, các đoạn mã tạo thành một chương trình máy tính. Tôi tưởng tượng "Phương pháp" đã được chọn vì ý tưởng đằng sau lập trình kiểu OOP là sử dụng lại mã càng nhiều càng tốt. Do đó, bạn có thể có một quy trình nhưng một phương pháp làm cho nó rõ ràng hơn rằng đó là một phong cách mới tại nơi làm việc. Thành thật mà nói, tôi đã biết gọi các hàm phương thức và tôi đã nghe các hàm gọi là phương thức.


6
Tôi e rằng bạn 'hình' không chính xác - phương pháp (một quá trình để đạt được mục tiêu) và phương pháp (nghiên cứu) có ý nghĩa khác nhau.
JK

1
Ngoài ra, "phương pháp" đã tồn tại như một từ tiếng Anh trong một thời gian rất dài. Không cần phải tìm một từ dài hơn để ký hợp đồng.
Steve314

Khi sử dụng "hàm" thay vì "phương thức", đó phần lớn là lỗi của C ++ và do thực tế là C không có khái niệm về "thủ tục", chỉ có "hàm" trả về void. Các hàm thành viên C ++ có liên quan rất chặt chẽ với các hàm thông thường (không giống như trong Simula) - có một thistham số ngầm và (có thể) một cơ chế điều phối thời gian chạy không thực sự thay đổi những gì bạn đang xử lý. Tôi không biết nếu C là người đầu tiên coi các chức năng và quy trình là điều tương tự, nhưng Pascal (một ngôn ngữ mới hơn) có các từ khóa functionproceduremặc dù IIRC, các hàm Pascal có thể có tác dụng phụ.
Steve314

Cụ thể, phương pháp là một cách để đạt được mục tiêu, mô tả / kiến ​​thức, chứ không phải bản thân quá trình. Điều này có một ý nghĩa liên quan đến "lớp", một khái niệm trừu tượng khác, xác định một loại đối tượng. Bạn nhận được một lớp đối tượng và phương thức thực hiện X với từng / bất kỳ đối tượng nào, miễn là chúng thuộc lớp đó. Bạn áp dụng một phương pháp chung cho đối tượng cụ thể và nhận kết quả cụ thể cho đối tượng đó.
SF.

1

Tôi đã tìm kiếm thông tin về điều này trong nhiều thập kỷ. Tôi đoán cho đến nay thuật ngữ này được đưa vào Simula từ trường con đặc biệt của tính toán số, trong đó thuật toán cụ thể để thực hiện một hàm (ví dụ, một giá trị riêng hoặc bất cứ thứ gì) thường được gọi là một phương thức . Điều này là do bạn có thể có nhiều phương pháp số khác nhau để tính toán cùng một hàm toán học, với nhiều sự đánh đổi khác nhau. Trong OOP, do ghi đè phương thức, bạn có thể có chức năng "giống nhau" được triển khai khác nhau khi phù hợp với lớp - ví dụ: khu vực sẽ được triển khai khác nhau cho Hình trònHình chữ nhật , cả hai Hình dạng , có một khu vực. Đây có vẻ là một phần mở rộng hợp lý của khái niệm truyền thống về phương pháp số.


0

Tôi không biết gì về từ nguyên của từ này trong lịch sử OOP. Nhưng tôi biết rằng đó không phải là khấu trừ (có thể khấu trừ ). Một thuật ngữ tốt hơn (Thời hạn khấu trừ hoặc MDT nhiều hơn) cho nó có thể là phản ứng hoặc hành động


2
Tôi hoàn toàn chắc chắn rằng tôi không đồng ý với bạn. "Phương thức" là một từ hoàn toàn chính xác cho toàn bộ sự việc bắt đầu như là một cách mô hình hóa nhiều thứ khác nhau, với mỗi "vật thể" là của một lớp, có các phương pháp để thay đổi cách mọi thứ diễn ra. Theo cùng một cách mà các phương pháp thay đổi mọi thứ trong thế giới thực, như thế nào.
Vatine

Tôi đoán "phương thức" ban đầu mô tả mã thực hiện, tương tự như "thủ tục" - phương thức / thủ tục / thuật toán để tính kết quả. Sử dụng nó cho một giao diện mà việc triển khai không được biết đến là một chút khó khăn, nhưng "thông điệp" ban đầu (trong Simula) có lẽ đã được sử dụng cho điều đó. Mặc dù vậy, khi bạn gọi một phương thức, bạn đang gọi mã triển khai, ngay cả khi bạn không thể biết (tại trang web cuộc gọi) thực hiện.
Steve314

1
Tôi đoán ba từ 'hàm', 'thủ tục' và 'phương thức', 'hàm' có ý nghĩa toán học (ánh xạ đầu vào thành đầu ra), 'thủ tục' là bắt buộc (thực hiện một loạt các bước, cũng được sử dụng trong cùng một bước ý nghĩa trong quân đội); 'phương thức' không có ý nghĩa, đó có thể là lý do tại sao nó được ưa thích trong OOP.
tdammers

@Vatine +1 cho "cromulent"
MattDavey

-1

Các lập trình viên với nền tảng REAL BASIC, VBx và VB.net nhận thức được hai loại khai báo phương thức "FUNCTION" & "SUB". Họ ngôn ngữ BASIC cho phép khai báo một hàm với từ khóa "FUNCTION" cũng như từ khóa "SUB". Sự khác biệt giữa hai điều này là "CHỨC NĂNG" có thể hoặc sẽ không trả về giá trị dưới dạng "SUB", chỉ thực thi mã nhưng sẽ không trả về bất kỳ giá trị nào. Nhưng với sự ra đời của các khái niệm OO, các thuật ngữ phụ và chức năng được bắt đầu được sử dụng thay thế cho nhau như các phương thức.


2
Tương tự với quy trình / chức năng của Pascal
Mchl

3
VB sử dụng "Hàm" và "Sub", viết tắt của "Chương trình con", không phải "Phương thức".
Kiến

5
Tôi nghi ngờ Alan Kay đã suy nghĩ cơ bản khi đến với OOP và Smalltalk
Maglob
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.