2010-06-14 37 views
14

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?

+4

Jedno z tych określeń nie pasuje do pozostałych :) (pod względem porównywalności) –

Odpowiedz

30

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.

+3

Różnica funkcji/procedury nie jest tak naprawdę analna - to naprawdę dobry pomysł i często nazywana jest separacją poleceń/zapytań. – kyoryu

+1

Wszystko to oznacza, że ​​jesteś jak retentive analny (lub jest to "anal-retentive"?), Jak ja. ;) –

+0

Dzięki, możesz podać mi przykład. dla rozróżnienia tego? –

3

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

+0

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

+0

@walkytalky, dzięki za dodanie, że – Starx