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 :

Developpement C# : Grouper des classes [Débutant]


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Developpement C# : Grouper des classes
    Bonjour,

    Actuellement entrain d'étudier C#, j'ai une question qui me semble simple mais ou j'arrive pas a trouver la réponse.

    Pour faire simple, imaginons qu'on souhaite développer une application qui permet de géré les cours dans une école.
    Nous avons besoin :
    - Liste de tout les élèves
    - Liste de tout les cours
    - Liste de toutes les classes
    - Liste de tous les taches/devoirs
    - Liste de tous les groupe

    La création se classes pour chaque éléments cité plus haut est fait, mais mon problème est dans la création d'un groupe.
    Comment faire pour rajouter plusieurs élèves (les objets) dans un objets groupe ????

    Je vois beaucoup sur le net des technique style, List<> & Collection<> etc...
    Mais je vois pas vraiment d'exemple concret pour ce type de cas de figure, est-ce que c'est une chose simple ?

    Avez-vous des conseils ou liens ?
    Étant donne que je sais pas trop quoi chercher, j'ai beaucoup de mâle car ça fait un petit moment que je cherche sur le net.

    Merci d'avance !

  2. #2
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Bonjour , ton cas est un patron classique de la programmation objet.

    Ton objet Groupe doit contenir une liste d'élève pour pouvoir en ajouter , cette liste doit être présente dans les propriétés publiques de ta classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Groupe {
    public int ID { get; set;}
    public List<Eleve> Eleves {get;set;} 
    }
    Le type liste va te permette de stocker tes objets élèves , et de pouvoir manipuler cette liste ( ajout , suppression , tri ) comme toute autre collection.

    Ainsi , tu peux ajouter un élève de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Eleve eleve = new Eleve("Joe");
    monGroupe.Eleves.Add(eleve);
    Bon code.
    throw new NoSignatureException();

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Il faut surtout ne pas oublier d'initialiser ta liste avant d'y ajouter des éléments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maListe = new List<monType>();

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut La class :)
    Génial WaterTwelve21 ! Un grand merci !

    youtpout978 je vois pas trop quel moment je l'initialise, dans la création de l'objet ( public class Groupe ) ou ailleurs ?

  5. #5
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    tu peux instancier ta List<T> au moment de sa déclaration, ou bien dans le constructeur de ta classe.

    Bon dev.
    Plus je connais de langages, plus j'aime le C.

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Hello,

    Je reviens vers vous vue que j'ai pas réussi, après plusieurs essai de différent manière...
    Je vais vous expliqué ma dernière tentative et si possible vous me dite ou j'ai foiré :

    J'ai une class Eleve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        class Eleve 
        {
            public int ID { get; set; }
            public string Nom { get; set; }
            public string Prenom{ get; set; }
        }
    Puis une class Groupe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        class groupe
        {
            public int ID { get; set; }
            public string Nom { get; set; }
            public List<Eleve> Eleves { get; set; }
        }
    J'ai bienvue que c'était pas pareil que ce que WaterTwelve21 m'as expliqué, il fait un public class groupe dans la classe Eleve mais sans succès.

    Puis dans mon code principale (Main) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // Création d’élèves :
                Eleve Kev = new Eleve() { Nom = "Kev ", Prenom= "Van" };
                Eleve Adam = new Eleve() { Nom = "Adam ", Prenom= "Voor" };
                Eleve Syle = new Eleve() { Nom = "Syle ", Prenom= "Ves" };
     
    // Création du groupe 
                groupe Baam = new groupe () { ID = 01, Nom = "Baam" };
     
    // Rajout de l'Eleve dans le groupe 
                Baam.Eleves.Add(Syle);
    Une fois que j'exécute le code :
    Object reference not set to an instance of an objet.


    Alors qu'est ce que je fais de mâle ? tout ? hahaha
    Est-ce qu'il y a un terme qui me permettrais de faire plus de recherche.
    Car a chaque fois que je fait mes recherche sur le net ou dans la doc, je tombe sur comment crée une list.

    J'ai pas de soucis pour crée une liste en dehors dans objet, mais je vois pas trop ce que je dois rechercher.

    Merci encore d'avance !

  7. #7
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Re,

    comme l'a dit youtpout978 : il ne faut pas oublier d'instancier l'attribut Eleves de ta classe groupe.
    C'est exactement le sens de l'exception que tu reçois (tu essaies d'accéder à un attribut/méthode d'un objet null).
    J'ai proposé deux solutions plus tôt mais je suis pas sûr que tu les aies lues :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Instanciation dans la définition de la classe :
    public class groupe {
        public List<eleve> Eleves = new List<eleve>();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Instanciation dans le constructeur de la classe :
    public class groupe {
        public List<eleve> Eleves;
        public groupe() {
            this.Eleves = new List<eleve>();
        }
    }
    Plus je connais de langages, plus j'aime le C.

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    jopopmk merci pour ta réponse, je pensais que quand je le fessait dans le code principale (main) était suffisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     groupe Baam = new groupe () { ID = 01, Nom = "Baam" };
    Sais-tu me dire dans quel class exactement je dois le rajouter ?
    Car quand je le rajout dans la class groupe, il me donne l'erreur :
    member names cannot be the same as their enclosing type

    Si je comprends bien, c'est vue que je crée la class groupe, je peux pas crée la public class groupe :s.

  9. #9
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Pas sûr de comprendre comment tu peux arriver à cette erreur ...
    On dirait que t'as déclaré ton constructeur avec un type de retour.
    Montre donc à quoi ressemble la classe qui lève le pb de syntaxe, qu'on puisse s'assurer de son origine.
    Plus je connais de langages, plus j'aime le C.

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        class groupe
        {
            public int ID { get; set; }
            public string Nom { get; set; }
            public List<Eleve> Eleves { get; set; }
     
            public class groupe 
            {
            public List<eleve> Eleves = new List<eleve>();
            }
     
        }
    j'ai aussi essayer de nommer la public class Eleves, et j'ai essayer de le mettre dans la class Eleve

  11. #11
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Alors ... sans méchanceté aucune, je crois qu'il te manque les bases pour comprendre ce que tu écris.
    Là tu déclares une classe interne à une autre classe, et les deux portent le même nom.
    Je te mets ce à quoi devrait ressembler ta classe, par contre je te conseille fortement de lire quelques tuto/intro à C# :
    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
    // la classe "groupe", public pour qu'elle soit visible partout (lire la doc sur la portée des classes)
    public class groupe  {
     
        // les 3 attributs qui composent ta classe (perso les attributs public je leur mets pas de get;set; mais apparemment ça fait kiffer les dev :p
        public int ID { get; set; }
        public string Nom { get; set; }
        public List<Eleve> Eleves { get; set; }
     
        // le constructeur de la classe, c'est-à-dire la fonction qui sera appelée quand tu feras un "new groupe()"
        // NB : elle ne doit pas avoir de valeur de retour (lire la doc sur les constructeurs)
        public groupe() {
            // on instancie l'attribut Eleves de l'objet en cours de création (cf. le this, qui n'est pas obligatoire)
            this.Eleves = new List<eleve>();
        }
    }
    Plus je connais de langages, plus j'aime le C.

  12. #12
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    oui je sais très bien, j'ai commencer il y a très peu la programmation.

    Et actuellement je n'est pas de livre en français, mais avec des execise et de la pratique ça devrais aller.

    En tout cas merci ! actuellement cela marche (vue que ta tout fait hahaha).

  13. #13
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Citation Envoyé par Shbouk Voir le message
    je n'est pas de livre en français, mais avec des exercices et de la pratique ça devrais aller.
    Pourquoi t'embêter, tu as toutes les ressources disponibles sur le web pour l'introduction au langage , à commencer par ici !!

    Par la -> http://tahe.developpez.com/dotnet/csharp/
    throw new NoSignatureException();

  14. #14
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Oui il y beaucoup de ressources sur le net, mais je voulais commencer avec la dernière version de C# 6.
    Pour cela que j'ai pas trop suivi des article, tu me le conseil quand même ?

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

Discussions similaires

  1. [CR]grouper des dates par semaines, mais semaines FR !
    Par neo.51 dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 18/05/2004, 20h43
  2. Créer les get et set des classes
    Par cameleon2002 dans le forum JBuilder
    Réponses: 3
    Dernier message: 17/09/2003, 21h03
  3. specifier les chemins des .class
    Par draken dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 29/07/2003, 09h35
  4. [CR] Grouper des sections de détail?
    Par rodrigue50 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/06/2003, 14h32
  5. Inserer des classes java existantes
    Par 2000 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 20/03/2003, 12h35

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