POO – Dictionnaire générique héritant d’un Dictionary

Programmez en orienté objet en C Sharp



Objectif : Rappel  de la classe générique de gestion d’une collection d’objets rangés sous forme de dictionnaire (paire de valeur <clef,valeur>), nommée Dictionary<T1,T2> et située dans le namespace System.Collections. Construire une classe MonDico<T> héritant de la classe Dictionary<int,T> permettant dans laquelle la clef est l’entier représentant le hashcode de la valeur :
1°)d’ajouter immédiatement au dictionnaire dès sa création un tableau linéaire de type T,
2°) et permettant de sortir les n premiers éléments du dictionnaire dans un tableau de type T et de les effacer.



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

public class Dictionary<TKey,TValue> :
IDictionary<TKey,TValue>,
ICollection< KeyValuePair<TKey,TValue> >,
IEnumerable< KeyValuePair<TKey,TValue> >,
IDictionary, ICollection, IEnumerable,
ISerializable, IDeserializationCallback;

Interface Description
ICollection <  KeyValuePair<T1,T2> > Contrat pour la taille, l’énumération  d’une collection typée.
IEnumerable <  KeyValuePair<T1,T2> > Contrat pour l’énumération d’une collection typée.
IDictionary <T1,T2> Représente une collection typée sous forme de couple (T1 clef, T2 valeur).
 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)


La classe Dictionary<T1,T2> :

Schéma interne d’un objet de classe DictionaryBase :

L’élément principal est un couple :

1°) Chaque élément du couple est atteignable à travers les propriétés Keys {get;} et Values {get;}

public sealed class KeyCollection : ICollection<TKey>, IEnumerable<TKey>, ICollection, IEnumerable
public sealed class ValueCollection : ICollection<TValue>, IEnumerable<TValue>, ICollection, IEnumerable 2°) La valeur est aussi atteignable par  l’indexeur : this[clef] renvoie la valeur associée à cette clef .

Exercice, MonDico<T> fondé sur un Dictionary<int,T> :

1°)
ajouter lors de la construction du dictionnaire… : rajoutez un nouveau constructeur.
2°)
enlever et mettre n éléments dans un tableau… : rajoutez une nouvelle méthode RemoveItems(…)


Classe MonDico<T> héritant de Dictionary<int,T>

using System;
using System.Collections.Generic;

    class MonDico <T> : Dictionary<int,T>
    {
        public MonDico (.....)
        {
        }

        public ..... RemoveItems(......)
        {
        }
    }