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 :

Classe dans une classe


Sujet :

C#

  1. #1
    Membre confirmé Avatar de lasrevinu
    Inscrit en
    Février 2010
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 215
    Par défaut Classe dans une classe
    Bonjour,
    je suis en train de créer une classe qui contient une douzaine de methode.
    6 methode sont d'un meme type, les 6 autres methodes sont d'un autre.
    je voudrais pour une question d'organisation pouvoir appeler ses methodes de la maniere suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MyClass.Mode1.methode1()
    MyClass.Mode1.methode2()
    MyClass.Mode1.methode3()  
    MyClass.Mode1.methode4()
    MyClass.Mode1.methode5()
    MyClass.Mode1.methode6()
    et aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MyClass.Mode2.methode1()
    MyClass.Mode2.methode2()
    MyClass.Mode2.methode3()  
    MyClass.Mode2.methode4()
    MyClass.Mode2.methode5()
    MyClass.Mode2.methode6()
    comment faire ca simplement ?
    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu ne peux pas utiliser les génériques ?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Salut,

    Je ne comprends pas bien ton problème.
    Tu disposes d'une classe avec 12 méthodes pouvant être réparties en 2 groupes logiques ?

    Si c'est bien ça, pourquoi ne pas faire 2 classes dérivées de ta classe de base ?

    Essaye de décrire un peu mieux le problème.

    PS : déclarer une classe dans un classe est possible, mais je ne suis pas sûr que c'est ce que tu as besoin.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Par défaut
    Citation Envoyé par meziantou Voir le message
    Tu ne peux pas utiliser les génériques ?
    +1

    ou design pattern strategy mais je ne trouve pas la question très claire.

  5. #5
    Invité
    Invité(e)
    Par défaut
    En effet si tu pouvais préciser un peu ce que font tes fonctions, ça aiderait à trouver la meilleur solution.

  6. #6
    Membre confirmé Avatar de lasrevinu
    Inscrit en
    Février 2010
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 215
    Par défaut
    Merci à tous,
    je suis en train d'orienter objet mon application,
    en fait, les methode servent à envoyer des commandes à une machine via port serie,
    j'ai une classe machine, dans laquelle je peut creer ses 12 methodes sans problemes,
    le but serai de regrouper ses 12 methode dans 2 classe ou struct..
    le soucis que j'ai est le suivant:

    lorsque je les met dans une classe, et que je les appel via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Machine.Mode1.methode1()
    le compilateur me renvoie une erreur:
    object reference not set to an instance of an object.
    exemples des methodes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void XPositivMode1() {
    serialPort.Write("@x +2000");
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void XNegativMode1() {
    serialPort.Write("@x -2000");
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void ZNegativMode2() {
    serialPort.Write("@x -2000");
    }
    Voila
    merci bcp

  7. #7
    Invité
    Invité(e)
    Par défaut
    Si tu ne peux pas factoriser le code, tu peux toujours créer un namespace Machine et mettre tes deux classes ou structures dedans. C'est toujours mieux que de faire des classes dans des classes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    namespace Machine
    {
        class Mode1
        {
        }
     
        class Mode2
        {
        }
    }
    Dernière modification par Deepin ; 07/04/2010 à 15h49. Motif: Balises [CODE]...[/CODE]

  8. #8
    Membre confirmé Avatar de lasrevinu
    Inscrit en
    Février 2010
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 215
    Par défaut
    Je peux creer mon namespace dans ma classe?
    ou bien je cree un nouveau projet ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    En gros tu remplaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Machine
    {
        class Mode1
        {
            ...
        }
        class Mode2
        {
            ...
        }
    }
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    namespace Machine
    {
        class Mode1
        {
        }
     
        class Mode2
        {
        }
    }

  10. #10
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    Citation Envoyé par lasrevinu Voir le message
    lorsque je les met dans une classe, et que je les appel via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Machine.Mode1.methode1()
    le compilateur me renvoie une erreur:
    object reference not set to an instance of an object.
    J'ai pas compris grand chose au problème (pas d'exemple complet), mais j'ai bel et bien l'impression que tu essaies d'accéder à Mode1 dans ton exemple, sans l'avoir instancié!! C'est bien des méthodes d'instance, pas des statiques???
    De toute manière j'ai pas compris pourquoi tu veux scinder le contenu de 2 classes dans une seule... A ce moment là pourquoi pas opter pour un scission? (2 classes dérivées comme déjà évoqué par un reply)

  11. #11
    Membre confirmé Avatar de lasrevinu
    Inscrit en
    Février 2010
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 215
    Par défaut
    en effet, le soucis venait du fait que j'ai changé mes classe de static à public,
    en instanciant je n'ai plus de probleme.
    merci encore.

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

Discussions similaires

  1. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 09h43
  2. Créer une classe dans une classe
    Par FabaCoeur dans le forum C++
    Réponses: 9
    Dernier message: 02/06/2007, 20h26
  3. [POO] Une Classe dans une Classe. C'est possible?
    Par FrankOVD dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2006, 22h02
  4. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 14h34
  5. Une classe dans une classe...
    Par Baquardie dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2005, 19h36

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