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

Langages de programmation Discussion :

[POO] Public Property


Sujet :

Langages de programmation

  1. #1
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 79
    Points : 57
    Points
    57
    Par défaut [POO] Public Property
    Bonjour,

    Supposons que je fais une classe bien simple en vb.net (ou n'importe quel autre langage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Class  Class1
    private _Prop1 as Integer
       Public Property Prop1() as Integer
            Get
                return _Prop1
            End Get
            Set (byVal Value as integer)
                  _Prop1 = value
            End set
            End Property
    End class
    Quel est l'avantage de créer une propriété qui me donne la valeur de la variable, pourquoi ne pas simplement, dans ce cas, déclarer la variable publique?

    Merci pour les infos.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut
    Je suppose qu'un des avantages, c'est que si un jour tu changes l'organisation interne de ta classe, et que prop1 n'existe plus, mais peut être retrouvée par exemple en additionnant newpropa et newpropb, alors il te suffira de recoder la fonction renvoyant prop1 et tout le reste sera complètement invisible. Maintenant, je découvre à peine la POO.

  3. #3
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    J'ajouterais à ce Le Furet vient de dire qu'avec les accesseurs et les mutateurs, ta classe est plus sécurisé : Pour la lecture, ça ne pose pas beaucou de problèmes, mais pour l'écriture, ça te permet de vérifier ce que l'utilisateur veut mettre dans un champs.

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    C'est également une des seules possibilités (dans les langages que je connais, en tout cas) qu'offrent la POO d'obtenir simplement des champs accessibles uniquement en lecture seule, en n'implémentant pas de méthode Set.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Les moyens dépendent assez des langages.

    Sinon, les intérêts arrivent quand :
    - quand effectivement la représentation interne de l'objet pourrait changer,
    - quand il faut vérifier pré-conditions et autres invariants avant de valider un changement d'état.
    - quand on veut abonner des observateurs
    - quand on veut permettre un accès en lecture ou écriture seulement.
    - et d'autres que je dois probablement oublier.

    En fait, je vois une propriété comme une donnée membre faisant parti de l'interface publique d'un objet, donnée complètement décorrélée de son implémentation réelle.

    Le côté "donnée membre de l'interface publique" est très important. En ce qui me concerne, je ne propose jamais des accesseurs et mutateurs sur des données d'implémentation qui sont internes aux objets. Les états de ces données internes sont modifiées au travers des diverses fonctions de l'interface publique de l'objet, et sont rarement observables depuis l'extérieur autrement que via une couche qui fait abstraction de certains détails.

    Ce sujet est abordé dans la FAQ C++ de Developpez.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Membre actif Avatar de ronan99999
    Inscrit en
    Juillet 2003
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 279
    Points : 299
    Points
    299
    Par défaut
    Dans le cadre d'une programmation multithreadée ou distribuée, il est beaucoup plus simple de créer un mutateur "thread-safe", que de rendre une variable public.
    Si tu ne te plantes pas, comment veux tu pousser?

Discussions similaires

  1. [POO] Public ou Protected
    Par royalwear dans le forum Langage
    Réponses: 13
    Dernier message: 27/10/2011, 11h03
  2. Service Sharepoint : public Property
    Par DeveloppeurInfo dans le forum Développement Sharepoint
    Réponses: 0
    Dernier message: 24/09/2009, 16h25
  3. [SP-2007] Service Sharepoint : public Property
    Par DeveloppeurInfo dans le forum SharePoint
    Réponses: 0
    Dernier message: 24/09/2009, 16h25
  4. Difference entre get/set ect. Public Property ect.
    Par 19cmos83 dans le forum VB.NET
    Réponses: 6
    Dernier message: 01/11/2007, 15h25
  5. [POO] Problème: public, protected et private PHP5
    Par fleur_de_rose dans le forum Langage
    Réponses: 5
    Dernier message: 07/05/2006, 19h26

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