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 :

Assesseur et mutateur


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Emilie MARQUOIS-OGEZ
    Femme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 80
    Par défaut Assesseur et mutateur
    Bonjour,

    Ma question va certainement paraître idiote à certains. Je pense à ceux qui maîtrisent parfaitement le langage Java. Mais bon... je la pose quand même... Après tout, c'est l'objectif de ce forum de s'entraider...

    Alors voilà. J'ai fait plusieurs recherches sur les notions d'assesseur (set) et de mutateur (get), et ce qui me chiffonne, en tous cas, ce qui n'est pas clair pour moi, c'est qu'on dise que set et get sont utilisés lorsqu'une donnée membre est protégée, alors que des programmes y recourent sans que les données membres soient protégées.

    Une explication ?

    Merci.

    Emilie

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Il s'agit surement d'erreur de conception...
    Dans la plupart des cas, les attributs de classes ne devraient pas être public mais accessible via leurs getter/setter.

    a++

  3. #3
    Membre éprouvé Avatar de Oui-Oui MB
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2005
    Messages : 111
    Par défaut
    En gros, ne pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public class TestGetSet {
      public String message;
     
      ...
    }
    mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public class TestGetSet {
      private String message; // ou protected String message;
      ...
      public String getMessage() { return message; }
      public void setMessage(String msg) { message = new String(msg); }
    }

  4. #4
    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
    De plus, il ne faut pas systématiquement générer des get et set publiques pour tous les attributs, c'est anti-POO dans la plupart des cas...

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Ni pour tous types de classe d'ailleurs.

    Si la classe est privée, protected ou package protected et si l'instance n'est utilisée que par un seul et unique objet à la fois c'est assez inutile (et une perte de mémoire puisque le code de la méthode d'instance est dupliqué dans chacune des instance).

    Parfois des classes simples avec tous les champs public à accès direct (équivalents de struct C) peuvent être préférables nottement en tant que macro-conteneurs/enregistrement lors de stockage dans des collections (bien être sur qu'elles ne sont pas visibles depuis l'extérieur de la classe/package les utilisant).

    A d'autres endroits c'est principalement pour des raisons de performance et/ou historiques cf : classes Point et Dimension :

    - C'est plus rapides d'acceder directement aux champs (mais plus risqué).
    - Les classes/interfaces génériques Point2D et Dimension2D ont été ajoutée bien plus tard.

    A l'inverse pour les composant et les beans les accesseur peuvent permettre d'effectuer des opération supplémentaires en plus d'un simple changement de la valeur d'une variable comme propager des évènements type PropertyChangeEvent.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. [Prototype] [Objet] Mutateurs sur les attributs
    Par Arnaud F. dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 16/07/2009, 13h09
  2. Ecriture d'un assesseur dans un fichier
    Par oligig dans le forum C++
    Réponses: 5
    Dernier message: 11/03/2009, 09h22
  3. [POO] parent et mutateurs
    Par Bownobo dans le forum Langage
    Réponses: 10
    Dernier message: 23/09/2008, 14h59
  4. [Doc] Mutateurs/Accesseurs PHP5, comment faites vs ?
    Par ePoX dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 28/02/2006, 01h34
  5. Outils pour creer les accesseurs et les mutateurs
    Par MarieMtl dans le forum MFC
    Réponses: 3
    Dernier message: 03/10/2005, 17h03

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