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 :

Modification de paramètres pour les methodes [Débutant(e)]


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Modification de paramètres pour les methodes
    Bonjour,

    Je débute en java et j'aurai besoin de votre aide au sujet de paramètres de méthodes. J'ai déjà fait du C/C++.

    Voici la situation qui me pose problème: je cherche à passer en paramètre d'une méthode un entier, par exemple un compteur, que je cherche à incrémenter. Les types primitifs étant passés par valeur en Java (ai-je raison ou je me trompe complètement sur ce point?), pas de modifications possibles de mon compteur: il faut donc encapsuler la valeur à modifier dans un objet (selon ce que j'ai pu lire) mais je ne sais pas comment gérer cette situation proprement / efficacement...

    En bref, comme faites vous pour traiter des cas similaires sans avoir une prolifération de classes / attibuts "buffer" qui est bien "crade", je trouve...

  2. #2
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par Wyshmer Voir le message
    mais je ne sais pas comment gérer cette situation proprement / efficacement...
    question plus fondamentale: est-ce propre de faire des effets de bords comme ça?
    réponse ça peut arriver mais dans la majorité des cas on regrette plus tard de l'avoir fait: eviter ce genre d'effet de bord, 9 fois sur 10 c'est une mauvaise conception.
    désolé pour cette réponse expéditive.
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour votre réponse.

    Effectivement, ce n'est peut être pas une bonne pratique: je n'ai pas assez d'expérience en programmation pour juger de ce qui est "propre" aussi mea culpa.

    Toutefois désolé de revenir à la charge, mais si vous devez coder une méthode nécessitant de modifier la valeur type primitif, cela me parait un peut compliqué de devoir créer une classe juste pour cela: c'est certes très personnel mais j'ai l'impression que créer une classe pour cela nuit à la clarté du code alors qu'en en C++ par exemple, une référence suffit et à mon avis c'est clair.

    Enfin bref, sans doute, je n'aborde pas correctement le langage Java - désolé si ces préoccupations vous paraissent stérile... mais je réitère ma question: comment codez-vous un changement de paramètre pour un type primitif?

    EDIT: j'ai rencontré ce problème lorsque j'ai voulu faire une méthode d'affichage pour test pour une classe d'arbre (récursive)

  4. #4
    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 Wyshmer Voir le message
    Les types primitifs étant passés par valeur en Java (ai-je raison ou je me trompe complètement sur ce point?)
    C'est tout à fait exact.

    Citation Envoyé par Wyshmer Voir le message
    En bref, comme faites vous pour traiter des cas similaires sans avoir une prolifération de classes / attibuts "buffer" qui est bien "crade", je trouve...
    Impression récurrente en effet. Mais ce n'est qu'une impression. On se dit tout de suite "houlàlà, mais si je fais ça à chaque fois, ça va faire des millions de classes pour gérer chaque cas !"

    En réalité il y a grosso-modo trois cas :

    Cas #1 : Le compteur ne devrait pas être passé à la méthode. Il devrait faire partie intégrante de l'objet dont tu appelles une méthode.

    Cas #1.5 : On est dans le cas #1 mais il y a trop de code à modifier pour ajouter le système de compteur. Dans ce cas on crée un objet MyContext qui contient tous les compteurs que l'on va avoir besoin d'utiliser, et on passe ça aux méthodes. Ça fait une classe par domaine, ce n'est pas la mort.

    Cas #2 : Ce compteur est en fait un système de monitoring statistique lié au cycle de vie entier de l'application. Dans ce cas, il s'agit d'un service parallèle à tous les autres, que tous les autres doivent appeler à chaque fois qu'ils veulent incrémenter quelque chose ou connaître l'état du compteur. Une seule classe.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup thelvin, c'est beaucoup plus clair pour moi maintenant.

    A + et bonne continuation à tous

  6. #6
    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 Wyshmer Voir le message
    mais je réitère ma question: comment codez-vous un changement de paramètre pour un type primitif?
    En 10 ans de Java, je n'ai eu besoin de faire ça que deux fois. J'ai opté un coup pour le AtomicInteger, un coup pour le tableau de taille 1.
    J'aurais peut-être dû juste créer une classe pour.

    Citation Envoyé par Wyshmer Voir le message
    EDIT: j'ai rencontré ce problème lorsque j'ai voulu faire une méthode d'affichage pour test pour une classe d'arbre (récursive)
    D'un autre côté, je ne fais pas souvent de récursif. Mais même dans ce cas, tu n'as pas besoin de créer une pléthore de classes. Tu en crées une seule : EtatVariable, qui contient toutes tes données et que tu pousses à chaque appel (cas #1.5). Et c'est uniquement si tu n'as pas trouvé de moyen de stocker cet état dans l'objet sur lequel tu appelles la méthode, ce qui serait surprenant (cas #1).
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    En fait, je suis en train d'apprendre le java et je n'ai pas une formation de pur programmateur d'où mon manque d’expérience et effectivement l'idée que j'ai des "bonnes pratiques" qui n'est manifestement pas au point (mais j'essaie de me soigner hein )...

    A +

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

Discussions similaires

  1. Modification des styles pour les éléments disable.
    Par Edta dans le forum GWT et Vaadin
    Réponses: 0
    Dernier message: 12/12/2013, 14h18
  2. Utilisation des tableaux comme paramètres pour les procédures
    Par guefrachi dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 01/10/2010, 18h50
  3. Réponses: 4
    Dernier message: 19/01/2010, 09h59
  4. [JUnit] Pour tester les methodes d'acces à une sgdb
    Par yanis97 dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 15/04/2004, 15h55

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