Jan.01

TP4 – Collections ArrayList

Problème :

Soit la classe Module qui comporte les attributs suivants :

numeroModule           int

descriptionModule     String

masseHoraire              int

 

  1. Définir la classe Module en interdisant l’accès aux attributs.
  2. Ajouter les accesseurs et les mutateurs de chaque attribut.
  1. Ajouter un compteur qui permet de compter le nombre d’objets instanciés de la classe Module.
  2. Ajouter une méthode equals()  qui teste l’égalité de deux modules ( le test se fait par rapport aux numéros des modules)
  3. Ajouter une méthode toString() qui retourne l’état d’un objet Module.
  4. Ajouter un constructeur avec argument qui initialise tous les attributs de la classe Module (le numeroModule doit avoir la valeur du compteur)

Soit la classe Personne qui comporte les attributs suivants :

nom                            String

prenoms                      ArrayList (une personne peut avoir plusieurs prénoms)

DateNaissance            Date

  1. Définir la classe Personne et y ajouter les accesseurs et les mutateurs de chaque attribut.
  2. Ajouter un constructeur avec trois arguments qui initialise le nom, le(s) prénom(s), et la date de naissance.
  3. Ajouter une méthode equals() qui teste l’égalité de deux objets Personne (deux instances de la classe Personne sont égales s’elles ont le même nom et les mêmes prénoms).
  4. Ajouter une méthode toString() qui retourne l’état d’un objet Personne.

Soit la classe Formateur qui hérite de la classe Personne et qui a comme attributs :

matricule         String

modules          ArrayList (liste des modules pris en charge par le formateur)

  1. Définir la classe Formateur et y ajouter les accesseurs et les mutateurs de chaque attribut.
  2. Ajouter un constructeur qui initialise tous les attributs de la classe Formateur.
  3. Ajouter une méthode equals() qui teste l’égalité de deux objets Formateur (deux objets Formateur sont égaux s’ils ont le même nom les mêmes prénoms et le même matricule).
  4. Ajouter une méthode verifierModule() qui vérifie si un module figure parmi la liste des modules pris en charge par le formateur.
  5. Ajouter une méthode ajouterModule() qui permet d’ajouter un module à la collection des modules pris en charge par le formateur.
  6. Ajouter une méthode supprimerModule() qui supprimer un module de la liste des module d’un formateur.
  7. Ajouter une méthode totalMH() qui retourne la masse horaire globale prise en charge par un formateur.
  8. Ajouter une méthode listeModules() qui retourne la liste des modules d’un formateur (sous forme d’un ArrayList).
  9. Surcharger la dernière méthode en tenant compte des deux aspects suivants :
  1. Restreindre son retour aux modules dont la masse horaire dépasse un seuil minimal.
  2. Changer le retour à une chaine de caractère qui décrit l’ensemble des modules séparés les uns des autres par un retour à la ligne.

Correction

La classe Module

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GestionModules
{
    class Module
    {
        private static int compteur=0;
        private int numeroModule;
        private string descriptionModule;
        private int masseHoraire;

        // Question 6
        public Module() {
            compteur++;
            numeroModule = compteur;
        }
        public Module(string _descriptionModule, int _masseHoraire)
        {
            compteur++;
            numeroModule = compteur; // Question 3
            this.descriptionModule = _descriptionModule;
            this.masseHoraire = _masseHoraire;
        }

        //Question 2
        public int getNumM()
        {
            return numeroModule;
        }
        public string getDM() {
            return descriptionModule;
        }
        public int getMO() {
            return masseHoraire;
        }
        public void setDM(string _descriptionModule) {
            this.descriptionModule = _descriptionModule;
        }
        public void setMO(int _masseHoraire) {
            this.masseHoraire = _masseHoraire;
        }

        // Question 4
        public bool Equals(Module m) {
            return (this.numeroModule == m.numeroModule);
        }

        // Question 5
        public override string ToString()
        {
            return "Le Module :" + descriptionModule + ", son numero est :" + numeroModule +" et sa masse horaire est : "+masseHoraire;
        }
    }
}

La classe Personne

using System;
using System.Collections;
using System.Linq;
using System.Text;

namespace GestionModules
{
    class Personne
    {
        private string nom;
        private ArrayList prenom;
        private DateTime DateNaissance;

        // Question 8
        public Personne(string _nom, ArrayList _prenom, DateTime DN) {
            this.nom = _nom;
            this.prenom = _prenom;
            this.DateNaissance = DN;
        }

        // Question 7
        public string getNom() {
            return nom;
        }
        public ArrayList getPrenom() {
            return prenom;
        }
        public DateTime getDN() {
            return DateNaissance;
        }

        public void setNom(string _nom)
        {
            this.nom=_nom;
        }
        public void getPrenom(ArrayList _prenom)
        {
            this.prenom=_prenom;
        }
        public void getDN(DateTime DN)
        {
            DateNaissance = DN;
        }


        // Question 9
        public bool Equals(Personne p)
        {
            return ((this.nom == p.nom) && (this.prenom==p.prenom));
        }

        // Question 10
        public override string ToString()
        {
            // Méthode 1
            string prenoms="";
            foreach (string pn in prenom)
            {
                prenoms = prenoms + " " + pn;
            }

            // Moéthode 2
            // string prenoms = string.Join(" ", prenom.ToArray());

            return "Le pesonne :" + nom + " " + prenoms + ", sa date de naissance est : " + DateNaissance;
        }
    }
}

La classe Formateur

using System;
using System.Collections;
using System.Linq;
using System.Text;

namespace GestionModules
{
    class Formateur : Personne
    {
        private string matricule;
        private ArrayList Listmodules;
 
        // Question 12
        public Formateur(string _nom, ArrayList _prenom, DateTime DN, string _matricule, ArrayList _modules):base(_nom,_prenom,DN)
        {
            matricule = _matricule;
            Listmodules = _modules;
        }

        // Question 11
        public string getMatricule()
        {
            return matricule;
        }
        public ArrayList getListmodules()
        {
            return Listmodules;
        }
        public void setMatricule(string _matricule)
        {
            this.matricule = _matricule;
        }
        public void setModules(ArrayList _modules)
        {
            this.Listmodules = _modules;
        }

        // Question 13
        public bool Equals(Formateur f)
        {
            return ((base.getNom() == f.getNom()) && (base.getPrenom() == f.getPrenom()) && (this.matricule == f.matricule));
        }

        // Question 15
        public void ajouterModule(Module m) {
            if (this.verifierModule(m) == false)
            {
                this.Listmodules.Add(m);
                Console.WriteLine("Le module a été ajouté avec succès au formateur");
            }
            else {
                Console.WriteLine("l'ajouter n'a pas été effectué car ce module est déjà pris en charge par le formateur");
            }
        }

        // Question 14
        public bool verifierModule(Module m) {
            int j = 0;
            foreach (Module mod in Listmodules)
            {
                if (mod.Equals(m)) {
                    j++;
                }
            }
            if (j == 0) {
                //Console.WriteLine("Ce module n'est pas pris en charge par le formateur");
                return false;
            }
            else{
                //Console.WriteLine("Ce module est pris en charge par le formateur");
                return true;
            }
        }

        // Question 16
        public void supprimerModule(Module m) {
            if (this.verifierModule(m) == true)
            {
                Listmodules.Remove(m);
                Console.WriteLine("la suppression a été effectué avec succès");
            }
            else {
                Console.WriteLine("la suppression n'a pas été effectué car le module n'est pas pris en charge par le formateur");
            }
        }


        // Question 17
        public int totalMH() {
            int total = 0;
            foreach (Module m in Listmodules) {
                total = total + m.getMO();
            }
            return total;
        }

        // Question 18 : 

        //public ArrayList listeModules()
        //{
        //    return this.Listmodules;
        //}

        // Question 19-a :
        public ArrayList listeModules(int seuil)
        {
            ArrayList l = new ArrayList();
            foreach (Module m in Listmodules)
            {
                if (m.getMO() > seuil) {
                    l.Add(m);
                }
            }
            return l;
        }

        // Question 19-b :
        public string listeModules()
        {
            string str ="";
            foreach (Module m in Listmodules)
            {
                str = str + "\n " + m.getDM();
            }
            return str;
        }
    }
}

La classe Program

using System;
using System.Collections;
using System.Linq;
using System.Text;

namespace GestionModules
{
    class Program
    {
        static void Main(string[] args)
        {
            Module m1 = new Module("Techniques de programmation structure", 120);
            Module m2 = new Module("Langage de programmation structurée", 90);
            Module m3 = new Module("Techniques de programmation structure", 120);
            Module m4 = new Module("Gestion du temps", 30);
            Module m5 = new Module("Système de gestion de bases de données", 60);
            Module m6 = new Module("Développement et déploiement de sites Web  dynamiques", 100);
            if (m1.Equals(m1))
            {
                Console.WriteLine("Les deux modules sont les même");
            }
            else
            {
                Console.WriteLine("Les deux modules ne sont pas les même");
            }

            Console.WriteLine(m4);

            ArrayList prenom1 = new ArrayList();
            prenom1.Add("Mohamed");
            prenom1.Add("Amine");
            prenom1.Add("Mehdi");
            DateTime DN1=new DateTime(1994,05,14);
            Personne p1 = new Personne("Naciri",prenom1,DN1);

            ArrayList prenom2 = new ArrayList();
            prenom2.Add("Maria");
            prenom2.Add("Ihssan");
            DateTime DN2 = new DateTime(1995, 08, 22);
            Personne p2 = new Personne("Bennani", prenom2, DN2);

  

            if (p1.Equals(p2))
            {
                Console.WriteLine("Les deux personnes sont les même");
            }
            else
            {
                Console.WriteLine("Les deux personnes ne sont pas les même");
            }
            Console.WriteLine(p2);

            ArrayList prenom3 = new ArrayList();
            prenom3.Add("Abde");
            prenom3.Add("Allah");
            DateTime DN3 = new DateTime(1990, 06, 03);
            ArrayList modules = new ArrayList();

            Formateur f1 = new Formateur("Saddi", prenom3, DN3,"DD1",modules);
            f1.ajouterModule(m1);
            f1.ajouterModule(m2);
            f1.ajouterModule(m3);
            f1.ajouterModule(m4);
            f1.ajouterModule(m6);
            f1.supprimerModule(m5);
            ArrayList LF= f1.listeModules(90);
            
            Console.WriteLine("Nombre des modules qui sont pris en charge par le formateur :" + f1.getListmodules().Count);
            Console.WriteLine("Nombre des modules après l'application de la seuil : " + LF.Count);

            Console.WriteLine("La masse horaire globale prise en charge par un formateur est :" + f1.totalMH());
            Console.WriteLine("La liste de modules qui sont pris en charge par le formateur :" + f1.listeModules());
            Console.ReadLine();
        }
    }
}
TP
Share this Story:
  • facebook
  • twitter
  • gplus

About Hassan EL Bahi

Assistant Professor at Cadi ayyad University.

Comments(3)

  1. Hamza
    1540 days ago

    Salut monsieur. Pouvez vous m’envoyer votre cours du c# sur ma boite email s’il vous plaît ?

  2. Safae
    774 days ago

    Salut monsieur. Pouvez vous m’envoyer votre cours du c# sur ma boite email s’il vous plaît ?

    • Abdelilah omman
      217 days ago

      The type or namespace name ‘Module’ could not be found

Leave a comment

Comment