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 :

A quoi servent les getter et setter ?


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Par défaut A quoi servent les getter et setter ?
    Salut !
    J'ai une question bête peut être mais que je comprends toujours pas, voila c'est a propos des getter et setter, j'arrive pas a voir leurs utilité, c'est pour rendre les attributs privé OK, mais pourquoi le faire tant que on pourra quand même accéder a cet attribut avec ces méthodes la, en bref j'arrive pas a voir leurs utilités.
    Merci

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Bonsoir,

    Pour ma part je les vois comme des clefs pour accéder à une classe non apparenté à celle-ci. Prend ta classe comme ton compte en banque ta variable c'est ton argent, ta carte bleu c'est ton getter, si ta variable est publique tout le monde y a accès. Sa permet d'autoriser que la lecture ou que l'écriture.

    Sa oblige à connaitre la classe pour utiliser la variable c'est un principe de développement après les règles sont la pour être violées ^_^°. Mais un standard permet à la personne qui passe derrière toi de s'y retrouver un peu. Le nombre de stage en informatique pour les DUT qui sont dans la réécriture propre de site web ou d'application, quand j'ai fais ce stage j'ai été surpris.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ben, les getters et les setters, ce sont des méthodes. Les variables, ce sont des attributs. Une méthode peut être redéfinie, un attribut ne le peut pas. L'un est plus souple que l'autre.
    Même sans parler de redéfinir, un getter ou un setter permet d'associer une action chaque fois qu'il est appelé. Ce n'est pas le cas de la lecture ou écriture d'un attribut.
    On dit souvent qu'un getter ou un setter ne devrait pas faire autre que juste lire ou modifier l'attribut. C'est un peu vrai, il vaut mieux pas, mais si besoin c'est en tout cas possible. Sans getter ou sans setter, ce n'est pas possible.

    Par ailleurs, ça a pris un côté cargo cult. À présent, tout le monde utilise les getters et setters. Et donc, tout le monde considère que tout le monde le fait. Les outils se basent là-dessus et pas sur autre chose. Mettre des getters et setters ne coûte rien. Donc ne pas en mettre, n'a aucun avantage et ne peut attirer que des ennuis.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Par défaut
    En mettre peut avoir un avantage, c'est de pouvoir rapidement tracer toutes les lectures-écritures d'une variable.
    Dans un contexte ou tu as besoin de traces, cela te facilite bien la vie.

  5. #5
    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
    C'est une bonne question car il y a confusion totale au niveau des "conventions de beans".
    Un bon exemple vaut mieux qu'un long discours:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class CompteEnBanque {
        private Valeur découvertAutorisé ;
        private Valeur solde ;
        private List<Operation> historique ;
       // autres champs
    }
    Ici on va distinguer les manipulations de ces instances lors d'opérations "normales" (c.a.d lors du fonctionnement d'un code "métier") et lors d'opérations de reconstitution (depuis une base de données par exemple).

    En opération métier:
    - on peut avoir un get et un set sur découvertAutorisé
    - on peut avoir un get sur solde mais pas un set ! celà violerait l'encapsulation! (seules les opérations "dépot" et "retrait" locales au code modifient le solde).
    - idem sur historique et de plus le get est très particulier car il doit rendre une liste non modifiable!

    en opération de reconstitution on peut avoir les "set" manquants (mais ils doivent être non public!)
    mettre partout des set et des get sans analyser leur rôle est une grave erreur (malheureusement beaucoup de frameworks ont mal digéré les raisons d'être des conventions de beans et poussent au crime !)

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    (malheureusement beaucoup de frameworks ont mal digéré les raisons d'être des conventions de beans et poussent au crime !)
    Dans le cas présent, c'est surtout que de la logique métier n'a rien à faire dans un bean de ce sens-là du terme. Ils appellent "bean" tout ce qui n'est qu'une manière de représenter des données, totalement mutable ou totalement immutable. Ce qui est entre les deux, ça contient de la logique et n'est pas un bean à leur sens du terme.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. à quoi servent les .dsm ?
    Par fidji dans le forum Delphi
    Réponses: 4
    Dernier message: 14/06/2006, 19h37
  2. [MySQL] A quoi servent les réferences entre les tables??
    Par Alain15 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/02/2006, 16h19
  3. A quoi servent les index dans une BDD ?
    Par Melvine dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 25/10/2005, 12h14
  4. [CR 10] A quoi servent les Templates Fields ?
    Par caviar dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 10/11/2004, 10h52
  5. [C#] A quoi servent les interfaces???
    Par sof_nns dans le forum Windows Forms
    Réponses: 8
    Dernier message: 28/10/2004, 20h51

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