Una funzione è una raccolta di istruzioni informatiche. Quindi è una procedura. In alcuni linguaggi ritentivi molto anali, tuttavia, una funzione restituisce un valore e una procedura no. In tali linguaggi le procedure sono generalmente utilizzate per i loro effetti collaterali (come I / O) mentre le funzioni sono utilizzate per i calcoli e tendono ad evitare effetti collaterali. (Questo è l'uso che tendo a favorire, sì, io sono quel ritentivo anale.)
La maggior parte delle lingue non è quella ritenzione anale, tuttavia, e di conseguenza le persone useranno i termini "funzione" e "procedura" in modo intercambiabile, preferendo l'una all'altra in base al loro background. (Modula- * i programmatori tenderanno ad usare la "procedura" mentre C / C ++ / Java / qualunque cosa tenderà ad usare "funzione", per esempio.)
Un metodo è solo un gergo per una funzione (o una procedura) associata a una classe. In effetti, non tutte le lingue OOP usano il termine "metodo". In un'implementazione tipica (ma non universale!), I metodi hanno un primo parametro implicito (chiamato cose come questo o self o simili) per accedere alla classe contenente. Questo non è, come ho detto, universale. Alcuni linguaggi rendono esplicito quel primo parametro (e quindi consentono di essere nominati come desideri) mentre in altri ancora non esiste affatto un primo parametro magico.
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;
}
In questo codice getMemberVariableProcedure
e getMemberVariableFunction
sono entrambi metodi.