Znam podstawy tych metod, procedur, funkcji i klas, ale zawsze mylę się odróżniać wśród tych w przeciwieństwie do programowania obiektowego, więc proszę, czy jakiekolwiek ciało może mi powiedzieć różnicę między tymi z prostymi przykładami?metoda vs funkcja vs procedura vs klasa?
Odpowiedz
klasy, w tym, konwencjonalną OOP jest zbiór danych (zmienne) połączone razem za pomocą funkcji/procedur, które działają w tym danych (wywołaniach i metod). Klasa nie ma żadnego związku z pozostałymi trzema terminami, poza tym, że "zawiera" (bardziej poprawnie "kojarzy się z") tą ostatnią.
Pozostałe trzy pojęcia ... cóż, to zależy.
A funkcja to zbiór instrukcji komputerowych. Tak samo jest z procedurą . W niektórych bardzo retencyjnych językach funkcja zwraca jednak wartość, a procedura nie. W takich językach procedury są zwykle stosowane do efektów ubocznych (takich jak I/O), podczas gdy funkcje są wykorzystywane do obliczeń i mają tendencję do unikania efektów ubocznych. (To jest użycie, które preferuję, tak, jestem tym analnym retencyjnym.)
Większość języków nie jest jednak retentywna dla odbytu, dlatego ludzie będą używać terminów "funkcja" i "procedura" zamiennie , preferując jeden do drugiego w oparciu o ich tło. (Modula- * programiści mają tendencję do korzystania z „procedury”, podczas gdy C/C++/Java/cokolwiek będzie miał tendencję do korzystania z „funkcji”, na przykład.)
metoda tylko żargon dla funkcji (lub procedury) związany z klasą. Rzeczywiście, nie wszystkie języki OOP używają terminu "metoda". W typowej (ale nie uniwersalnej!) Implementacji metody mają domyślny pierwszy parametr (nazywany takimi, jak this
lub self
lub tym podobne) w celu uzyskania dostępu do klasy zawierającej. To nie jest, jak powiedziałem, uniwersalne. Niektóre języki sprawiają, że ten pierwszy parametr jest wyraźny (i tym samym pozwala na to, aby można go było nazwać dowolnie), podczas gdy w jeszcze innych nie ma żadnego magicznego pierwszego parametru.
Edited by dodać ten przykład:
Poniższy niesprawdzone i nieskompilowanego C++ - jak kod powinien pokazać, jakie rzeczy są zaangażowane.
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;
}
W tym kodzie getMemberVariableProcedure
i getMemberVariableFunction
są oba sposoby.
Różnica funkcji/procedury nie jest tak naprawdę analna - to naprawdę dobry pomysł i często nazywana jest separacją poleceń/zapytań. – kyoryu
Wszystko to oznacza, że jesteś jak retentive analny (lub jest to "anal-retentive"?), Jak ja. ;) –
Dzięki, możesz podać mi przykład. dla rozróżnienia tego? –
Procedury, funkcje i metody są na ogół jednakowe, zawierają pewne instrukcje przetwarzania.
Jedyne różnice, jakie mogę wymyślić między tymi trzema a miejscami, w których są używane.
Mam na myśli "metody" są zazwyczaj używane do definiowania funkcji w klasie, gdzie można zdefiniować kilka rodzajów dostępu użytkowników, takich jak publiczne, chronione, prywatne.
"Procedury", są również funkcją, ale na ogół reprezentują szereg funkcji, które należy wykonać po zakończeniu jednej funkcji lub równolegle z drugą.
Klasy to zbiór powiązanych atrybutów i metod. Atrybuty definiują obiekt klasy, gdzie metody są akcją wykonywaną przez klasę lub na niej.
Hope, to jako
Tradycyjnie różnica między procedurą a funkcją polega na tym, że funkcja zwraca wartość, podczas gdy procedura nie. Języki w stylu C nie powodują tego rozróżnienia - wszystko jest funkcją, może po prostu zwrócić 'void'. – walkytalky
@walkytalky, dzięki za dodanie, że – Starx
- 1. Funkcja Ada vs Procedura
- 2. Klasa vs pakiet vs moduł vs komponent vs kontener kontra serwis vs platforma w świecie Java
- 3. Wiele zapytań Procedura przechowywana VS
- 4. Klasa podstawowa vs Klasa użyteczności
- 5. ZipPackage Klasa vs Zipfile klasa
- 6. Klasa VS ref Struct
- 7. Klasa Object vs HashMap
- 8. body.scrollTop vs documentElement.scrollTop vs window.pagYOffset vs window.scrollY
- 9. Opa vs Dart vs Haxe vs coffeescript
- 10. VS 2008 vs VS 2008 Express
- 11. Strona vs Extent vs. Segment vs. Tabele
- 12. Crystalspace vs. Irrlicht vs. .....?
- 13. NetSqlAzMan vs AzMan vs (?????)
- 14. SpiderMonkey vs JavaScriptCore vs?
- 15. Zmierz czas w Linuksie - czas vs zegar vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
- 16. Metoda Fabryki Obiekt Fabryki VS
- 17. Funkcja autoloadera PHP vs. funkcja autoloadera proceduralnego?
- 18. Destruktor vs funkcja funkcji wyścig
- 19. Funkcja vs. Makro w CMake
- 20. funkcja przeciążenia: const * vs const &
- 21. Zmienna statyczna constexpr vs funkcja
- 22. Klasa HtmlHelper w przestrzeniach System.Web.Pages.Html vs System.Web.Mvc
- 23. Dziwne zachowanie - Klasa # getDeclaredMethods vs getMethods
- 24. Javascript - Argumenty Vs Funkcje zagnieżdżone Vs Wydajność
- 25. IDataErrorInfo vs ValidationRule vs Exception
- 26. Boo vs C# vs Python?
- 27. DbConnection vs OleDbConnection vs OdbcConnection
- 28. Matlab vs Aforge vs OpenCV
- 29. DDS vs AMQP vs ZeroMQ
- 30. ScheduledExecutorService vs Timer vs Handler
Jedno z tych określeń nie pasuje do pozostałych :) (pod względem porównywalności) –