DY

06 Les collections en C#

Des collections ?

Vous avez l'habitude de manipuler des tableaux pour stocker plusieurs données au sein d'une même structure. Toutefois des structures plus polyvalentes et performante existe. Il s'agit des listes. Nous allons dans la suite de ce TP découvrir cette structure qualifiée de collection.

Une liste de dinosaures

Reprenons notre Solution MesoizoicSolution, nous souhaitons stocker dans une liste nos différents dinosaures, pour ce faire nous allons utiliser le type List<T>.

List<T>

Représente une liste fortement typée d'objets accessibles par index. Fournit des méthodes de recherche, de tri et de manipulation de listes. Celle-ci fait partie du namespace System.Collections.Generic. Vous aurez donc besoin de faire un using de ce namespace en début de fichier:

using System.Collections.Generic;
Premier exemple

Au sein de la méthode main ajoutons la création d'une liste:

Dinosaur louis = new Dinosaur("Louis", "Stegosaurus", 12);
Dinosaur nessie = new Dinosaur("Nessie", "Diplodocus", 11);

List<Dinosaur> dinosaurs = new List<Dinosaur>();

dinosaurs.Add(louis); //Append dinosaur reference to end of list
dinosaurs.Add(nessie);

Console.WriteLine(dinosaurs.Count);
//Iterate over our list
foreach (Dinosaur dino in dinosaurs)
{
    Console.WriteLine(dino.name);
}

dinosaurs.RemoveAt(1); //Remove dinosaur at index 1

Console.WriteLine(dinosaurs.Count);
//Iterate over our list
foreach (Dinosaur dino in dinosaurs)
{
    Console.WriteLine(dino.name);
}

dinosaurs.Remove(louis);

Console.WriteLine(dinosaurs.Count);
//Iterate over our list
foreach (Dinosaur dino in dinosaurs)
{
    Console.WriteLine(dino.name);
}
  1. Comprenez vous le fonctionnement des éléments Add, Count, Remove et foreach ?
  2. Modifiez le main pour ajouter deux dinosaures à notre liste
  3. Plutôt que d'afficher le nom de chaque dinosaure de notre liste, demandez leurs de se présenter.

Une horde de dinosaures

Très souvent nos dinosaures se déplacent en horde, il convient donc de créer une classe Horde qui proposent les méthodes suivantes:

À vous de jouer

  1. Écrivez le diagramme UML de la classe Horde.
  2. Quels sont les tests à développer pour valider le fonctionnement de notre classe ?
  3. Implémentez la classe Horde.
  4. Utilisez cette nouvelle classe au sein de votre main.