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 qui appel une autre classe avec un nombre


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 24
    Points
    24
    Par défaut classe qui appel une autre classe avec un nombre
    Bonjour,
    Voici mon problème:
    J'ai deux classes et je souhaiterai appeler la deuxième en utilisant un nombre vu qu'il y a plusieurs SET de paramètres possibles.
    j'explique:
    une classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class STATION
    {
    int n_Station ;
    string s_nomStation;
    xxx SETdeParametres ;
    }
    public class Setdeparametres
    {
    int n_premierParam;
    int n_DeuxièmeParam;
    float f_troisièmeParam}
    Je souhaiterai pouvoir faire un appel du style:
    station stationnum1 = new station;
    stationnum1.Setdeparam[2].n_deuxiemeparam = 32;

    Cela est-il possible ou je me plante et il y a beaucoup plus simple??

    Merci par avance et belle journée!


    Ok j'ai trouvé et fait comme ca, ca vous semble viable??
    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
        public class Station
        {//Object class1
            //private
        static int NbreParam = 5; 
            //public
        public bool bool1;//
        public int valeur2;// [s]
        public int Temps;// [s]
        public station_SETOFPARAM[] SetNum = new station_SETOFPARAM[NbreParam];        
        }
        public class station_SETOFPARAM
        {
           public int pos1;// départ [µm]
            public int pos2; // fin [µm]
         }
    avec l'appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    STATION station2 = new STATION();
    station2.SetNum[2].pos1 = 2;
    Alors? oui ou pas du tout?....

    Merci encore par avance!

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Tu l'a fait comme ça ? Ça doit te générer un exception.

    Voici comment je procéderai :

    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 Station
            {
                public bool bool1;
                public int valeur2;
                public int Temps;
                public station_SETOFPARAM[] SetNum; // Déclaration du tableau de station_SETOFPARAM
     
                public Station(int NbreParam)
                {
                    SetNum = new station_SETOFPARAM[NbreParam]; // Initialisation du tableau
                    for (int i = 0; i < NbreParam; i++) // Pour chaque élément du tableau
                        SetNum[i] = new station_SETOFPARAM(); // Initialisation de l'élément
                }
     
                public class station_SETOFPARAM
                {
                    public int pos1;
                    public int pos2;
                }
            }
    Code d'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                Station station2 = new Station(3); // Constructeur spécifiant le nombre de paramètre
                station2.SetNum[2].pos1 = 2;
                station2.SetNum[2].pos2 = 4;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 24
    Points
    24
    Par défaut Une exception...
    Bonjour,
    Pourquoi une exception?
    Mais en effet c'est plus propre d'utiliser le constructeur pour ca. Merci!!

  4. #4
    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
    Points : 3 404
    Points
    3 404
    Par défaut
    Tu peux tout simplement utiliser une liste d'objet.

    Regarde du côté de la classe List(Of T)

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    J'ai prit ton code collé ça génère une exception et ça parait logique puisque les éléments du tableau ne sont pas initialisé.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    J'ai prit ton code collé ça génère une exception et ça parait logique puisque les éléments du tableau ne sont pas initialisé.
    Avec Visual studio 2010 c# ca marchait... mais il est initialisé avec le membre static NbreParam=5 non?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par ZenZiTone Voir le message
    Tu peux tout simplement utiliser une liste d'objet.

    Regarde du côté de la classe List(Of T)
    Oui j'y avais pensé mais comme c'est pas une liste évolutive en dynamique... je voulais pas utiliser plus que ce qu'il fallait... mais merci!!

  8. #8
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Citation Envoyé par lupus5 Voir le message
    Avec Visual studio 2010 c# ca marchait... mais il est initialisé avec le membre static NbreParam=5 non?
    Non, si ça fonctionnait c'est que tu n'a pas du donner tout le code.
    Le tableau est initialisé mais pas chaque élément.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Non, si ça fonctionnait c'est que tu n'a pas du donner tout le code.
    Le tableau est initialisé mais pas chaque élément.
    Oui maintenant que j'y repense il surlignait les membres de la classe setparam en me disant qu'ils n' étaient pas utilisés. Merci!

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 24
    Points
    24
    Par défaut Je reprend où j'en étais...
    Bonjour,
    J'ai pu avancer un bout mais ya un truc de base qui coince...
    voilà ce que j'aimerai pouvoir écrire p.ex.:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Stationduboutdulac [1].SetNum[1].f_valeur = 2;
    Stationduboutdulac [1].SetNum[3].f_valeur = 33;
    Stationduboutdulac [1].Properties.f_propertiesvalue2 = 2.3;
    Stationduboutdulac [3].Properties.f_propertiesvalue2 = 4.3;
    Pour ca je fait une classe:
    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
     
    public class Station_class
        {
     
            public station_SETOFPARAM[] SetNum;           // Déclaration du tableau de station_SETOFPARAM
            public GeneralProperties Properties;          // Déclaration general properties                     
            public GeneralParameters Param_Gen; // Déclaration general parameters
     
            public Station(int NbreParam)            //constructeur
            {
                SetNum = new station_SETOFPARAM[NbreParam]; // Initialisation du tableau
                for (int inc = 0; inc < NbreParam; inc++)         // Pour chaque élément du tableau
                { SetNum[inc] = new station_SETOFPARAM(); }   // Initialisation de l'élément
                Properties = new GeneralProperties();
                Param_Gen = new GeneralParameters();
            }
     
            public class station_SETOFPARAM
            {
                public bool b_SetofParamvalue1;
                public float f_SetofParamvalue2;
            }
            public class GeneralProperties
            {
                public bool b_propertiesvalue1;
                public float f_propertiesvalue2;
            }
            public class GeneralParameters
            {
                public bool b_generalvalue1;  
                public int i_generalvalue1;  
            }
        }
    Puis dans le form:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private Station_class[] Station
     
     public MainHmi()
            {
                InitializeComponent();
                Stationduboutdulac = new Station_class[5];
                //prg own objects
                for (int inc = 0; inc < nStation; inc++)         // Pour chaque élément du tableau
                {Stationduboutdulac [inc] = new Station_class(6);}   // Initialisation des stations
            }
    Je fait quoi de faux??
    Sniff....
    Merci par avance et à ceux qui 'ont répondu!!

  11. #11
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Le constructeur doit porter le même nom que la classe.
    Donc pas 'public Station(int NbreParam)' mais 'public Station_class(int NbreParam)'.

    Pour obtenir ce que tu souhaite tu as plusieurs méthodes, je t'en propose une.
    Ta classe est fonctionnelle mais tu souhaite en faire une collection, je choisi l'objet list que j'aime bien.

    NB1 : J'ai associer ce code à l'action click sur un bouton, a modifier pour ton contexte.
    NB2 : J'ai modifié une erreur, je pense, 'f_valeur'.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            private List<Station_class> Stationduboutdulac;
            private void button1_Click(object sender, EventArgs e)
            {
                Stationduboutdulac = new List<Station_class>(); // Instancie la liste
                for (int i = 0; i < 5; i++) // Boucle 5 fois
                    Stationduboutdulac.Add(new Station_class(6)); // Créer l'objet Station et l'ajoute à la liste
                Stationduboutdulac[1].SetNum[1].b_SetofParamvalue1 = true;
                Stationduboutdulac[1].SetNum[3].b_SetofParamvalue1 = false;
                Stationduboutdulac[1].Properties.f_propertiesvalue2 = 2.3F;
                Stationduboutdulac[3].Properties.f_propertiesvalue2 = 4.3F;
            }

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Le constructeur doit porter le même nom que la classe.
    Donc pas 'public Station(int NbreParam)' mais 'public Station_class(int NbreParam)'.

    Pour obtenir ce que tu souhaite tu as plusieurs méthodes, je t'en propose une.
    Ta classe est fonctionnelle mais tu souhaite en faire une collection, je choisi l'objet list que j'aime bien.

    NB1 : J'ai associer ce code à l'action click sur un bouton, a modifier pour ton contexte.
    NB2 : J'ai modifié une erreur, je pense, 'f_valeur'.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            private List<Station_class> Stationduboutdulac;
            private void button1_Click(object sender, EventArgs e)
            {
                Stationduboutdulac = new List<Station_class>(); // Instancie la liste
                for (int i = 0; i < 5; i++) // Boucle 5 fois
                    Stationduboutdulac.Add(new Station_class(6)); // Créer l'objet Station et l'ajoute à la liste
                Stationduboutdulac[1].SetNum[1].b_SetofParamvalue1 = true;
                Stationduboutdulac[1].SetNum[3].b_SetofParamvalue1 = false;
                Stationduboutdulac[1].Properties.f_propertiesvalue2 = 2.3F;
                Stationduboutdulac[3].Properties.f_propertiesvalue2 = 4.3F;
            }
    Merci beaucoup! C'est plus simple avec des listes en effet...

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

Discussions similaires

  1. Compilation d'une classe java avec cmd appelant une autre classe
    Par y_chafaqi dans le forum Général Java
    Réponses: 10
    Dernier message: 09/12/2009, 20h24
  2. Réponses: 7
    Dernier message: 03/12/2008, 15h18
  3. [Reflection] Comment connaitre le nom de la classe qui appelle une méthode?
    Par framus.class dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 09/06/2008, 09h13
  4. Pb d'appel d'un classe (public) dans une autre
    Par MSM_007 dans le forum Général Java
    Réponses: 5
    Dernier message: 12/05/2008, 17h12
  5. appeler une autre classe en J2ME
    Par yodark dans le forum Java ME
    Réponses: 2
    Dernier message: 06/12/2007, 13h48

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