2010-06-14 10 views
14

Je connais les bases de ces méthodes, procédures, fonctions et classes mais je confond toujours avec celles de la programmation orientée objet, alors s'il vous plaît, n'importe quel corps peut me dire la différence entre ceux qui ont des exemples simples?méthode vs fonction vs procédure vs classe?

+4

L'un de ces termes ne correspond pas vraiment aux autres :) (en ce qui concerne la comparabilité) –

Répondre

30

Une classe, en POO courant, classique, est un ensemble de données (variables membres) liées entre elles avec les fonctions/procédures qui fonctionnent sur ces données (fonctions membres ou méthodes). La classe n'a aucun lien avec les trois autres termes, à part le fait qu'elle "contient" (plus correctement "est associée à") cette dernière.

Les trois autres termes ... eh bien, ça dépend.

Une fonction est une collection d'instructions de calcul. Il en est ainsi de la procédure . Dans certains langages rétentifs très anaux, cependant, une fonction renvoie une valeur et pas une procédure. Dans ces langages, les procédures sont généralement utilisées pour leurs effets secondaires (comme les E/S) tandis que les fonctions sont utilisées pour les calculs et ont tendance à éviter les effets secondaires. (C'est l'usage que j'ai tendance à favoriser Oui, je suis cette rétentive anale.)

La plupart des langues ne sont pas que la rétention anale, et par conséquent les gens utiliseront les termes "fonction" et "procédure" de façon interchangeable , préférant l'un à l'autre en fonction de leurs antécédents. (« Procédure » modulations * programmeurs auront tendance à utiliser en C/C++/Java/whatever aura tendance à utiliser la « fonction », par exemple.)

Une méthode est juste jargon pour une fonction (ou procédure) lié à une classe. En effet, toutes les langues OOP n'utilisent pas le terme "méthode". Dans une implémentation typique (mais pas universelle!), Les méthodes ont un premier paramètre implicite (appelé choses comme this ou self ou similaire) pour accéder à la classe contenant. Ce n'est pas, comme je l'ai dit, universel. Certaines langues rendent ce premier paramètre explicite (et permettent ainsi d'être nommé comme vous le souhaitez) alors que dans d'autres, il n'y a pas de premier paramètre magique.


Edité pour ajouter cet exemple:

Le non testé et décompilé suivant C++ - comme le code devrait vous montrer ce genre de choses sont impliqués.

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; 
} 

Dans ce code getMemberVariableProcedure et getMemberVariableFunction sont les deux méthodes.

+3

La différence de fonction/procédure n'est pas vraiment anale - c'est une très bonne idée, et on l'appelle souvent séparation de commande/requête. – kyoryu

+1

Tout ce que cela signifie, c'est que vous êtes comme rétentif anale (ou est-ce «anale-rétentive»?) Que je suis. ;) –

+0

Merci pouvez-vous me fournir un exemple. pour différencier entre cela? –

3

Les procédures, la fonction et les méthodes sont généralement similaires, elles contiennent certaines instructions de traitement.

Les seules différences que je peux penser entre ces trois et les endroits où ils sont utilisés. Je veux dire "méthode" sont généralement utilisés pour définir des fonctions à l'intérieur d'une classe, où plusieurs types d'accès utilisateur comme public, protégé, privé peuvent être définis.

Les "procédures" sont aussi des fonctions mais elles représentent généralement une série de fonctions qui doivent être exécutées, à la fin d'une fonction ou parallèlement à une autre.


Les classes sont une collection d'attributs et de méthodes associés. Les attributs définissent l'objet de la classe où, comme les méthodes sont l'action effectuée par ou sur la classe.

Hope, cela a été utile

+0

Traditionnellement, la différence entre une procédure et une fonction est qu'une fonction renvoie une valeur alors qu'une procédure ne le fait pas. Les langages de type C ne font pas cette distinction - tout est une fonction, il peut juste retourner "void". – walkytalky

+0

@walkytalky, merci d'avoir ajouté que – Starx