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 :

[C#] : Problème de construction de class


Sujet :

C#

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Par défaut [C#] : Problème de construction de class
    Bonjour,

    j'ai un problème dans la construction de ma class 'Entite'

    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
    public class Entite
    {
        // Informations relatives à l'entité
        public type = string.Empty;   // Type de l'entité : utilisateur, entreprise
        Utilisateur utilisateur = null;
        Entreprise entreprise = null;
     
     
        public Entite(string type)
        {
            this.type = type;
     
            switch (this.type)
            {
                case "utilisateur":
                    utilisateur = new Utilisateur();
                    entreprise.
                    break;
                case "entreprise":
                    entreprise = new Entreprise();
                    break;
            }
        }
    }
    - Lorsque je fais Entite entite = new Entite("utilisateur"), je veux empêcher de pouvoir faire entite.entreprise...
    - Et quand je fais Entite entite = new Entite("entreprise"), je veux empêcher de pouvoir faire entite.utilisateur...

    Pouvez-vous m'aider à y parvenir ?

    Merci et bonne journée.

  2. #2
    Invité
    Invité(e)
    Par défaut
    tu peux essayer comme cela:

    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
    public class Entite
    {
        // Informations relatives à l'entité
        public _type = string.Empty;   // Type de l'entité : utilisateur, entreprise
        Utilisateur utilisateur = null;
        Entreprise entreprise = null;
     
     
        public Entite(string type)
        {
            _type = type;
     
            switch (_type.ToLower())
            {
                case "utilisateur": utilisateur = new Utilisateur(); break;
                case "entreprise": entreprise = new Entreprise(); break;
            }
        }
     
      public object getInstanceObjet() {
         if(utilisateur != null) {
              return utilisateur ;
          }
          else if(entreprise != null) {
              return entreprise ;
          }
          else {
             return null ;
          }
      } 
    }
    Bien entendu apres tu accedes à ton objet par GetInstance0bjet, et tu converti l'objet retourner de maniere avoir soit un utilisateur soit une entreprise.

    Pour la convertion tu peux utiliser le mot clé "as" car si la convertion n'est pas possible il te retourne null.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Par défaut
    Cela ne change rien. A quoi sert la méthode getInstanceObjet() ?

  4. #4
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    slu

    A quoi sert le "_" devant "_type" ?

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Par défaut
    '_' permet d'indiquer que la variable est globale à la class

  6. #6
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Citation Envoyé par dcollart
    '_' permet d'indiquer que la variable est globale à la class
    Globale a la classe ?!
    Toutes les variables sont globales non ? (en public ou private)

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Par défaut
    oui mais il existe aussi des variables locales aux méthodes. Ce '_' permet alors de différencier les deux types de variables.

  8. #8
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Citation Envoyé par dcollart
    oui mais il existe aussi des variables locales aux méthodes. Ce '_' permet alors de différencier les deux types de variables.
    AHHHH c'est en fait juste une facon de les nommer !
    Le compilateur ne fait pas la difference !

    mais alors pour il n'a pas mis :

    Utilisateur _utilisateur = null;
    Entreprise _entreprise = null;

  9. #9
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    pourquoi tu ne fais pas simplement dérivé tes classes utilisateur et entreprise de la classe entité ?
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Par défaut
    je ne veux manipuler que des objets de type Entite dans le programme. L'objet Entite devra comporter les attributs et méthodes de la class Utilisateur quand l'entite fait référence à un utilisateur et devra comporter les attributs et méthodes de la class Entreprise quand l'entite fait référence à une entreprise

    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
    public class Entite
    {
        public string type = string.Empty;
        public Entite() { }
    }
     
    public class EntiteUtilisateur : Utilisateur
    {
        public string flagUtilisateur = string.Empty;
        public Entite EntiteUtilisateur() { }
    }
     
    public class EntiteEntreprise : Entreprise
    {
        public string flagEntreprise = string.Empty;
        public Entite EntiteEntreprise() { }
    }
     
    Entite entreprise = (Entite) new EntiteEntreprise();
    Entite utilisateur = (Entite) new EntiteUtilisateur ();
    Ca ne marche pas 'entreprise' et 'utilisateur' n'accèdent qu'à la variable 'type' de la class Entite.

    Pouvez-vous m'aider ?

    Merci et bonne journée.

  11. #11
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Ben c'est normal !
    Elles ne sont pas derive de entite ...

  12. #12
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Par défaut
    comment puis-je faire alors ?

  13. #13
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Ben tu as 2 classes...
    EntiteUtilisateur
    EntiteEntreprise

    qui sont derivées de

    Utilisateur
    Entreprise

    D'ou elles sortent ?

    il faut les derivée de entite pour accéder a entite

  14. #14
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Par défaut
    Si tu tiens tant que ça à utiliser Entite, tu crée une classe abstract Entite et deux classe Utilisateur et Entreprise qui dérivent d'Entite.
    Enfin si Utilisateur et Entreprise sont des espèces d'Entite.
    Sinon tu peux faire une interface IEntite et ça marche pareil.

    Et ensuite pour instancier un utilisateur, tu fais:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Entite ent = new Utilisateur();

    ou
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Entite ent = new Entreprise();

    Bye

  15. #15
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Par défaut
    Salut à tous,

    Voici mon code :

    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
    public abstract class Entite
    {
        public string type = string.Empty;
        public Entite() { }
    }
     
    public class Utilisateur : Entite
    {
        // Informations relatives à l'utilisateur
        public string login = string.Empty;        // Identifiant
        public string nom = string.Empty;        // Nom
        public string prenom = string.Empty;    // Prénom
        public int age;                                 // Age
     
        public Utilisateur() {}
     
        ...
        ...
    }
     
    public class Entreprise: Entite
    {
        // Informations relatives à l'entreprise
        public string login = string.Empty;        // Identifiant
        public string nom = string.Empty;        // Nom
        public int ca;                                  // Chiffre d'affaire
     
        public Entreprise() {}
     
        ...
        ...
    }
    Quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Entite utilisateur = new Utilisateur();
    'utilisateur' n'a accès qu'à l'attribut 'type' de la class 'Entite'. Je souhaiterais qu'il est accès en plus à l'ensemble des attributs de la class 'Utilisateur' (nom, prenom,age et login) sans accèder aux attributs de la class 'Entreprise'.

    Par contre quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Entite entreprise = new Entreprise();
    'entreprise' n'a accès qu'à l'attribut 'type' de la class 'Entite'. Je souhaiterais qu'il est accès en plus à l'ensemble des attributs de la class 'Entreprise' (nom, ca et login) sans accèder aux attributs de la class 'Utilisateur'.

    Je galère....

    Pouvez-vous m'aider ?

    Merci et bonne journée.

  16. #16
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Salut

    Deja les attributs en private ...
    et ensuite j'ai tester ton code et j'accede a tout ...

  17. #17
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Par défaut
    je suis super étonné que ça marche chez toi...car pour moi rien à faire.
    Quelle version c# utilises-tu ?

    A quoi ça sert de mettre les attributs en privé dans ce cas ?

  18. #18
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Citation Envoyé par dcollart
    je suis super étonné que ça marche chez toi...car pour moi rien à faire.
    Quelle version c# utilises-tu ?

    A quoi ça sert de mettre les attributs en privé dans ce cas ?
    J'utilise Visual Studio C# Express ...
    On m'a toujours appris a mettre les attributs en private et utiliser des getter et setter pour y acceder.

  19. #19
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Par défaut
    Hello,

    il est normal que tu n'es accès qu'aux variables de Entite puisque ta variable est une référence de type Entite, puisque tu fais:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Entite entite = new Utilisateur();

    Donc tu veux n'utiliser que des instances d'entités, c'est cela ? Et pourquoi est-ce si imoprtant.
    Tu ne peux donc pas faire:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    Utilisateur usr = new Utilisateur();

    Peux tu montrer les attributs de Utilisateur et Entreprise ?

    Je pense qu'il y a un problème de conception.

    Merci
    Bye

  20. #20
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Ah ben c'est vrai !! j'avais meme pas vu !
    Tu fais un cast sur ton objet UTilisateur

    il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Utilisateur aUtilisateur = new Utilisateur();

Discussions similaires

  1. Problème héritage et construction de classe
    Par BadThing dans le forum Langage
    Réponses: 18
    Dernier message: 19/08/2010, 18h15
  2. Problème de construction d'une classe
    Par AraBorLeg dans le forum Langage
    Réponses: 2
    Dernier message: 05/12/2005, 20h07
  3. [C#]Problème DirectX SDK & Sprite(Class)
    Par doccpu dans le forum DirectX
    Réponses: 3
    Dernier message: 16/06/2005, 14h30
  4. Problème de construction avec la STL
    Par gelam dans le forum SL & STL
    Réponses: 19
    Dernier message: 01/05/2005, 13h41
  5. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 15h17

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