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 :

Cas d'école, mais casse tête quand même.


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 22
    Points : 21
    Points
    21
    Par défaut Cas d'école, mais casse tête quand même.
    Bonjour, j'ai un cas d'école qui me rend perplexe. Je suis en train de lire JAVA 6 - Sam's teach yourself in 24 days. Au chapitre 5, j'ai le code suivant, que j'ai simplifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public class box { int x; int y; int z;
     
    box proc1(int x, int y, int z)
    {
    this.x=x;
    this.y=y;
    this.z = z;
    return this;
    }
     
    public void main (String [] argv)
    { box MyBox = new box();
    MyBox.proc1(22, 17, 31);
    }
    Mes questions sont :
    1. Pourquoi cette procédure renvoie l'objet de type box ?
    2. Est-ce la référence à l'instance MyBox ?
    3. Si MyBox est appelé comme ci-dessus, quelle est l'utilité de la fonction de renvoyer une référence à l'instance Box?

    Le livre ne répond pas à ces questions. Je pense qu'il a voulu mettre l'accent sur le fait que les variables de la procédure peuvent porter le même nom que les variables d'instance, et ainsi il montre l'utilisation du mot-clé this.

    Selon moi, la fonction proc1 pouvait retourner void, et le return this est inutile.

    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 187
    Points : 434
    Points
    434
    Par défaut
    Salut !

    1. Pourquoi cette procédure renvoie l'objet de type box ?
    Pour moi c'est un peu inutile. Peut-être pour montrer le return this retourne l'objet lui-même.


    2. Est-ce la référence à l'instance MyBox ?
    Oui.


    3. Si MyBox est appelé comme ci-dessus, quelle est l'utilité de la fonction de renvoyer une référence à l'instance Box?
    Aucun.

    En effet, l'intêret de ce code doit juste être de montrer que :
    MyBox (dans le main) = this (dans la méthode) = valeur retournée par la méthode

  3. #3
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Juste pour donner mon avis : totalement d'accord avec Washmid
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Pour donner le mien : c'est un code simplifié, c'est ça ?

    L'intérêt est peut-être de pouvoir faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Box myBox = new Box();
    myBox.proc1(1, 2, 3).proc2().proc3();
    Mais il est vrai que ça ne se voit pas dans l'exemple.

    (Note : je me suis permis de changer la casse de l'exemple, parce qu'en Java, on fait des noms de classe qui commencent par une majuscule ; et des noms de variables et méthodes qui commencent par une minuscule. De plus, le mot-clé public, ainsi que tous les autres, est en minuscules.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    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
    ca a de l'intérêt pour le chainage des appels, mais ca n'est utilisé que par des classes sur lesquelles ont a tendance à faire beaucoup d'appels d'affilée.
    Exemple typique: le StringBuilder:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String message = new StringBuilder("Bonjour ").
                 append(username).append(" il est ").append(date).
                 toString();
    Qui reste plus court à écrire que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    StringBuilder builder = new StringBuilder("Bonjour ");
    builder.append(username);
    builder.append(" il est ");
    builder.append(date);
    String result=builder.toString();

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1
    Points : 2
    Points
    2
    Par défaut
    MERCI A TOUS. C'est super sympa.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jquery is not defined mais cela fonctionne quand même
    Par Tendhor57 dans le forum jQuery
    Réponses: 9
    Dernier message: 08/08/2013, 12h11
  2. Réponses: 2
    Dernier message: 22/03/2012, 12h24
  3. [MySQL] Tout en UTF8 mais problème accentuations quand même
    Par speedev dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 11/04/2007, 22h43
  4. Acheter un vieux PC, mais pas trop quand même
    Par Maxoo dans le forum Ordinateurs
    Réponses: 30
    Dernier message: 22/03/2007, 09h49

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