Getsuyodev, Programming is mainly used when constructing an application. Programming requires knowledge of application domains, algorithms, and programming language expertise. Programming can be developed in different logic based on developer knowledge.

POO – liste générique héritant d’un SortedList générique

Programmez en orienté objet en C Sharp



Objectif : Rappel  de la classe générique de gestion d’une liste triée, nommée SortedList<T1,T2> et située dans le namespace System.Collections.Generic. Construire une classe MaSortListe<T> héritant de la classe SortedList<int,T> dans laquelle les clefs sont de type “int” et permettant :
1°) d’ajouter directement dans la liste dès sa création un tableau linéaire de n’importe quel type (int, double, string, object,…)
2°) de renvoyer directement dans un tableau de type T tout le contenu des éléments de la liste.



Les interfaces implémentées par SortedList<T1,T2>

Interface Description
ICollection Contrat pour la taille, l’énumération et la synchronisation d’une collection.
IEnumerable Contrat pour l’énumération d’une collection.
IDictionary Représente une collection sous forme de couple (clef, valeur).
 ICollection < KeyValuePair<T1,T2> > manipuler une collection générique de type T2.
 IEnumerable < KeyValuePair<T1,T2> > énumérer une collection générique de type T2.
 IDictionary < T1, T2 >  collection sous forme de couple (clef de type T1,  valeur de type T2).


Rappel : interface IDictionary<T1,T2>

Structure utilisée par SortedList<T1,T2>

Structure Description
KeyValuePair<T1,T2> Défini un unique couple  (clef de type T1, valeur de type T2) qui peut être stocké ou retrouvé.
public struct KeyValuePair<T1,T2>

La classe SortedList<T1,T2> :

Schéma interne d’un SortedList<T1,T2> :  
( un SortedList = 2 tables  Keys de type T1 et Values de type T2 , liées entre elles implantant un KeyValuePair<T1,T2> )

n est le nombre d’éléments présent dans le SortedList<T1,T2> ( n = this.Count ).

Accès à un élément essentiellement grâce à sa clef et à l’indexeur associé :

SortedList<T1,T2> liste ;
….
T1 objKey;
T2 objValue;

liste.Add( objKey, objValue) ;
….
T2 x = liste[objKey ] ;
….
liste[objKey ] = new T2( ) ;
….

foreach(KeyValuePair<T1, T2> elt in liste ) {…}

2°) Le couple ( une cellule de Keys , la cellule associée dans Values ) peut aussi être considéré comme un KeyValuePair = (T1 Key ,T2 Value), le SortedList<T1T2> peut alors être considéré aussi comme une collection d’objets de type KeyValuePair :

Dans ce cas l’accès aux éléments d’un SortedList<T1T2> peut aussi s’effectuer avec une boucle foreach sur chaque KeyValuePair contenu dans le SortedList<T1T2>.

foreach (KeyValuePair paire in this ) {
    paire.Key…. (accès à la clef)
    paire.Value….(accès à la valeur associée à la clef)
}
Exercice, MaSortListe<T> héritant d’un SortedList<int,T> :
1°) gestion d’une liste d’objets de type T, dont les clefs sont la valeur numérique du hashcode de l’objet lui-même. 

2°) ajouter lors de la création dans la liste… : rajoutez un nouveau constructeur.
3°) renvoyer toute la liste dans un tableau : définissez la méthode ToArray( )

Classe MaSortListe<T> dérivée de SortedList<int,T>

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

class MaSortListe<T> : SortedList<int,T>
{
    public MaSortListe(......)
    {
    }

    public ..... ToArray()
    {
    }
}

Comments are closed, but trackbacks and pingbacks are open.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More