POO – liste de clients héritant d’un Collection

Programmez en orienté objet en C Sharp



Objectif : Construire une liste de client héritant de la classe générique Collection<Client>, si vous avez travaillé le même exemple avec CollectionBase comparez les codes construits.

Rappel du schéma interne d’un objet de classe Collection<T> :

Cette structure peut être atteinte comme un IList<T> par la propriéte Items.

Exercice, listeClient d’objets de type Client, fondée sur un Collection<Client>:

Spécifications des méthodes à implanter :

Classe Client :
Un objet de type Client est identifié grâce à des champs publiques représentant son nom, son prénom et un numéro unique d’identification qui est attribué au client (l’adresse du client est facultative). Les deux surcharges du constructeur renseigneront les champs nom, prenom, idClient et adresse.

Classe listeClient :
Maintient à jour la liste de tous les clients à l’aide de méthodes.

Méthodes de la classe listeClient :
1°) void afficherListeClients() : affiche à la console la liste complète de tous les clients.
2°) void ajouterClient(Client person) : ajoute un client à la liste dans le cas où son identifiant n’est pas déjà existant dans la liste.
3°) void modifAdresseClient(string nomCli, string newAdr) : à partir d’un nom de client “string nomCli” cette méthode modifie l’adresse actuelle de ce client dans la liste.
4°) void supprimerClient(string nomCli) : enlève de la liste, l’objet client à partir de son nom “string nomCli” s’il existe dans la liste.
5°) string requeteClientId(int idCli) : renvoie sous forme d’une string toutes les informations connues sur un client de la liste(nom, prenom, identifiant, adresse) à partir de son numéro d’identification de client “int idCli”.
6°) string requeteClientNom(string nomCli) : renvoie sous forme d’une string toutes les informations connues sur un client de la liste(nom, prenom, identifiant, adresse) à partir de son nom de client “string nomCli”.
7°) Deux surcharges de l’indexeur de la classe listeClient, permettant de retrouver un objet Client de la liste l’un directe ( this[int id] ) l’autre associative ( this[string nom] ).

Classes Client et listeClient

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;

    class Client
    {//-- enregistrement du type client
        public string nom, prenom, adresse;
        public int idClient; 

        //-- constructeurs :
        public Client(string nom, string prenom, int id)
        {
        }
        public Client(string nom, string prenom, string adresse, int id)
            : this(nom, prenom, id)    
        {
        }
    } 

    class listeClient : Collection<Client>    {
        private const string mark = "***"; 

        //-- méthodes métier :
        public void afficherListeClients()
        {//-- liste des clients enregistrés:
        } 

        public string requeteClientNom(string nomCli)
        {//-- requête de recherche de client par nom dans la liste
        } 

        public void modifAdresseClient(string nomCli, string newAdr)
        {//-- modification si le client est présent
        }

        public void ajouterClient(Client person)
        {//-- ajout uniquement si numéro non déjà présent
        }

        public void supprimerClient(string nomCli)
        {//-- supprime uniquement si le client est présent
        }

        public string requeteClientId(int idCli)
        {//-- requête de recherche de client par identif client dans la liste
        }

        //-- indexeurs :
        public Client this[string nom]
        {//-- indexeur de requête Client par nom :Client("***","***",-1) si pas trouvé
            get
            {
            }
        }

        public Client this[int id]
        {//-- indexeur de requête Client par identif :Client("***","***",-2) 
         //   si pas trouvé.
            get
            {
            }
        }
    }

Méthode Main, à utiliser pour tester les méthodes de la classe listeClient :

static void Main(string[] args)
{

                     listeClient cci = new listeClient();
            cci.ajouterClient(new Client("renoir", "rené", 20));
            cci.ajouterClient(new Client("Lizt", "Franzt", "12 rote strasse 1245 Köln",8));
            cci.ajouterClient(new Client("Thomson", "major", " 1st flowers street 00258 Maidstone",47));
            cci.ajouterClient(new Client("Puccini", "Vittorio", 75));
            cci.ajouterClient(new Client("Strauss", "Johan", "62  Kirsh Platz 80065 Wien",109));
            cci.afficherListeClients();
            Console.WriteLine("Requête puccini : "+cci.requeteClientNom("Puccini"));
            Console.WriteLine("Requête idClient=1 : " + cci.requeteClientId(1));
            Console.WriteLine("Requête idClient=8 : " + cci.requeteClientId(8)); 
            cci.ajouterClient(new Client("Wayne", "John", 75));
            cci.ajouterClient(new Client("Wayne", "John","Fort Alamo new Mexico",23));
            cci.afficherListeClients();
            Console.ReadLine();
     }