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

Langage Java Discussion :

Comment remplacer Getter/Setter par une propriété, comme en C# ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juin 2004
    Messages : 9
    Par défaut Comment remplacer Getter/Setter par une propriété, comme en C# ?
    Bonjour à tous,

    J'avais lu il y a quelques temps une doc décrivant comment utiliser des propriétés en Java à la place des GET et SET, comme cela se fait en C# ou en VB.NET.

    Malheureusement je n'arrives pas à remettre la main sur cet article, j'ai passé toute la matinée à chercher

    Si quelqu'un pouvais me rafraichir la mémoire en m'indiquant comment on fait ca, je lui en serait fort reconnaissant !!

    Tristan RENAUD.

  2. #2
    Membre chevronné
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Par défaut
    Heu simplement en mettant les attributs de ta classe en public...

    ...j'ai raté quelque chose?

  3. #3
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Oui, C# ne fait que simuler l'accès à une variable, en réalité, ça masque des appels aux setters et getters, ce qui permet d'améliorer la lisibilité tout en préservant l'encapsulation.

    Cependant, étant donné que Java n'autorise même pas la surcharge des opérateurs (c'est une remarque, pas une critique, je m'y connais pas encore assez en Java pour dire si c'est ou non pénalisant ), je doute fortement qu'il autorise de masquer les appels aux getters et setters...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    En effet, tu ne pourras pas masquer l'accès aux getteurs/setteurs, donc tu peut mettre un membre en public, pour y accéder depuis une autre classe, mais c'est plutôt conseillé et plus propre (du moins je trouve) avec des getteurs/setteurs.

  5. #5
    Membre chevronné
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Par défaut
    tu ne pourras pas masquer l'accès aux getteurs/setteurs,
    Bin moi je les mets private si je veux, ils sont ainsi "masqués"...

    Ceci dit, perso je préfère avoir à taper le code de mes get/set moi-même tout seul, ainsi je peux par exemple décider de mettre un getter public et un setter private... Et ainsi je peux même décider de mettre un attribut public sans get/set.

    Génial, non?

  6. #6
    Membre Expert
    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 : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    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
     
    public class CompteEnBanque {
           private int id ; // possible aussi public final !
           public int getId() { return this.id ; }
     
          private double solde ;
          public double getSolde() {.....}
          public void depot(double mnt) {.....}
          public void retrait(double mnt) {......}
          // PAS DE SET SOLDE: casserait l'encapsulation !!!!
     
        private double découvertAutorisé ;
        public void setDécouvertAutorisé(double mnt) {....}
        public double getDécouvertAutorisé() { ....}
    }
    c'était juste pour dire que la paire get/set n'est pas automatique:
    les champs immuables n'ont pas de set (ainsi que les champs modifiables pour lesquels un set casserait l'encapsulation)
    (maintenant si on est maniaque on peut mettre ces "sets" en privé mais l'intérêt n'est pas toujours évident)

  7. #7
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par Glob
    Bin moi je les mets private si je veux, ils sont ainsi "masqués"...
    C'est pas ce que j'entendais par masqué.

    D'après ce que j'ai compris, tu peut faire x.y et ca correspond à x.getY(), ce n'est pas ainsi que ca se passe en Java.

Discussions similaires

  1. [Débutant] Comment remplacer un chiffre par une image
    Par jackdos dans le forum VB.NET
    Réponses: 10
    Dernier message: 08/05/2015, 14h32
  2. Réponses: 49
    Dernier message: 02/02/2013, 02h10
  3. Combinaisons : comment remplacer des if par une boucle
    Par maccormick dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 06/10/2011, 14h40
  4. Réponses: 4
    Dernier message: 01/04/2009, 12h11
  5. [Postsharp] Manager les getter et setter d'une propriété
    Par anthyme dans le forum Framework .NET
    Réponses: 4
    Dernier message: 13/01/2009, 11h19

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