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 :

Encapsulation vs. Accès direct


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Points : 103
    Points
    103
    Par défaut Encapsulation vs. Accès direct
    Bonjour tous le monde,

    J'aimerai savoir c'est quoi la vrai utilité d'utilisé l'encapsulation OO (accès indirect )en java, au lieu d’accéder directement au variable d'instance.
    Est ce que ça permet (encapsulation )tous d'abord la réutilisation, et le faite de changer la structure de donnée en cas de besoins.Si c'est oui, veuillez me donner un exemple concret.
    Et bien sur s'il a d'autre avantage je suis preneur.

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    L'encapsulation, sert à rendre impossible la modification d'une variable si l'auteur d'une classe ne veut pas que cela soit possible.

    C'est très pratique pour les projets à plusieurs.

  3. #3
    zo1odMSQr5Fy
    Invité(e)
    Par défaut
    Citation Envoyé par naou18 Voir le message
    Bonjour tous le monde,

    J'aimerai savoir c'est quoi la vrai utilité d'utilisé l'encapsulation OO (accès indirect )en java, au lieu d’accéder directement au variable d'instance.
    Est ce que ça permet (encapsulation )tous d'abord la réutilisation, et le faite de changer la structure de donnée en cas de besoins.Si c'est oui, veuillez me donner un exemple concret.
    Et bien sur s'il a d'autre avantage je suis preneur.

    Merci d'avance pour votre aide.
    Regarde l'intérêt des mots clés : private, protected

    L'encapsulation peut te permettre d'accéder en lecture à des données ( private) et à les modifier( public et protected selon certaines conditions )

  4. #4
    Membre régulier
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Points : 103
    Points
    103
    Par défaut
    Merci pour vos réponse,

    @druzy:
    l'encapsulation ne sert pas à rendre impossible la modification d'une variable, en fait tu peux le faire à l'aide d'un setter setAttribut(Type paramètre).

    @TheBear: je connais l'utilité de ces mots clés:

    Je veux savoir quelle est l'avantage concrètement d’utilisé l'encapsulation.

    Merci.

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    S'assurer que les attributs d'une classe seront modifiées de la façon attendue, et uniquement de cette façon.
    En effet dans la méthode set tu peux appliquer de contrôles, des calculs, générer des évènements et ainsi de suite à chaque appel. Alors qu'en laissant l'accès direct à ta variable, tu ne peux avoir aucune idée de ce qui va être fait. De fait c'est une dès règles de bases en design d'API objet.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  6. #6
    Membre régulier
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Points : 103
    Points
    103
    Par défaut
    Merci pour vos réponse:

    @sinok: c'est tout à fait ce que je recherche .
    Est ce que je peux avoir un exemple concret auquel on applique des contrôles ou calcule à la méthode set.

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Tu pourrais faire par exemple quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Class formeRect{
    double x,y,w,h;
    double poidsenNewton;
     
    double setPoidsEnKilo(double poidsenKilo) throw new Exception
    {
    if  (poidsenKilo>5000) throw Exception("Poids trop elevé");
    poidsenNewton=poidsenKilo/9.81;
     
    }
     
    }
    (bon c'est un exemple idiot je sais ...)

    En gros tu passes un variable a une methode set, et dedans tu regarde une condition et tu envoye une exception (dans ce cas ci) pour avertir.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ca sert aussi quand tu sous classe. Impossible de modifier le comportement d'un champ, par contre il est possible de modifier le comportement d'un getter / setter.

    Par exemple, quelle que soit la classe de base concernée. Si tu n'a pas protégé les champs, impossible de lui appliquer par la suite la pattern "wrapper". Et par expérience, je peux te dire que dans 99.9% des cas ou t'as besoin d'appliquer la pattern wrapper, tu n'en avais aucunement l'intention quand tu a démarré la classe de base. Bref, c'est aussi une question de politesse par rapport aux utilisateurs de ta classe Ca permet de leur laisser le champ libre, ce que tu ne peux pas faire avec des champs publics.

  9. #9
    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
    exemple stupide (mais a but pédagogique)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class UneDate { //version 1
        private int jour;
        private int mois ;
        private int annéé ;
       public UneDate(int jour, int mois, int année) {
          // controles et initialisations
       }
     
      public int getJour()  { /*ce qu'il faut */ }
      public int getMois()  ..... /etc.
    }
    bon on change d'avis au niveau de l'implantation ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class UneDate { //version 2
        private long time ;
       public UneDate(int jour, int mois, int année) {
          // controles et initialisations
       }
     
      public int getJour()  { /*ce qu'il faut */ }
      public int getMois()  ..... /etc.
    }
    ceux qui utilisent ce code ont-ils besoin de modifier leur code si tu changes d'avis avec la version 2? réponse non!
    tu changes ton code mais pas le contrat qui te lie à ceux qui l'utilisent!
    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)

  10. #10
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    C'est aussi le principe de l'interface :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    interface IDate { 
         public int getJour();
         public int getMois();
    }
    Une interface n'a par définition pas de champs private.
    Il est toujours utile d'avoir des getter/setter pour savoir ce qui se passe. Ou ajouter une fonction non prévu.
    Besoin de déclencher un event quand on modifie/acces un objet ? (log/persistance/etc) Tu le place au niveau de ton set/get et on en parle plus.
    Les get/set, on se rend compte de leur utilité quand on en a besoin et qu'ils ne sont pas là. Genre, 10/40/100 affectation de valeurs à retrouver et modifier dans le code ?

    Sinon, j'approuve tchize_ et sinok. Même si il est possible de faire des contrôles sur le set d'une valeur avec de la programmation orienté aspect.(AspectJ)
    Mais, ce n'est pas parce que c'est possible qu'il faut le faire.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  11. #11
    Membre régulier
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Points : 103
    Points
    103
    Par défaut
    Merci pour votre aide.

    @Kodozo: je ne voix pas l’intérêt de ton exemple avec les interfaces, car ces derniers ne contient aucun attributs par définition, une interface contient les signature des méthodes.
    Pardonne moi si j'ai pas compris ton propos.

  12. #12
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    A la base, c'est surtout pour découpler le code, ce qui veut dire que quand on modifie un truc on n'est pas obligé de modifier partout dans le code, et aussi qu'on peut facilement faire des classes qui héritent d'une classe donnée, sans devoir modifier le code ailleurs que dans la nouvelle classe.

    Mettons que tu fais un jeu avec des objets qui ont un poids; tu as donc dans ta classe une propriété qui s'appelle "poids".

    Si tu accède directement, depuis un autre objet ("panier"), à un moment tu fais "poidsPanier += monObjet.poids;", par exemple. Jusque là tout va bien. Mais admettons qu'ensuite tu définisse un objet dont le poids varie avec le temps. Du coup, tu as deux solutions : ou bien mettre ce poids à jour en permanence, pour qu'au moment où on l'utilise il soit correct, ou bien modifier le code dans la classe appellante pour qu'elle fasse un calcul sur le poids dans le cas où il faudrait.

    La première solution est compliquée et gourmande en ressources, la deuxième est contraire à l'idée de POO, puisqu'on fait une distinction entre des objets qui sont apparentés, ce qui oblige à modifier du code à un endroit où ça ne devrait pas être nécessaire : pour connaître le poids du panier, en principe tu ne doit connaître des objets que leur poids, sans t'occuper de savoir de quel objet il s'agit exactement.

    Alors que si dès le départ tu as écrit un getter, tu n'as plus qu'à le modifier dans donc nouvel objet pour qu'au lieu de faire "return poids;" il fasse un genre de "return poids*coeff/sqrt(new MachinsBizarre().getDiviseur());" et tu ne devras rien modifier ailleurs... Donc si après ya un bug, tu sais où il est...
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  13. #13
    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 kolodz Voir le message
    C'est aussi le principe de l'interface :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    interface IDate { 
         public UneDate(int jour, int mois, int année);
         public int getJour();
         public int getMois();
    }
    le copier/coller est notre pire ennemi
    (le constructeur dans une interface est une erreur de collage: c'est pas un reproche car ça m'arrive tout le temps .....)
    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)

  14. #14
    Membre régulier
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Points : 103
    Points
    103
    Par défaut
    Bonjour,

    @ kolodz: je ne vois toujours pas l’intérêt d'une interface concernant l'encapsulation.

    Merci.

  15. #15
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2011
    Messages : 342
    Points : 1 091
    Points
    1 091
    Par défaut
    Citation Envoyé par kolodz Voir le message
    C'est aussi le principe de l'interface :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    interface IDate { 
         public UneDate(int jour, int mois, int année);
         public int getJour();
         public int getMois();
    }
    Juste deux remarques :

    public est redondant avec la déclaration d'interface (dans une interface toutes les méthodes sont publiques).

    Le nom IDate est juste moche : en général il est mieux d'appeler son interface par un nom clair et précis (ici, Date) et faire le marquage au niveau de l'implémentation (DateImpl par exemple). Tout simplement car l'utilisateur d'une API passera par l'interface. C'est purement cosmétique mais ça a son importance.

    L'interface est une généralisation de l'encapsulation : on masque une implémentation pour pouvoir la modifier sans que cela impacte le code de l'utilisateur.

  16. #16
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Citation Envoyé par GPPro Voir le message
    Le nom IDate est juste moche : en général il est mieux d'appeler son interface par un nom clair et précis (ici, Date) et faire le marquage au niveau de l'implémentation (DateImpl par exemple). Tout simplement car l'utilisateur d'une API passera par l'interface. C'est purement cosmétique mais ça a son importance.
    Pour le coup, c'est une convention de nommage. Afin de faire la différence entre une classe et une interface. Je ne l'ai pas inventé. Et crois-moi elle est utilisé pour de bonne raison.
    public est redondant avec la déclaration d'interface (dans une interface toutes les méthodes sont publiques).
    C'est une évidence, oui. Mais ça ne tue personne de le rappeler. C'est comme toujours indiquer public/private/protected sur les variables/fonctions/classes.
    Je me souviens des valeurs par défauts, mais je ne sais pas qui relira mon code et avec quel niveau de compétence.

    @ kolodz: je ne vois toujours pas l’intérêt d'une interface concernant l'encapsulation.
    L'encapsulation permet la définition d'interface et un certains nombre de pattern de conception. Ce n'est que l'aboutissement de ce que dit "professeur shadoko".
    Tu définis ce que tu veux (l'interface). Puis, tu fait une implémentation.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  17. #17
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par kolodz Voir le message
    Pour le coup, c'est une convention de nommage. Afin de faire la différence entre une classe et une interface. Je ne l'ai pas inventé. Et crois-moi elle est utilisé pour de bonne raison.
    Je confirme.

    Citation Envoyé par kolodz Voir le message
    C'est une évidence, oui. Mais ça ne tue personne de le rappeler. C'est comme toujours indiquer public/private/protected sur les variables/fonctions/classes.
    Je me souviens des valeurs par défauts, mais je ne sais pas qui relira mon code et avec quel niveau de compétence.
    Je confirme également.

    PS : Ne me remerciez pas pour mon intervention.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  18. #18
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par kolodz Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    interface IDate { 
         public UneDate(int jour, int mois, int année);
    PAN!
    Vous irez me laver cet écran au savon!

  19. #19
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2011
    Messages : 342
    Points : 1 091
    Points
    1 091
    Par défaut
    Citation Envoyé par kolodz Voir le message
    Pour le coup, c'est une convention de nommage. Afin de faire la différence entre une classe et une interface. Je ne l'ai pas inventé. Et crois-moi elle est utilisé pour de bonne raison.

    C'est une évidence, oui. Mais ça ne tue personne de le rappeler. C'est comme toujours indiquer public/private/protected sur les variables/fonctions/classes.
    Je me souviens des valeurs par défauts, mais je ne sais pas qui relira mon code et avec quel niveau de compétence.


    L'encapsulation permet la définition d'interface et un certains nombre de pattern de conception. Ce n'est que l'aboutissement de ce que dit "professeur shadoko".
    Tu définis ce que tu veux (l'interface). Puis, tu fait une implémentation.
    C'est beau les étudiants plein de certitudes et donneurs de leçons...

    Une petite discussion sur le sujet : http://stackoverflow.com/questions/5...naming-in-java

  20. #20
    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
    Autant je suis d'accord avec toi, GPPro, ainsi qu'avec la réponse la mieux notée à l'heure actuelle,

    autant je ne citerais jamais stackoverflow comme une référence de quoi que ce soit.
    Edit : snip le reste, j'avais mal lu.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Seveur MySQL accées direct ?
    Par Didier100 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/09/2005, 21h35
  2. [TOMCAT] Comment empêcher l'accès direct aux fichiers
    Par thomine dans le forum Tomcat et TomEE
    Réponses: 17
    Dernier message: 14/04/2005, 10h19
  3. Empêcher l'accès direct avec squid
    Par Amélie Ladoque dans le forum Réseau
    Réponses: 6
    Dernier message: 11/04/2005, 14h49
  4. Accès séquentiel/Accès direct etc... kesako ?
    Par da_cruz dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 10/09/2003, 11h22
  5. Accès direct au disque dur
    Par Berdo dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 12/01/2003, 16h21

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