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

VB.NET Discussion :

Friend, protected, protected friend


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 104
    Par défaut Friend, protected, protected friend
    Bonjour, j'aimerais savoir ce qui différencie ces 3 termes :
    Friend, protected, protected friend
    Merci

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Je pense que cela est écrit dans n'importe quel cours de VB

  3. #3
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Et oui va voir la :
    http://aspic.developpez.com (rubrique cours)
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 44
    Par défaut [Débutant] Perdu dans les visibilités protected, friend...
    Bonjour,

    Je souhaiterais relancer le sujet

    Voici mon problème.

    J'ai déclaré une propriété dans une classe "Personnage" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Protected m_vie As Integer
    Ensuite j'ai crée une classe Magicien qui hérite de Personnages.

    Dans la classe Magicien, j'ai une méthode qui fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub LancerSort(ByRef Cible As Personnages)
            Cible.m_vie -= m_Sort.Degat
        End Sub
    Mais ça ne marche pas. VB me dit en gros que Cible.m_vie n'est pas accessible..visibilité... Par contre si on déclare la Cible comme un magicien ça marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub LancerSort(ByRef Cible As Magicien)
            Cible.m_vie -= m_Sort.Degat
        End Sub
    Ca marche aussi si l'on déclare :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Friend m_vie As Integer
    et en laissant Personnage comme paramètre.


    Pourtant dans ce que j'ai pu lire dans les cours, "Protected" devrait permettre l'accès depuis les classes héritées non? Apparemment, avec protected comme visibilité, l'attribut d'une classe parente déclarée en "Protected" ne semble pas accessible depuis la classe fille...
    Peut-être qu'il faut se dire que Personnage n'est pas un Magicien ou un truc du genre.

    Autre chose, la visibilité Friend signifie en gros "vue dans tout le projet" (j'ai bon la?). J'ai fait quelques essaies et ça semble coller. Alors "Friend" englobe largement le "Protected" d'un point de vue visibilité.

    Alors question : Qu'apporte le "Protected Friend" par rapport au "Friend" ?

    Merci de m'éclaircir.

    cdt.

  5. #5
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Il faut vraiment revoir tes cours de POO :

    Friend : L'accès à la classe est limité au projet dans lequel elle est définie !

    Protected : https://www.developpez.net/forums/d1...public-static/

    Bonne lecture et A+

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Citation Envoyé par Vince_14 Voir le message
    Voici mon problème.

    J'ai déclaré une propriété dans une classe "Personnage" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Protected m_vie As Integer
    Ensuite j'ai crée une classe Magicien qui hérite de Personnages.

    Dans la classe Magicien, j'ai une méthode qui fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub LancerSort(ByRef Cible As Personnages)
            Cible.m_vie -= m_Sort.Degat
        End Sub
    Mais ça ne marche pas. VB me dit en gros que Cible.m_vie n'est pas accessible..visibilité... Par contre si on déclare la Cible comme un magicien ça marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub LancerSort(ByRef Cible As Magicien)
            Cible.m_vie -= m_Sort.Degat
        End Sub
    En complément de ce que peuvent t'apporter les liens donnés par nos camarades :

    Ton exemple ne fonctionnait pas, car tu essayais d'attendre un membre privé de Personnage. Car si Protected permet de partager une propriété avec les héritiers, il n'en fait pas pour autant un attribut publique. Sinon il n'y aurait pas eu besoin de le déclarer Protected !


    Citation Envoyé par Vince_14 Voir le message
    Autre chose, la visibilité Friend signifie en gros "vue dans tout le projet" (j'ai bon la?). J'ai fait quelques essaies et ça semble coller. Alors "Friend" englobe largement le "Protected" d'un point de vue visibilité.

    Alors question : Qu'apporte le "Protected Friend" par rapport au "Friend" ?
    Ce sont deux choses très différentes. Friend indique juste que l'élément ne sera pas visible en dehors de l'assemblie (du projet, de la dll). Ce qui veux dire que tu peux hériter d'une classe d'une autre assemblie et accéder à son membre Protected si celui-ci n'est pas déclaré Friend Protected.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 44
    Par défaut Toujours pas compris le "Protected" en pratique
    Merci pour les infos. Pour le Friend je commence à voir le truc par contre le protected....J'ai du mal.

    Imaginons la configuration suivante :

    Nom : Sans titre.JPG
Affichages : 447
Taille : 14,5 Ko

    Pour moi, l'intérêt du "protected" c'est de pouvoir accéder à Vie de Personnage et Magicien depuis Personnage ou Magicien mais pas depuis Ogre ou Bête.
    Mais apparemment le protected est beaucoup plus complexe...Ou alors un truc m'échappe.

    Dans mon code, depuis la classe Personnage je peux faire Magicien.Vie mais depuis la classe Magicien impossible de faire Personnage.vie.

    J'en conclus que "Protected Vie" dans une "classe A" dit que tu accèdes depuis cette classe à d'autre Vie mais uniquement si l'objet est du type A.
    Par exemple : Accès à la vie d'un magicien depuis magicien ou personnage car magicien est a la fois magicien et personnage mais dans l'autre sens ce n'est pas vrai donc impossible d'accéder à Vie de personnage depuis magicien car un personnage n'est pas forcément un magicien.

    Soit c'est ça, soit quelque chose m'échappe dans VB.net.....

    N'hésiter pas à me répondre, je ne pratique pas encore beaucoup la POO

    Merci

    A bientôt.

Discussions similaires

  1. La meilleure protection contre le piratage des logiciels ?
    Par iubito dans le forum Débats sur le développement - Le Best Of
    Réponses: 184
    Dernier message: 23/12/2008, 13h35
  2. Problème de protection: Protect UserInterfaceOnly
    Par mardona dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/05/2007, 16h04
  3. Différences entre protected et package friendly
    Par Invité dans le forum Langage
    Réponses: 8
    Dernier message: 11/03/2007, 14h44
  4. Confusion avec les friends/protected etc...
    Par vdumont dans le forum C++
    Réponses: 12
    Dernier message: 10/04/2006, 16h39
  5. [VBA-E] [Excel] Protection d'une plage de cellules
    Par fikou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2002, 11h28

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