Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gestion de parrainage des stagiaire

    24 janvier 2021 à 13:21:33

    Bonjour tout le monde,

    Je suis un débutant dans la programmation, je viens vers vous pour solliciter votre aide. je suis confronté par une difficulté recouvrant comment compter le nombre d'objets dans une classe. Dans le Main() j'ai une méthode statique ou j'appelle la méthode pour afficher le compteur, le problème il ne compte pas le nombre d'objets mais, récupère que la valeur du Code Formateur.   je vous fait parvenir mon code source :

    public class Formateur

        {

            private static int _compteur = 0;

            private int _codeFormateur;

            private string _nom;

            private string _prenom;

            private char _sexe;

            private int _age;

            public static int Compteur { get => _compteur; set => _compteur = value; }

            public int CodeFormateur { get => _codeFormateur; set => _codeFormateur = value; }

            public string Nom { get => _nom; set => _nom = value; }

            public string Prenom { get => _prenom; set => _prenom = value; }

            public char Sexe { get => _sexe; set => _sexe = value; }

            public int Age { get => _age; set => _age = value; }

            public Formateur()

            {

                Compteur++;

                CodeFormateur = Compteur;

            }

    • Partager sur Facebook
    • Partager sur Twitter
      25 janvier 2021 à 10:10:25

      Bon, ce code ressemble bien plus à une repompe d'exercice de vieux "C with class" des années 80 que d'un exercice fait pour appendre vraiment les spécificités du C#.

      Je suis assez dubitatif sur la qualité de ce cours.

      Il nous faudrait aussi le code client de cette classe (qui est vraiment truffée d'erreur de conception et vraiment pas robuste pour un sous au multi-threading et autre). Mais vous êtes débutant, c'est le cours qui est mauvais.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        25 janvier 2021 à 12:21:20

        Bonjour,

        Je suppose que vous aviez compris le besoin ?

        Quand j'appelle ma méthode affichage, j'obtient que 1, par contre j'ai plusieurs objets dans ma classe.

        Formateur formateur = new Formateur("Patrerne", "Jean", 'M', 12);

                        formateur.CodeFormateur = 1;

        formateur.Affichage();

        Compteur(formateur);

        public static void Compteur(Formateur formateur)

                {

                    Console.WriteLine($"Nombre d'elements : {formateur.CodeFormateur}\n");

                } 

        • Partager sur Facebook
        • Partager sur Twitter
          25 janvier 2021 à 13:51:35

          Vos extraits de code n'ont que très peu de sens et essayer de deviner votre code mènera très certainement des assertions qui effaceront votre problème, car nous avons l'habitude acquise d'éviter beaucoup de problèmes, mais de manière "automatique" par la force de l'habitude.

          Vous utilisez la méthode "Affichage" mais vous ne nous donnez pas le code de cette méthode. Et il est tout à fait possible que vous utilisiez le mauvais champ dans cette méthode.

          Donc pour éviter de chasser le dahu, donner nous l'ensemble du code qui permettrait de vous aider (et on a pas un 6ème sens pour deviner le code ou la source d'un bug).

          Si vous êtes autant pommé pour ne même pas voir que vous ne nous donnez clairement pas les informations pour vous aider, c'est très très probablement que ce cours de C# est tout pourri.

          -
          Edité par bacelar 25 janvier 2021 à 16:44:01

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            25 janvier 2021 à 15:14:32

            Voici mon extrait de code, ceci pourrait vous aidez à cerner le besoin. 

            Merci!!

            public class Formateur

                {

                    private static int _compteur = 0;

                    private int _codeFormateur;

                    private string _nom;

                    private string _prenom;

                    private char _sexe;

                    private int _age;

                    public static int Compteur { get => _compteur; set => _compteur = value; }

                    public int CodeFormateur { get => _codeFormateur; set => _codeFormateur = value; }

                    public string Nom { get => _nom; set => _nom = value; }

                    public string Prenom { get => _prenom; set => _prenom = value; }

                    public char Sexe { get => _sexe; set => _sexe = value; }

                    public int Age { get => _age; set => _age = value; }

                    public Formateur()

                    {

                        Compteur++;

                        CodeFormateur = Compteur;

                    }

                    public Formateur(string nom, string prenom, char sexe, int age)

                    {

                        Nom = nom;

                        Prenom = prenom;

                        Sexe = sexe;

                        Age = age;

                    }

                    public void Affichage()

                    {

                        Console.WriteLine($"Code Formateur : {CodeFormateur}\nNom : {Nom}\nPrenom : {Prenom}\nSexe : {Sexe}\nAge : {Age} ans\n");

                    }

                    public void CodeException(Formateur formateur)

                    {

                        if (formateur.CodeFormateur < 0)

                            throw new Exception("La valeur doit etre positive");

                    }

                    public void SexeException(Formateur formateur)

                    {

                        if (formateur.Sexe == 'M' || formateur.Sexe == 'F')

                        {

                        }

                        else

                        {

                            throw new Exception("Sexe invalid ");

                        }

                    }

                    public void NomException(Formateur formateur)

                    {

                        if (formateur.Nom.Length < 3)

                            throw new Exception("Nombre de caracteres doit etre superieure à 3");     

                    }

                }

            }

            Dans le Main()

            Class program

            public static void Compteur(Formateur formateur)

                    {

                        Console.WriteLine($"Nombre d'elements : {formateur.CodeFormateur}\n");

                    }

            • Partager sur Facebook
            • Partager sur Twitter
              25 janvier 2021 à 15:24:08

              Bonjour,

              Par contre, formater votre code avec les balises proposé par OP, la c'est illisible.

              Pour voir comment faire, regardez les règles du forum

              • Partager sur Facebook
              • Partager sur Twitter
                25 janvier 2021 à 17:17:00

                Ok, votre code, malgré le fait qu'il compile n'a aucun sens.

                Je ne vais pas chercher toutes les anomalies car elles sont nombreuses et sont vraisemblablement liées à la qualité du cours ou à votre compréhension de celui-ci.

                Comme je ne connais pas le cours que vous suivez, je vais être factuel sur les anomalies que VOUS avez détectées.

                Quand vous appelez la méthode "Affichage" dans la méthode "Main", il n'y a qu'une instance de la classe Formateur qui a été créée. Donc même si la méthode "Affichage" afficherait le contenu du champ statique "Compteur", ce qui n'est pas le cas (cf. le code source de la méthode "Affichage"), et que vous la gériez correctement (ce qui n'est aussi pas le cas), elle afficherait 1, comme la valeur de "CodeFormateur".

                Si vous l'affichiez correctement, ce champ statique "Compteur" vaudra "0", car vous n'utilisez pas le constructeur sans paramètre de la classe Formateur mais le constructeur avec 4 paramètres, qui lui, oublie de mettre à jour le champ statique.

                Comme vous faite nimpornawak avec le champ statique "Compteur", l'affectation du champ "CodeFormateur" de l'instance "formateur" à 1 juste après sa création permet de faire croire que "CodeFormateur" "fonctionne". Il est complètement incohérent d'avoir la possibilité de pouvoir changer la valeur du champ d'instance "CodeFormateur" puisque le rôle du champ statique "Compteur" est de numéroter les instances de Formateur et de stocker cette immatriculation dans "CodeFormateur". DÉGAGEZ-MOI CE MUTATEUR DE LA PROPRIÉTÉ "CodeFormateur", BORDEL !!!

                C'est quoi ces xxxException qui ne respect aucune convention de nommage, sont complètement hors de propos car c'est aux mutateurs (les "set") des propriétés de faire ces vérifications et pas des méthodes à la cons.

                Le code de la méthode "public static void Compteur(Formateur formateur)" montre que vous n'avez rien compris à l'exercice, mais comme l'exercice n'est absolument pas pertinent pour du C# (je le répète, ça sent une repompe de très mauvais exercices des années 80 du C/C++ qui n'est absolument pas pertinent en C#). Indice, le nombre d'"élément" n'est pas dans le champs d'instance "CodeFormateur" mais dans le champ static "Compteur" (S'il était correctement et simplement géré, ce qui n'est pas le cas ici.)

                • Partager sur Facebook
                • Partager sur Twitter
                Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

                Gestion de parrainage des stagiaire

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown