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);
}
- Comprenez vous le fonctionnement des éléments
Add
,Count
,Remove
etforeach
? - Modifiez le
main
pour ajouter deux dinosaures à notre liste - 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:
- Ajouter un dinosaure au troupeau,
- Retirer un dinosaure du troupeau,
- Demander à l'ensemble des dinosaures du troupeau de se présenter.
À vous de jouer
- Écrivez le diagramme UML de la classe
Horde
. - Quels sont les tests à développer pour valider le fonctionnement de notre classe ?
- Implémentez la classe
Horde
. - Utilisez cette nouvelle classe au sein de votre
main
.