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

Framework .NET Discussion :

[C++]Quelle est l'importance de la visibilité d'une classe?


Sujet :

Framework .NET

  1. #1
    Membre régulier Avatar de Mucho
    Inscrit en
    Décembre 2005
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 221
    Points : 109
    Points
    109
    Par défaut [C++]Quelle est l'importance de la visibilité d'une classe?
    Heu désolé je pose des questions bêtes qui sont surement dans la FAQ mais j'ai pas compris

    Donc ma question c'est : est ce que quelqu'un peut m'expliquer pourquoi on utilise des visibilité differents pour les classes ?
    Et quel est exactement son effet ?

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private class MaClassePrivee 
    { 
       ... 
    }
    Merci

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Salut

    Si tu codes une application par toi meme, pas d'interet effectivement. Cependant si tu fais une librairie ou un framework, tu peux jouer avec ces visibilites dans les namespaces pour faire que seules les classes et leurs methodes vraiment utiles (pour celui qui les implemente/utilise) apparaissent

    C'est interessant pour proposer une interface propre, c'est indispensable pour qu'un developpeur qui utilise un framework n'aille pas bidouiller dans la mecanique interne.

    Enfin c'est ce que j'en ai conclu

    [EDIT]: un exemple a cette adresse:
    http://www.developpez.net/forums/vie...667618#2667618
    Si tu mets les deux classes dans un namespace, pas moyen d'utiliser la classe1 sans passer par la classe2

  3. #3
    Membre régulier Avatar de Mucho
    Inscrit en
    Décembre 2005
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 221
    Points : 109
    Points
    109
    Par défaut
    Donc si j'ai bien compris la visibilité est celle du namespace. Par exemple, une classe publique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class MaClassePublique { ... };
    est potentiellement accesssible depuis n'importe où.


    Tandis qu'une class privée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private class MaClassePrivee { ... };
    est accesssible uniquement dans son namespace.
    J'ai compris ? , ... ou non

    Et dans ce cas, la declaration d'une classe protected sert uniquement dans le cas d'héritage de namespaces ? (et ça existe ça ?)

    Ps : 1° Désolé, je comprend vite mais il faut m'expliquer longtemps.
    2° Et justement pour l'exemple j'ai rien compris vu que les deux classes sont publiques. (Si effectivement c'est normal qu'elles soient toues deux publiques, cf 1°)

  4. #4
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    En relisant, je vois que je me suis mal exprime concernant les namespaces:
    Il faut comprendre, les namespaces dans les autres Assemblys
    Ensuite j'ai generalisé entre les visibilités de classes et de membres de classes

    Code:
    public class MaClassePublique { ... };


    est potentiellement accesssible depuis n'importe où.
    Oui

    Tandis qu'une class privée est accesssible uniquement dans son namespace.
    Non, en fait tu ne peux mettre une classe ou un membre privé uniquement dans une autre classe

    Ps : 1° Désolé, je comprend vite mais il faut m'expliquer longtemps.
    Non c'est moi qui ait pas été clair du tout

    2° Et justement pour l'exemple j'ai rien compris vu que les deux classes sont publiques. (Si effectivement c'est normal qu'elles soient toues deux publiques, cf 1°)
    Voir ma reponse precedente

    J'ai trouve ca sur MSDN
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfAccessiblityDomainPG.asp
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfdeclaredaccessibilitypg.asp
    Et c'est vachement plus clair que ce que j'ai dit. Le plus simple est de tester en créant un premier projet (executable) et un second projet (librairie) dans une meme solution.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 105
    Points : 134
    Points
    134
    Par défaut
    Citation Envoyé par Piotrek
    Tandis qu'une class privée est accesssible uniquement dans son namespace.
    Non, en fait tu ne peux mettre une classe ou un membre privé uniquement dans une autre classe
    Non, je crois qu'une classe peut-être déclarée comme privée directement dans un namespace (c'est d'ailleurs son accessibilité par défaut il me semble) auquel cas elle ne serait accessible que depuis son assembly. A vérifier, je n'ai pas le courage de lire la doc et pas de compilo sous la main.

    a+

  6. #6
    Membre régulier Avatar de Mucho
    Inscrit en
    Décembre 2005
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 221
    Points : 109
    Points
    109
    Par défaut
    merci, merci à vous


    effectivement, je viens de lire ça :
    http://msdn.microsoft.com/library/de...sspec_21_1.asp
    et donc public et private sont la visibilitée d'une classe dans differents assemblies et non pas namespaces.

    Et enfin protected n'est pas utilisable pour definir la visibilité d'une classe.
    (en effet, l'héritage d'assemblies me parait plutot abstrait comme concept )

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/07/2011, 22h48
  2. Réponses: 4
    Dernier message: 16/10/2008, 21h29
  3. Réponses: 2
    Dernier message: 20/03/2007, 18h22
  4. Réponses: 11
    Dernier message: 31/01/2005, 17h48

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