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

avec Java Discussion :

Explicitation du formalisme


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Explicitation du formalisme
    Bonsoir,

    J'aurais aimé avoir quelques explications sur le code suivant présent dans la FAQ Java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public MaClasse extends ClasseMere {
       private String attribut;
       /** On peut acceder aux constructeurs de la super-classe*/
       public MaClasse(String uneValeur){
          super(uneValeur);
          //on appelle ici le constructeur de la classe mère
       }
       /** On peut aussi accéder aux constructeurs de la classe elle-même*/
       public MaClasse(String uneValeur){
          this("une valeur par défaut");
          //on appelle ici le constructeur définis un peu plus haut
       }
       /** En général l'appel à this est superflu lors d'appels à une méthode*/
       public void uneMethode(){}
       public void doubleAppel(){
          //les deux lignes suivantes sont équivalentes
          this.uneMethode();
          uneMethode();
       }
       /** L'appel à this peut être utile pour bien différencier
          * les variables de classe des variables de méthodes
          */
       public void uneMethode(String attribut){
          this.attribut = attribut;
          //ici, la variable de classe prend la valeur de la variable
          //passée en paramètre de la méthode
       }
       /** On peut aussi faire appel aux méthodes de la super-classe*/
       public void uneAutreMethode(){
          //on peux faire quelque chose en plus avant
          super.uneAutreMethode();
          //mais aussi après
       }
    }
    - Lignes 4 et 5 :
    D'ou sort le constructeur UneValeur, il a dû être définit précèdement non ?

    - Lignes 4 et 9 :
    Ce sont bien des méthodes que l'ont définies ici ?

    - Lignes 8 :
    Quels sont ces constructeurs justement ? D'ou viennent-ils ?

    - Ligne 10 et 11 :
    Que pourrait-on mettre entre les parenthèses ?
    On appelle le constructeur de la classe mère ?

    - Lignes 14-18 :
    Ce que ces lignes font m'échappe complètement :/

    Je suis un novice mais j'ai vraiment à coeur de comprendre et de progresser.

    Plus qu'une "simple" réponse aux tirets ci-dessus, ce que je recherche c'est ce que ce dit un programmeur lorsqu'il lit ces lignes. Les images qui se crées dans son esprit, la représentation qu'il s'en fait, le schéma logique qu'il en tire.

    J'aimerais arriver à comprendre la nature profonde des concepts derrière ces "simples" lignes. Ne me renvoyé pas vers la FAQ ou un livre, je souhaite justement bénéficier de la plus-value d'un professionnel en "live".

    Vous remerciant,
    AlpA.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    tout d'abord, il y a une erreur dans la classe (je ne sais pas si c'est comme ça dans ta faq ou pas, si c'est le cas, il faudrait le signaler) : la classe a deux constructeurs avec la même signature, ce qui est impossible. Le second constructeur ne devrait pas avoir d'argument au vu de son code.

    - Lignes 4 et 5 :
    D'ou sort le constructeur UneValeur, il a dû être définit précèdement non ?

    Tu veux parler de l'appel super(uneValeur) je suppose : le super(..) indique qu'on appelle un constructeur de la classe parente, celle dont hérite cette classe, donc la classe ClasseMere, qui doit avoir un constructeur avec un argument String.

    Le second constructeur, ligne 9-12 (s'il était correctement écrit), fait appel au premier par l'emploi de this(...),

    - Lignes 4 et 9 :
    Ce sont bien des méthodes que l'ont définies ici ?
    Non ce sont les constructeurs de la classe MaClasse

    - Lignes 8 :
    Quels sont ces constructeurs justement ? D'ou viennent-ils ?

    Donc question caduque

    - Ligne 10 et 11 :
    Que pourrait-on mettre entre les parenthèses ?
    On appelle le constructeur de la classe mère ?

    ligne 11 : c'est un commentaire...
    ligne 10 : donc, comme je le disais, il s'agit de l'appel d'un constructeur de la classe elle-même, ayant un seul argument de type String

    dont voici le code correct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public MaClasse(){
          this("une valeur par défaut");
          //on appelle ici le constructeur définis un peu plus haut
       }
    Donc quand on va faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClasse machin=new MaClasse();
    C'est comme si on faisait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClasse machin=new MaClasse("une valeur par défaut");
    Pour la question, Que pourrait-on mettre entre les parenthèses ?

    on appelle donc le constructeur MaClasse(String) qui attend un seul argument de type String : donc entre parenthèse, il faut absolument passer une référence de String comme par exemple une constante :

    On pourrait écrire un constructeur avec un argument int:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public MaClasse(int unnombre){
          this(String.valueOf(unnombre));
       }
    etc.

    - Lignes 14-18 :
    Ce que ces lignes font m'échappe complètement :/

    Ligne 14 : on définit une méthode appelée uneMethode, n'ayant aucun argument, ni de type de retour, et qui ne fait rien (y'a pas de code dans son corps, entre les { et })

    Ligne 15-18 : on définit une autre méthode appelée doubleAppel(), sans argument ni type de retour, et dont le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     this.uneMethode();
          uneMethode();
    consiste à appeler deux fois de suite la méthode uneMethode()

    le this. est implicite sur le second appel et explicite sur le premier, mais ça ne change rien dans l'exécution.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Août 2009
    Messages : 12
    Points : 15
    Points
    15
    Par défaut Explication de formalisme
    ligne 4-5oui il a été défini précédemment dans la classe mère. puisque le constructeur de Maclasse a besoin d'un paramètre a la construction donc se paramètre est initialise a partie de sa classe mère.

    de ligne 5 a la dernière il n’y que des méthodes
    ligne 8 c'est le constructeur de Maclass
    ligne 10 et 11 entre ces parenthèses tu peu mettre l'action que ta méthode doit réaliser
    ligne 14-18 ces lignes sont des méthode qui peuvent te permettre de encore réaliser d'autres actions

    j’espère que je me suis fait comprendre dans le cas contraire dit le

  4. #4
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Salut,
    avant de commencer, comme l'a soulevé Joel, une classe ne peut pas avoir deux méthodes ayant une même signature. Il faut tout d'abord corriger cela.

    Citation Envoyé par AlpA. Voir le message
    - Lignes 4 et 5 :
    D'ou sort le constructeur UneValeur, il a dû être définit précèdement non ?
    uneValeur n'est pas un constructeur mais plutôt un paramètre que l'on passe au constructeur de la classe mère en faisant appel au mot clé super... dans la ligne 5
    De ligne 4 à 7, définition du constructeur de la classe courante (MaClasse), dans laquelle on fait appel dans la ligne 5 au constructeur de la super classe ClasseMere.

    - Lignes 4 et 9 :
    Ce sont bien des méthodes que l'ont définies ici ?
    C'est tout à fait ça. Mais du point de vue logique, ce n'est pas correct car les deux méthodes possèdent la même signature.

    - Lignes 8 :
    Quels sont ces constructeurs justement ? D'ou viennent-ils ?
    Dans la méthode qui vient juste après cette ligne de commentaire, on appelle un des constructeurs définis plus haut (s'il y en a beaucoup) dans la même classe "MaClasse" par . Tu seras d'accord avec moi que c'est le constructeur nécessitant qu'un seul paramètre de type String qui sera évoqué.

    - Ligne 10 et 11 :
    Que pourrait-on mettre entre les parenthèses ?
    On appelle le constructeur de la classe mère ?
    A mon avis, la ligne de commentaire devrait précéder l'instruction qui vient juste après. Cela ne t'emberlificoterait guère. Entre les parenthèses, on passe juste une chaîne de caratères tel qu'il est fait dans le code. Ne pas oublier que l'une de deux méthodes (ici constructeurs) devrait disparaître (signature exige!!!!)


    - Lignes 14-18 :
    Ce que ces lignes font m'échappe complètement :/
    ligne 14, tel que Joel l'a explicitée
    lignes 15-19: on définit une autre méthode dans laquelle on appelle à deux reprises la méthode uneMethode() définies au sein de la classe MaClasse.

    Ouf! c'était vraiment long!!!!
    Si la réponse t'as vraiment aidé, juste un petit click sur ne derangerait personne
    Sans oublier de marquer la discussion "Résolue" si tu es satisfait après toutes les réponses proposées
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hé ho -_-°. Lignes 4 et 9 ce ne sont pas des méthodes, ce sont des constructeurs.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Hé ho -_-°. Lignes 4 et 9 ce ne sont pas des méthodes, ce sont des constructeurs.
    ... un constructeur n'est pas d'abord une méthode avant d'être spécial??? juste un petit oubli de précision de ma part mais cela ne valait pas un vote négatif
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par MasterMbg Voir le message
    ... un constructeur n'est pas d'abord une méthode avant d'être spécial??? juste un petit oubli de précision de ma part mais cela ne valait pas un vote négatif
    Un constructeur est un type très très spécifique de méthode, tellement spécifique, que :

    - ils ne s'appellent pas au même moment du cycle de vie de l'instance
    - ils ne s'appellent pas de la même façon
    - il n'y a pas les mêmes conditions d'implémentation (par exemple, pas de code avant l'appel du super constructeur appelé, ou pas d'appel de 2 constructeurs)
    - le constructeur n'a jamais de type de retour

    Le constructeur est tellement spécifique que les classes d'introspection de java fournissent des méthodes différentes pour obtenir les constructeurs et les autres méthodes.

    Évitons d'embrouiller un débutant en considérant qu'un constructeur c'est juste un cas particulier de méthode, car c'est tellement un cas particulier, que c'est carrément pas la même chose au final
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Merci beaucoup pour vos réponses et le temps que vous y avez consacré.

    Citation Envoyé par joel.drigo Voir le message
    Non ce sont les constructeurs de la classe MaClasse
    On diférencie une méthode d'un constructeur par le fait que ce dernier porte le même nom que la classe ? (un constructeur n'est-il pas une méthode particulière ?)

    EDIT : ok j'ai vu les derniers messages^^

    Citation Envoyé par joel.drigo Voir le message
    la classe ClasseMere, qui doit avoir un constructeur avec un argument String.
    Comment pourrait s'écrire ce constructeur justement ?

    Lignes 4-5 : Donc on crée un constructeur pour MaClasse à partir de celui de ClasseMere. Ok. Les deux étant de type String ce qui est cohérent.
    Citation Envoyé par MasterMbg Voir le message
    uneValeur n'est pas un constructeur mais plutôt un paramètre que l'on passe au constructeur de la classe mère en faisant appel au mot clé super... dans la ligne 5
    Mais comment s'appelle le constructeur de la classe fille ? C'est MaClasse ou uneValeur ?

    Citation Envoyé par joel.drigo Voir le message
    Donc quand on va faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClasse machin=new MaClasse();
    Ici on crée un nouveau constructeur à partir de celui de la classe fille ?

    Citation Envoyé par joel.drigo Voir le message
    on appelle donc le constructeur MaClasse(String) qui attend un seul argument de type String : donc entre parenthèse, il faut absolument passer une référence de String comme par exemple une constante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public MaClasse(){
          this("une valeur par défaut");
       }
    Mais alors avec les lignes 9-10, on crée un second constructeur ou on ne fait qu'en appeler un déjà crée ?

    Citation Envoyé par joel.drigo Voir le message
    et dont le code consiste à appeler deux fois de suite la méthode uneMethode()
    Mais à quoi cela sert-il concrètement de faire ça ? Ou c'est juste pour l'exemple^^

    Dans l'attente de vous lire,
    Bien à vous.

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par MasterMbg Voir le message
    ... un constructeur n'est pas d'abord une méthode avant d'être spécial???
    Juste non. Ce sont deux choses qui se ressemblent en apparence, et qui sont complètement différentes par nature.
    De toute façon la question était "c'est bien des méthodes, n'est-ce pas, pas autre chose, comme par exemple des constructeurs ?"

    Citation Envoyé par MasterMbg Voir le message
    juste un petit oubli de précision de ma part mais cela ne valait pas un vote négatif
    Soit, ta plaidoirie me convient. Et moi, qu'est-ce qui justifie que mon message ne te plaise pas ? J'attends.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par AlpA. Voir le message
    Bonjour,

    Merci beaucoup pour vos réponses et le temps que vous y avez consacré.
    Citation Envoyé par AlpA. Voir le message
    On diférencie une méthode d'un constructeur par le fait que ce dernier porte le même nom que la classe ?
    On reconnait un constructeur au fait qu'il ait le même nom et qu'il n'ait pas de type de retour.

    Dans le code suivant, on a créé une méthode qui a le même nom que le constructeur : bon, c'est pour l'exemple, on le fait jamais, car ça peut être "confusant". D'ailleurs les IDE signalent un warning sur ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class CTest {
     
            // constructeur
    	public CTest() { 
     
    	}
     
            // méthode
    	public CTest CTest() {
    		return new CTest();
     
    	}
     
    	public static void main(String[] args) {
     
    		CTest test1 = new CTest();
    		CTest test2 = test1.CTest();
     
    	}
     
    }
    Citation Envoyé par AlpA. Voir le message
    Comment pourrait s'écrire ce constructeur justement ?
    Ce constructeur de la classe ClasseMere s'écrit de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public ClasseMere(String argument) {
        // du code ici, qui dépend de ce qu'on veut faire avec cette classe, 
        // à priori, on va utiliser l'argument pour initialiser l'instance
    }

    Citation Envoyé par AlpA. Voir le message
    Mais comment s'appelle le constructeur de la classe fille ? C'est MaClasse ou uneValeur ?
    MaClasse !
    UneValeur c'est le nom de l'argument passé au constructeur, et qui va être passé au super constructeur (au constructeur de la classe mère)


    Citation Envoyé par AlpA. Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClasse machin=new MaClasse();
    Ici on créer un nouveau constructeur à partir de celui de la classe fille ?
    Non, ça c'est un exemple de code d'instanciation : on crée une instance d'objet ayant le type MaClasse, on utilisant le constructeur sans argument (sans paramètre si tu prefères) et on stocke sa référence (son adresse en mémoire en quelque sorte) dans la variable machin. En plus on indique au compilateur que le type de l'objet pointé est MaClasse (le premier MaClasse)

    Citation Envoyé par AlpA. Voir le message
    Mais alors avec les lignes 9-10, on crée un second constructeur ou on ne fait qu'en appeler un déjà crée ?
    On créé un second constructeur qui appelle le premier : ce nouveau constructeur n'a pas d'argument et appelle le premier, qui en a un, en lui passant justement comme valeur pour cette argument une valeur constante.

    EDIT : oups j'étais décalé en effet sur la question (faut dire que c'est facile de suivre quand on à plein de question et des références à des numéros de lignes d'un code d'un autre post @thelvin aura répondu à la bonne question dans le post suivant...

    Citation Envoyé par AlpA. Voir le message
    Mais à quoi cela sert-il concrètement de faire ça ? Ou c'est juste pour l'exemple^^
    Le constructeur, tu l'auras compris, sert à initialiser l'objet. Il arrive lorsqu'on créé des classes, qu'on veuille créé une version "préconfiguré" en quelquesorte : si un développeur qui utilise ton code (toi ou un autre) veut utiliser le cas standard (par défaut) que tu proposes, il utilisera le constructeur sans argument, sinon, s'il veut pouvoir mettre la valeur qu'il veut, il utilisera le constructeur avec.

    Par exemple, prenons la classe JFileChooser de java : son constructeur sans argument permet d'ouvrir un dialogue de sélection de fichier sur le dossier courant par défaut, mais elle propose un constructeur ou tu peux passer le dossier de ton choix en paramètre. De même, pour les cas très particulier, tu as encore un paramètre supplémentaire qui te permet d'utiliser ton propre FileSystemView si celui fournit par java ne te suffit pas (alors qu'en général on se contente de celui par défaut qui convient pour la plupart de usages standard)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par AlpA. Voir le message
    Mais comment s'appelle le constructeur de la classe fille ? C'est MaClasse ou uneValeur ?
    Un constructeur n'a pas de nom.

    Deux constructeurs d'une même classe, se différencient par les paramètres qu'ils prennent. (Et du coup la classe que tu nous montres n'est pas valide : elle possède deux constructeurs qu'on ne peut pas distinguer l'un de l'autre, puisqu'ils prennent les mêmes paramètres.)

    Citation Envoyé par AlpA. Voir le message
    Mais à quoi cela sert-il concrètement de faire ça ? Ou c'est juste pour l'exemple^^
    C'est juste pour l'exemple. Il fait la différence entre appeler une méthode avec this. ou sans this. ,
    Plus exactement, il montre qu'il n'y a pas de différence.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Re-bonsoir,

    Citation Envoyé par joel.drigo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public class CTest {
                 // On crée un constructeur pour la classe CTest donc il porte le même nom. 
                 // Il n'a pas d'argument donc concrètement cela sert-il à 
                 // quelque chose de faire un constructeur comme cela ?
            	public CTest() { 
    	}
                 // C'est une méthode puisqu'elle retourne quelque chose.
                 // Mais j'ai du mal à comprendre la syntaxe : cette méthode s'appelle CTest 
                 // et elle est du "type" du constructeur (qui porte le même nom^^), c'est ça ? 
            	public CTest CTest() {
    		return new CTest();
    	}
    	public static void main(String[] args) {
                              // On crée un objet de quel type ? 
                              // Le CTest correspond à la méthode ou au constructeur ?
    		CTest test1 = new CTest();
                              // On crée un second objet du même type que le premier et le "test1.CTest()" 
                              // signifie qu'on lui assigne la valeur obtenu après application 
                              // de la méthode CTest() 
                              // au premier objet ?
    		CTest test2 = test1.CTest();
    	}
    }
    Citation Envoyé par joel.drigo Voir le message
    Mais comment s'appelle le constructeur de la classe fille ? C'est MaClasse ou uneValeur ?
    MaClasse !
    Et
    Citation Envoyé par thelvin Voir le message
    Un constructeur n'a pas de nom.
    Simple question de "point de vue" ou est-ce plus que ça ?

    Citation Envoyé par joel.drigo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClasse machin=new MaClasse();
    Ici on créer un nouveau constructeur à partir de celui de la classe fille ?

    Non, ça c'est un exemple de code d'instanciation : on crée une instance d'objet ayant le type MaClasse, on utilisant le constructeur sans argument (sans paramètre si tu prefères) et on stocke sa référence (son adresse en mémoire en quelque sorte) dans la variable machin. En plus on indique au compilateur que le type de l'objet pointé est MaClasse (le premier MaClasse)
    Ok, en somme on crée un objet de type MaClasse (le premier) qui correspond au constructeur et on stocke dans l'espace mémoire aloué à ce nouvel objet le constructeur sans argument ? (je crois que ce que je dis n'a pas de sens...)

    Citation Envoyé par thelvin Voir le message
    C'est juste pour l'exemple. Il fait la différence entre appeler une méthode avec this. ou sans this. ,
    Plus exactement, il montre qu'il n'y a pas de différence.
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void doubleAppel(){
          //les deux lignes suivantes sont équivalentes
          this.uneMethode();
          uneMethode();
       }
    En fait le "this" renvoie ici à la méthode doubleAppel. Avec "this" on lui dit d'appeler uneMethode ?

    Vous remerciant,
    AlpA.

  13. #13
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    // On crée un constructeur pour la classe CTest donc il porte le même nom.
    // Il n'a pas d'argument donc concrètement cela sert-il à
    // quelque chose de faire un constructeur comme cela ?
    public CTest() {
    }
    Toute classe à pour constructeur implicite un constructeur sans argument, à moins qu'on spécifie un autre constructeur (ou le même constructeur (donc avec pas d'argument) avec pas la même "visibilité" public, donc private ou protected)

    Ici j'ai simplement mis ce constructeur explicitement, pour l'exemple : pour montrer quelle est la syntaxe de base d'un constructeur et pour illustrer le faite qu'on peut avoir une méthode qui a le nom de la classe, et donc que ce n'est pas suffisante d'utiliser ça pour identifier un constructeur (le nom de la classe donc).

    En général, on l'omet (on le met pas explicitement lorsqu'il est publique et sans argument) : mais ça ne veut pas dire qu'il n'existe pas et donc qu'il ne sert à rien. Il existe bel et bien et sert évidemment.

    Simple question de "point de vue" ou est-ce plus que ça ?
    Rigoureusement parlant, @thelvin a parfaitement raison et ce n'est pas une question de point de vue. Un constructeur n'a pas de nom : c'est juste que la syntaxe java impose qu'on utilise le nom de la classe pour définir un constructeur de cette classe. C'est d'ailleurs pour ça que pour appeler un autre constructeur on utilise les mots clefs super et this (d'ailleurs voilà encore une différence avec les méthodes) et pas le nom de la classe.
    C'était surtout pour dire que ce n'était certainement pas UneValeur !!!


    Ok, en somme on crée un objet de type MaClasse (le premier) qui correspond au constructeur et on stocke dans l'espace mémoire aloué à ce nouvel objet le constructeur sans argument ? (je crois que ce que je dis n'a pas de sens...)
    Oui c'est clair : tu es dans la confustion totale il faudrait reprendre un tuto à partir de zéro

    Essayons de faire simple (au risque de n'être pas rigoureusement exact, @thelvin ) :

    - une classe, c'est une description d'objet, Par exemple on va dire qu'on définit un livre par son Auteur et son Titre.
    - une instance, c'est un "individu" typé par cette classe, par exemple l'exemplaire du livre que j'ai dans ma bibilothèque, qui s'appelle Game of Thrones, de G. Martin.
    - un constructeur c'est un sous programme qui sert à initialiser chaque instance ; c'est pourquoi une classe peut avoir plusieurs constructeurs, quand il peut y avoir plusieurs façon d'initialiser une instance de cette classe
    - une variable en java, typée par une classe, contient comme valeur (une variable c'est un nom donné à une valeur qui peut changer, en gros), la référence d'une instance de classe (ou null lorsqu'elle ne pointe sur aucune instance). Pour la mémoire allouée, dans la plupart des cas, à part pour ta curiosité personnelle, ou quand tu maitriseras les concepts de base, tu n'as pas à t'en préocupper. Pour l'instant en tout cas.
    - le terme objet est le terme générique utilisé pour désigner le principe de programmation (Programmation Orientée Objet) qui consiste à travailler avec des objets, avec un certain nombre de régles associées (héritage, polymorphisme, etc...). Ce qui correspond entre autre en java à créer des classes, dont le code va créer des instances. Par extension, et à l'usage, on parle de manipuler des objets, créer des objets, etc... C'est un peu comme quand on dit "je rentre à la maison" alors qu'on habite un appartement : ce n'est pas rigoureusement la même chose, mais tout le monde comprend

    En fait le "this" renvoie ici à la méthode doubleAppel. Avec "this" on lui dit d'appeler uneMethode ?
    this est un mot clef qui permet de représenter l'instance elle même.

    Il peut y avoir une confusion avec this() : cette notation ne réprensente que le constructeur de la classe elle-meme, sans argument. On ne peut donc trouver ce code que dans un constructeur et que à la première ligne de ce constructeur. Si il y a des "trucs" entre les parenthèses, c'est pareil, sauf que ces trucs sont des paramètres qu'on passe au constructeur ainsi appelé.

    donc pour revenir à this, c'est l'instance elle même.

    Lorsque tu écris par exemple :

    val est une variable qui pointe sur une instance d'Integer, dont la valeur est 42.

    est l'appel d'une méthode de cette instance : le . sert donc à séparer le nom de la variable du nom de la méthode qu'on veut appeler sur cette variable (dans ce cas)

    finalement this c'est un peu comme une variable créée automatiquement mise à ta disposition pour représenter l'instance elle même.

    donc dans toutes méthodes (sauf statique pour être rigoureux), ou constructeurs d'une classe, le code suivant :

    correspond à l'appel de la méthode toString() sur l'instance elle même

    ce this est implicite : ce qui veut dire que quand il n'y a pas de nom de variable devant le nom de la méthode (avec le point), c'est comme si on avait mis this. devant. donc qu'on est pas obligé de le mettre, et que le mettre ne change pas l'exécution

    Tu vas me dire "à quoi ça sert si c'est pas obligé de le mettre" : ça sert lorsqu'on peut avoir une confusion, comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class DemoTruc {
     
      private int x;
      public DemoTruc(int x) {
        this.x=x;
      )
     
    }

    ici l'argument du constructeur s'appelle x, mais il y a aussi une variable de la classe Demotruc qui s'appelle x. La variable correspondant à l'argument va "remplacer" temporairement dans le code du constructeur la variable de même nom définie dans la classe. D'ou la nécessite d'utiliser le this pour désigner la variable x de la classe et pour la différencier de l'argument x.

    Donc pour revenir à :
    En fait le "this" renvoie ici à la méthode doubleAppel. Avec "this" on lui dit d'appeler uneMethode ?
    le this ne renvoie pas à une méthode, mais désigne l'instance qui exécute la méthode doubleAppel, et uneMethode est le nom de la méthode qu'on appelle sur cette instance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void doubleAppel() {
    this.uneMethode();
    uneMethode();
    }
    dans la classe MaClasse

    correspond à définir une méthode de la classe MaClasse s'appelant doubleAppel , qu'on peut appeler de n'importe quelle autre classe (public). qui n'a pas de type de retour, ni d'arguments et qui exécutera le code suivant lors de son appel sur une instance de MaClasse :

    1) on appelle la méthode qui s'appelle uneMethode sur this, qui correspond à elle même
    2) on appelle la méthode qui s'appelle uneMethode sur quoi : y'a rien d'indiqué, donc implicitement c'est this, oh, mais donc c'est la même chose qu'on a fait la ligne d'avant, mais ou on avait explicitement dit qu'on le faisait sur this.

    ouf bon je me suis étalé pour éviter d'être trop implicite, mais c'est clair que ça peut ajouter de la confusion, surtout si c'était pas utile d'être aussi explicite
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  14. #14
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Juste non. Ce sont deux choses qui se ressemblent en apparence, et qui sont complètement différentes par nature.
    De toute façon la question était "c'est bien des méthodes, n'est-ce pas, pas autre chose, comme par exemple des constructeurs ?"



    Soit, ta plaidoirie me convient. Et moi, qu'est-ce qui justifie que mon message ne te plaise pas ? J'attends.
    Merci beaucoup, mais je n'ai pas dit que votre méthode ne me plaisait pas du tout... Par contre j'ai avoué avoir oublié une petite précision pour les différencier de près...
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonsoir,

    Tout d'abord merci beaucoup joel.drigo pour avoir pris le temps d'écrire une telle réponse et "navré" de répondre si tardivement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public CTest CTest() {
    		return new CTest();
    }
    Donc la méthode CTest retourne une instance de type CTest ? (pas tappé pas tappé )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClasse machin=new MaClasse();
    Merci pour les explications sur ce point. Mais concrètement, comment traduis-tu cela avec des mots dans ta tête lorsque tu lis une telle ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    val est une variable qui pointe sur une instance d'Integer, dont la valeur est 42.
    Pourrais-t-on dire alors qu'une variable est d'une certaine façon une instance ?
    J'ai du mal à voir concrètement à quoi correspond une instance, comment est-elle exprimée^^

    En somme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void doubleAppel() {
    this.uneMethode();
    uneMethode();
     
    int a; int b;
    a = b.doubleAppel;
    }
    Signifie qu'on stock dans "a", le résultat de l'appel de la méthode "doubleAppel" sur l'instance "b", la méthode "doubleAppel" elle-même appliquant la méthode "uneMethode" sur l'instance "b".
    La méthode "doubleAppel" ne faisant en elle-même "rien", en fait c'est comme si il n'y avait que la méthode "uneMethode" qui avait de l'effet sur "b" ?!

    Dans la vive attente de te lire,
    Bonne soirée !

  16. #16
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par AlpA. Voir le message
    Bonsoir,

    Tout d'abord merci beaucoup joel.drigo pour avoir pris le temps d'écrire une telle réponse et "navré" de répondre si tardivement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public CTest CTest() {
    		return new CTest();
    }
    Donc la méthode CTest retourne une instance de type CTest ? (pas tappé pas tappé )
    YES !!! Ca finit par entrer

    Citation Envoyé par AlpA. Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClasse machin=new MaClasse();
    Merci pour les explications sur ce point. Mais concrètement, comment traduis-tu cela avec des mots dans ta tête lorsque tu lis une telle ligne ?
    [/code]
    Concrètement ?! Explicite concrètement
    En français, je traduis ça en :
    - Je déclare une variable s'appelant machin et de type MaClasse
    - Et je lui affecte comme valeur une référence sur une nouvelle instance de la classe MaClasse.

    Citation Envoyé par AlpA. Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    val est une variable qui pointe sur une instance d'Integer, dont la valeur est 42.
    Pourrais-t-on dire alors qu'une variable est d'une certaine façon une instance ?
    Non une variable est un machin (qu'on appelle variable donc) qui te permet de manipuler soit des valeurs de type primitif, soit des références d'instances. Pour identifier une variable, pour la disitinguer d'une autre, on lui donne un nom (ici val).
    Citation Envoyé par AlpA. Voir le message

    J'ai du mal à voir concrètement à quoi correspond une instance, comment est-elle exprimée^^
    Imagine les êtres humains...ça va jusque là ? Toi tu es une instance d'être humain. Moi j'en suis une autre.

    Bon je comprends pas trop ce que tu entends par "exprimer une instance".

    Mais pour faire le parallèle entre variable, classe et instance :

    - toi et moi sommes 2 instances (on est distinct, avec nos propres caractéristiques)
    - "êtres humains" est la classe qui définit ces deux instances que nous sommes (enfin j'ai supposé que tu étais un être humain, c'est peut être un raccourci un peu rapide ) : donc on est des primates (c'est pas péjoratif), on est né chacun quelque part et, ce, depuis une certaine date, etc... tout ça constituant des attributs de la classes "êtres humains",
    - une classe "etres humains de type social "occidental"" qui étend cette classe pourrait avoir en plus les attributs : on a un prénom et un nom, et une fonction, un titre, une profession ou une activité (étudiant par exemple), etc...
    - on peut créer une variable de type "etre humain" qui s'appelle individu : individu peut pointer sur l'instance toi ou sur l'instance moi.
    - on peut créer une variable nom : nom peut contenir la valeur de ton nom ou du mien, mais peut aussi contenir le nom de mon frère qui est le même que le mien (ce n'est pas un hasard c'est culturel)

    - on peut créer aussi une variable quiposeunequestionsurleforum, qui pointe sur l'instance toi, et une instance quialepseudoAlpA, qui pointe également sur l'instance toi : une variable est donc bien distincte d'une instance
    elle peut pointer alternativement sur différentes instances, et plusieurs variables différentes peuvent pointer sur la même instance
    si on avait ledernierquiapostésurcettediscution, ça pointerait sur toi, jusqu'à ce que j'envoi cette réponse-ci et ça deviendrait moi (enfin si personne n'intervient entre temps)



    Citation Envoyé par AlpA. Voir le message


    En somme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void doubleAppel() {
    this.uneMethode();
    uneMethode();
     
    int a; int b;
    a = b.doubleAppel;
    }
    Signifie qu'on stock dans "a", le résultat de l'appel de la méthode "doubleAppel" sur l'instance "b", la méthode "doubleAppel" elle-même appliquant la méthode "uneMethode" sur l'instance "b" ?
    fouya !!!
    b.doubleAppel : b est un int. donc une variable de type primitif, qui n'a donc pas de méthode ni d'attribut. donc b.doubleAppel c'est juste une erreur de syntaxe.



    Citation Envoyé par AlpA. Voir le message

    Dans la vive attente de te lire,
    Bonne soirée !
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #17
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par AlpA. Voir le message

    Pourrais-t-on dire alors qu'une variable est d'une certaine façon une instance ?
    Jamais. Les variable en java stockent des références vers les instance en question. Un variable c'est, pour faire simple, 4 octets en mémoire. Un instance ça peux occuper plusieurs Ko

    Citation Envoyé par AlpA. Voir le message
    J'ai du mal à voir concrètement à quoi correspond une instance, comment est-elle exprimée^^
    Une instance, c'est ce que tu crée avec le mot clé new. new te retourne ensuite la référence vers cette instance.

    Citation Envoyé par AlpA. Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void doubleAppel() {
    this.uneMethode();
    uneMethode();
     
    int a; int b;
    a = b.doubleAppel;
    }
    Ce code n'a ni queue ni tête: a et b sont des int, pas des références à des objets. Ils n'ont donc pas de méthode et certainement pas une méthode "doubleAppel" dont le résultat ne pourra en plus pas être stocké dans a puisque ca retourne void. Ton code ne compilera jamais et je ne vois pas ce que tu essaie de faire là.

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    fouya !!!
    b.doubleAppel : b est un int. donc une variable de type primitif, qui n'a donc pas de méthode ni d'attribut. donc b.doubleAppel c'est juste une erreur de syntaxe.
    Ce code n'a ni queue ni tête: a et b sont des int, pas des références à des objets. Ils n'ont donc pas de méthode et certainement pas une méthode "doubleAppel" dont le résultat ne pourra en plus pas être stocké dans a puisque ca retourne void. Ton code ne compilera jamais et je ne vois pas ce que tu essaie de faire là.
    Je me disais bien que j'écrivais de très très grosses bêtises

    J'essayais juste d'illustrer l'utilisation de la méthode doubleAppel.

    En tout cas merci beaucoup à vous, notamment joel.drigo, pour toutes vos explications.
    Je vois beaucoup plus clair qu'avant et j'ai bon espoir de voir le bout du tunnel !

Discussions similaires

  1. [PL/SQL) Curseur et nom de champ explicite
    Par Loko dans le forum Oracle
    Réponses: 6
    Dernier message: 01/12/2004, 15h07
  2. nommage explicite des champs
    Par didier.cabale dans le forum InterBase
    Réponses: 3
    Dernier message: 23/08/2004, 18h27
  3. Comment écrire explicitement en sortie d'un job OEM ?
    Par zestrellita dans le forum Entreprise Manager
    Réponses: 11
    Dernier message: 11/03/2004, 09h36
  4. Utilisation de Option explicit
    Par Perihan dans le forum ASP
    Réponses: 5
    Dernier message: 29/10/2003, 11h43
  5. - Insertion : valeur explicite
    Par Leoxp dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/05/2003, 17h21

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