jeudi 8 mai 2008

Objects and POO in .Net


Classes - objets
liste de clients héritant d'un SortedList


 
Objectif : Construire une liste de client fondée sur un SortedList, si vous avez travaillé le même exemple avec ArrayList comparez les codes construits.

 

Rappel du schéma interne d'un SortedList :  
( un SortedList = 2 tables  Keys et Values liées entre elles implantant un IDictionnary )




n est le nombre d'éléments présent dans le SortedList ( n = this.Count ).

Le couple ( une cellule de Keys , la cellule associée dans Values ) peut aussi être considéré comme un DictionaryEntry  = (Key ,Value), le SortedList peut alors être considéré aussi comme une collection d'objets de type DictionaryEntry :


Exercice, listeClient d'objets de type Client, fondée sur un SortedList :



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;

    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 : SortedList    {
        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
            {
            }
        }
    }

Chargez le programme à compléter avec la classe de test. (cliquez sur le lien)

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

(identique à celle de la listeClient fondée sur ArrayList)

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();
     
}

 

--
Alain Lompo
Excelta - Conseils et services informatiques
MCT
MCSD For Microsoft .Net
MVP Windows Systems Server / Biztalk Server
Certifié ITIL et Microsoft Biztalk Server

Aucun commentaire: