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

C# Discussion :

Programme Orientée Objet


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Par défaut Programme Orientée Objet
    Bonjour tout le monde.

    Je me fais une petite mise à jour sur la POO, et il y a un truc que je ne comprends pas :

    J'ai une première classe ainsi définie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    namespace Exemple
    {
        /// <summary>
        /// Classe visible par n'importe quel autre programme d'un autre namespace
        /// </summary>
        class csExemple01
        {
            /// <summary>
            /// Classe visible par n'importe quel autre programme d'un autre namespace
            /// </summary>
            public class csPublic
            {
                public void Methode() { }
            }
    
            /// <summary>
            /// Classe visible uniquement par les autres classes du même assembly
            /// </summary>
            internal class csInternal
            {
                public void Methode() { }
            }
    
            /// <summary>
            /// Une classe abstraite ne peut pas être instanciée
            /// </summary>
            abstract class csAbstract
            {
                public void Methode() { }
            }
    
            /// <summary>
            /// Classe visible uniquement par toutes les autres classes héritant de la classe
            /// conteneur
            /// </summary>
            protected class csProtected
            {
                public void Methode() { }
            }
    
    
            /// <summary>
            /// Classe visible uniquement par les autres classes du même assembly
            /// ou elle esr définie
            /// </summary>
            private class csPrivate
            {
                public void Methode() { }
            }
    
            /// <summary>
            /// Classe qualifiée d'internal (private si interne)
            /// </summary>
            class csDefault
            {
                public void Methode() { }
            }
        }
    }
    Et une class (programme de test) ainsi ecrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    using Exemple;
    namespace POO
    {
        class Program
        {
            static void Main(string[] args)
            {
                csExemple01.csPublic objectPublic = new csExemple01.csPublic();
                csExemple01.csInternal objetInternal = new csExemple01.csInternal();
                objetInternal.Methode();
    
            }
        }
    }
    Quelqu'un pourrait-il me dire pourquoi la ligne suivante
    csExemple01.csInternal objetInternal = new csExemple01.csInternal();
    Normalement, ne devrait-elle pas uniquement être visible par les autres classes du même assembly ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut,

    bah vi, mais tu es surement dans le meme assembly, non ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Par défaut
    Exact
    Je viens juste de comprendre le pourquoi du comment ;p

    Merci

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    Ne confonds pas Assembly et namespace : le namespace c'est "juste" de "l'organisation"

    Juste comme ça : ta classe csExemple01 est private par défaut [edit] eu : Internal... [/edit] donc tu ne la verra pas à l'extérieur de l'assembly

    Si tu veux comprendre ces histoires de private / public, créer plutot une assembly type "class lybrary" que tu références dans une assembly type "Console"

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

Discussions similaires

  1. Problème de programmation orientée objet
    Par dan65 dans le forum WinDev
    Réponses: 8
    Dernier message: 17/09/2006, 01h04
  2. Réponses: 2
    Dernier message: 30/03/2006, 14h48
  3. [C#] Comment correctement programmer orienté objet ?
    Par ChristopheOce dans le forum C#
    Réponses: 5
    Dernier message: 06/02/2006, 13h22
  4. [POO] apprendre la programmation orientée objet
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 10/12/2005, 11h33
  5. [DEBUTANT] Conseil sur la programmation orienté objet
    Par etiennegaloup dans le forum Langage
    Réponses: 7
    Dernier message: 27/05/2005, 12h59

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