Tôi biết những điều cơ bản của phương pháp này, thủ tục, chức năng và các lớp học, nhưng tôi luôn luôn nhầm lẫn giữa những người trái ngược với lập trình hướng đối tượng vì vậy xin vui lòng bất kỳ cơ thể cho tôi biết sự khác biệt giữa những người có ví dụ đơn giản?phương pháp vs chức năng vs thủ tục vs lớp học?
Trả lời
Một lớp, trong hiện tại, OOP truyền thống, là một tập hợp các dữ liệu (biến thành viên) liên kết với nhau với các chức năng/thủ tục mà làm việc trên dữ liệu đó (hàm thành viên hoặc các phương pháp). Lớp không có mối quan hệ với ba thuật ngữ khác ngoài thực tế là nó "chứa" (đúng hơn "được liên kết với") sau này.
Ba cụm từ còn lại ... tốt, điều đó phụ thuộc.
Chức năng là tập hợp các câu lệnh tính toán. Vậy là thủ tục . Tuy nhiên, trong một số ngôn ngữ nhớ lại rất hậu môn, một hàm trả về một giá trị và một thủ tục thì không. Trong thủ tục ngôn ngữ như vậy thường được sử dụng cho các tác dụng phụ của họ (như I/O) trong khi các chức năng được sử dụng để tính toán và có xu hướng tránh tác dụng phụ. (Đây là cách sử dụng tôi có xu hướng ưu tiên. Có, tôi là người theo dõi hậu môn.)
Hầu hết các ngôn ngữ không phải là hậu môn, và kết quả là mọi người sẽ sử dụng thuật ngữ "chức năng" và "thủ tục" , thích cái kia dựa trên nền của chúng. (Modula- * lập trình viên sẽ có xu hướng sử dụng "thủ tục" trong khi C/C++/Java/bất cứ điều gì sẽ có xu hướng sử dụng "chức năng", ví dụ.)
Một phương pháp chỉ là biệt ngữ cho một hàm (hoặc thủ tục) liên kết với một lớp học. Thật vậy không phải tất cả các ngôn ngữ OOP đều sử dụng thuật ngữ "phương pháp". Trong một triển khai điển hình (nhưng không phổ quát!), Các phương thức có một tham số đầu tiên ngụ ý (được gọi là các thông số như this
hoặc self
hoặc tương tự) để truy cập lớp chứa. Đây không phải là, như tôi đã nói, phổ quát. Một số ngôn ngữ làm cho tham số đầu tiên đó rõ ràng (và do đó cho phép được đặt tên bất cứ điều gì bạn muốn) trong khi vẫn còn những người khác không có tham số đầu tiên kỳ diệu nào cả.
Edited để thêm ví dụ này:
Sau đây chưa được kiểm tra và uncompiled C++ - như mã sẽ hiển thị cho bạn những gì loại của sự vật có liên quan.
class MyClass
{
int memberVariable;
void setMemberVariableProcedure(int v)
{
memberVariable = v;
}
int getMemberVariableFunction()
{
return memberVariable;
}
};
void plainOldProcedure(int stuff)
{
cout << stuff;
}
int plainOldFunction(int stuff)
{
return 2 * stuff;
}
Trong mã này getMemberVariableProcedure
và getMemberVariableFunction
là cả hai phương pháp.
Sự khác biệt về chức năng/thủ tục không thực sự là hậu môn - đó là một ý tưởng thực sự hay và thường được gọi là tách/truy vấn. – kyoryu
Tất cả những điều đó có nghĩa là bạn đang trở thành người theo dõi qua đường hậu môn (hay là "hậu môn") như tôi vậy. ;) –
Cảm ơn bạn có thể cung cấp cho tôi ví dụ. để phân biệt giữa điều này? –
Thủ tục, chức năng và phương pháp nhìn chung giống nhau, chúng giữ một số câu lệnh xử lý.
Sự khác biệt duy nhất tôi có thể nghĩ giữa ba địa điểm này và những nơi chúng được sử dụng.
Tôi có nghĩa là 'phương pháp' thường được sử dụng để xác định các hàm bên trong lớp, trong đó một số loại quyền truy cập của người dùng giống như công khai, được bảo vệ, riêng tư có thể được xác định.
"Thủ tục", cũng có chức năng nhưng thường đại diện cho một loạt chức năng cần được thực hiện, khi hoàn thành một chức năng hoặc tương tự với một chức năng khác.
Lớp học là tập hợp các thuộc tính và phương pháp liên quan. Các thuộc tính định nghĩa đối tượng của lớp khi các phương thức là hành động được thực hiện bởi hoặc được thực hiện trên lớp.
Hope, đây là hữu ích
Theo truyền thống, sự khác biệt giữa thủ tục và hàm là hàm trả về giá trị trong khi thủ tục không. Các ngôn ngữ kiểu C không tạo ra sự khác biệt này - mọi thứ đều là một hàm, nó chỉ có thể trả về 'void'. – walkytalky
@walkytalky, cảm ơn bạn đã thêm rằng – Starx
- 1. Thủ tục PL/Sql vs chức năng?
- 2. chức năng của Ruby vs phương pháp
- 3. Objective C Lớp Phương pháp vs Chức năng C
- 4. Constructors vs Phương pháp Factory
- 5. Thủ tục lưu trữ Vs. Xem
- 6. Chức năng Ada vs Quy trình
- 7. Lisp: Macros vs Chức năng
- 8. chức năng Freemarker vs macro
- 9. Chức năng Scala vs Class Dichotomy
- 10. thủ tục thông điệp Window trong Linux vs Windows
- 11. Đóng vs chức năng Anonymous
- 12. IS vs AS từ khóa cho PL/SQL Oracle Chức năng hoặc thủ tục tạo
- 13. C dụ # lớp học với phương pháp tĩnh vs sử dụng bộ nhớ lớp tĩnh
- 14. F # trận đấu rõ ràng vs cú pháp chức năng
- 15. Các phương thức lớp VS Các hàm tĩnh lớp VS Các hàm đơn giản - Hiệu năng-khôn ngoan?
- 16. C++ - Namespace vs Chức năng tĩnh
- 17. Fourier() vs fourierf() chức năng trong R
- 18. Nhiều truy vấn VS Thủ tục lưu trữ
- 19. Thủ tục lưu trữ EXEC vs sp_executesql khác biệt?
- 20. chức năng ảo const vs chức năng ảo không const
- 21. chức năng inline vs chức năng vĩ mô
- 22. Lớp tĩnh vs Singleton
- 23. Javascript - Đối số Vs Chức năng lồng nhau Hiệu suất Vs
- 24. . vs :: (dot vs đúp dấu hai chấm) để gọi một phương pháp
- 25. Phương pháp so sánh toàn cầu vs hàm tĩnh
- 26. Generics vs Phương pháp quá tải
- 27. Nhận Phương pháp: Một vs Nhiều
- 28. Mathematica: Unevaluated vs Defer vs Hold vs HoldForm vs HoldAllComplete vs etc etc
- 29. Bao gồm lớp học vs Khai báo lớp
- 30. Delegate.CreateDelegate vs DynamicMethod vs Biểu
Một trong những thuật ngữ này không thực sự phù hợp với những người khác :) (theo so sánh) –