IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Variable et Attribut, Fonction et m�thode


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2014
    Messages
    36
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 29
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 36
    Par d�faut Variable et Attribut, Fonction et m�thode
    Bonjour,

    J'aimerais savoir pourquoi certaines personnes disent qu'un attribut est diff�rent d'une variable ou qu'une m�thode est diff�rente d'une fonction.

    Quand on d�fini ou d�clare une fonction en dehors d'une classe, on appel bien �a une FONCTION et non une METHODE, pourtant les 2 peuvent faire la m�me chose il y'aura quand m�me des gens qui diront qu'une m�thode c'est pas une fonction et qu'une variable n'est pas un attribut.

    Si quelqu'un peut affirmer ce que je dis ou au contraire m'�clairer sur ce sujet parce que pour moi d�clarer une variable dans une classe ou pas �a reste une variable.

    Merci

  2. #2
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    "Attribut" est synonyme de "variable membre". Ce n'est pas un terme propre au C++, mais du monde objet. Il ne porte pas � ambigu�t�, m�me si depuis le C++11 nous avons officiellement des attributs qui d�signent tout autre chose.

    "M�thode" est un terme impropre en C++. Pour la plupart des gens cela signifie "fonction membre". Dans le TC++PL, Stroustrup d�finit "m�thode" comme "fonction membre virtuelle". Si on se rapproche de la d�finition UML o� "m�thode" est une "sp�cialisation d'op�ration", la d�finition de Stroustrup me parait plus juste. De fait, je me force � ne jamais utiliser "m�thode" dans le contexte C++ pour d�signer des fonctions. C'est donc "fonction" au sens large, "fonction libre" pour les hors classe, "fonction membre" pour les d�finies dans des classes. (Plus tous les autres machins appelables: foncteurs, lambdas...)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  3. #3
    Membre actif
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2014
    Messages
    36
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 29
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 36
    Par d�faut
    Merci pour ta r�ponse, dans ce cas nous sommes bien d'accord, un attribut est une variable membre d'une classe et une m�thode est une fonction membre d'une classe mais �a reste strictement la m�me chose non ? Une fonction qu'elle soit membre d'une classe ou pas reste pour moi une fonction, de m�me pour une variable.

  4. #4
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Il y a des subtilit�s, les "attributs" au sens POO sont li�s � un objet de la classe dont on parle.
    De m�me les m�thodes ont un param�tre cach�, this, qui est l'objet sur laquelle on l'appelle.

    Et Luc Hermitte te dit justement que ce ne sont pas des termes adapt�s au C++.
    En C++, tu trouveras des attributs tels que [[noreturn]] et le terme m�thode n'est pas utilis� dans la norme. (on parle de fonction membre non-statique)

  5. #5
    Membre actif
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2014
    Messages
    36
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 29
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 36
    Par d�faut
    Citation Envoy� par ternel Voir le message
    Il y a des subtilit�s, les "attributs" au sens POO sont li�s � un objet de la classe dont on parle.
    De m�me les m�thodes ont un param�tre cach�, this, qui est l'objet sur laquelle on l'appelle.

    Et Luc Hermitte te dit justement que ce ne sont pas des termes adapt�s au C++.
    En C++, tu trouveras des attributs tels que [[noreturn]] et le terme m�thode n'est pas utilis� dans la norme. (on parle de fonction membre non-statique)
    J'avais bien compris que le mot attribut n'�tait pas propre au C++ mais � la notion de POO peut importe le langage. Mais on est au final d'accord pour dire qu'une variable qu'elle soit membre d'une classe ou pas reste une variable, elle n'a rien de diff�rent, on l'appelle attribut �a permet d'ailleurs de savoir qu'elle fait partie d'une classe mais au final son utilit� est la m�me et c'est la m�me chose pour les fonctions. C'�tait juste pour affirmer certaines points parce que lorsque tu rencontres des devs qui te sortent "une m�thode c'est pas une fonction, c'est pas pareil" mais qui sont incapables de t'expliquer pourquoi c'est assez �nervant.

    Merci pour vos r�ponses

  6. #6
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    AMA, beaucoup font un blocage sur la syntaxe sans avoir le moindre recul.

    D'abord pourquoi la "m�thode" ne devrait �tre li�e qu'� un seul objet? Quid du multi-dispatch ? Quid de CLOS, un des tous premiers langages OO (d'ailleurs Alan Kay, le premier � avoir dit "object oriented", et donc l'inventeur de la d�finition d'une certaine fa�on valide que CLOS est OO, � contrario de C++, Java et bien d'autres). Le truc int�ressant dans CLOS, c'est que la syntaxe d'appel est "(f x y)". Autre d�tail, il est fonctionnel et non imp�ratif...
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  7. #7
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Citation Envoy� par LuNaTiC93 Voir le message
    Merci pour ta r�ponse, dans ce cas nous sommes bien d'accord, une attribut est une variable membre d'une classe et une m�thode est une fonction membre d'une classe mais �a reste strictement la m�me chose non ? Une fonction qu'elle soit membre d'une classe ou pas reste pour moi une fonction, de m�me pour une variable.
    Presque, une "m�thode" est une "fonction membre virtuelle" si on suit le vocabulaire du cr�ateur du langage. En ce qui me concerne, il a cr�� le langage, donc son vocabulaire est le vocabulaire officiel dans le contexte de ce langage.

    Et sinon, une fonction qu'elle soit membre ou non, cela reste en effet une fonction. La subtilit� est qu'une fonction membre non-statique dispose d'un param�tre implicite: celui de l'objet sur laquelle la fonction s'appelle.

    Pour les curieux, renseignez-vous sur l'UCS (Uniform Call Syntax). Comme quoi, tout cela, ce n'est jamais que du sucre syntaxique.

    PS: Enfin un attribut au sens objet est tout autant une variable qu'un champ de structure l'est.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. port�e d'une variable dans une fonction dans une m�thode
    Par laurentg2003 dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 29/06/2009, 19h05
  2. R�ponses: 3
    Dernier message: 08/12/2005, 14h41
  3. retour de variable d'une fonction
    Par thunderblade dans le forum ASP
    R�ponses: 4
    Dernier message: 28/04/2005, 13h27
  4. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    R�ponses: 4
    Dernier message: 02/04/2005, 13h45
  5. R�ponses: 5
    Dernier message: 09/02/2005, 18h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo