Menu
Coddy logo textTech

Récapitulatif - Liste personnalisée

Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy. Leçon 40 sur 70.

challenge icon

Défi

Facile

Construisons une classe CustomList qui réunit toutes les fonctionnalités avancées de ce chapitre — surcharge d’opérateurs, indexeurs, redéfinition de ToString() et méthodes d’extension — afin de créer une collection dont l’utilisation est naturelle et intuitive.

Vous organiserez votre code sur trois fichiers :

  • CustomList.cs : créez une classe CustomList dans l’espace de noms Collections qui encapsule un tableau d’entiers interne et fournit des modes d’accès intuitifs. Votre liste doit comporter :
    • un tableau privé d’entiers pour stocker les éléments et une propriété Count (avec un accesseur privé) indiquant le nombre d’éléments stockés ;
    • un constructeur qui accepte une capacité (un entier) et initialise le tableau interne à cette taille ;
    • une méthode Add(int item) qui ajoute un élément à la prochaine position disponible (s’il y a de la place) ;
    • un indexeur this[int index] qui permet de récupérer et de définir des éléments par position ;
    • un opérateur + surchargé qui combine deux CustomLists en une nouvelle liste contenant tous les éléments des deux listes (la capacité de la nouvelle liste doit être égale à la somme des deux nombres d’éléments) ;
    • une méthode ToString() redéfinie qui renvoie les éléments au format [item1, item2, item3] — incluez uniquement les éléments jusqu’à Count, et non les emplacements vides.
  • ListExtensions.cs : créez une classe statique ListExtensions dans l’espace de noms Collections avec une méthode d’extension pour votre CustomList :
    • Sum() — renvoie la somme de tous les éléments de la liste (jusqu’à Count).
  • Program.cs : dans votre fichier principal, créez deux CustomLists, ajoutez des éléments à chacune, puis montrez toutes les fonctionnalités utilisées ensemble — utilisez l’indexeur pour accéder aux éléments, combinez les listes avec l’opérateur +, affichez-les à l’aide de ToString() et calculez la somme avec votre méthode d’extension.

Vous recevrez six entrées :

  • trois entiers à ajouter à la première liste ;
  • trois entiers à ajouter à la deuxième liste.

Créez la première liste avec une capacité de 5 et la deuxième avec une capacité de 3. Ajoutez les trois valeurs saisies à chaque liste respective.

Affichez le résultat dans ce format :

List 1: {ToString()}
List 2: {ToString()}
List 1[0]: {first item}
Combined: {ToString() of combined list}
Combined sum: {Sum()}

Par exemple, si les entrées sont 10, 20, 30, 5, 15 et 25, le résultat devrait être :

List 1: [10, 20, 30]
List 2: [5, 15, 25]
List 1[0]: 10
Combined: [10, 20, 30, 5, 15, 25]
Combined sum: 105

Remarquez comment tous les éléments fonctionnent ensemble — l’indexeur vous donne un accès similaire à celui d’un tableau, l’opérateur + vous permet de combiner les listes naturellement, ToString() fournit un affichage lisible et la méthode d’extension ajoute une fonctionnalité pratique. Voilà ce que permettent des classes bien conçues !

Essayez vous-même

using System;
using Collections;

class Program
{
    public static void Main(string[] args)
    {
        // Lire six entiers
        int a1 = Convert.ToInt32(Console.ReadLine());
        int a2 = Convert.ToInt32(Console.ReadLine());
        int a3 = Convert.ToInt32(Console.ReadLine());
        int b1 = Convert.ToInt32(Console.ReadLine());
        int b2 = Convert.ToInt32(Console.ReadLine());
        int b3 = Convert.ToInt32(Console.ReadLine());

        // TODO: Créer la première CustomList avec une capacité de 5
        // TODO: Ajouter a1, a2, a3 à la première liste

        // TODO: Créer la deuxième CustomList avec une capacité de 3
        // TODO: Ajouter b1, b2, b3 à la deuxième liste

        // TODO: Afficher List 1 en utilisant ToString()
        // TODO: Afficher List 2 en utilisant ToString()
        // TODO: Afficher List 1[0] en utilisant l'indexeur
        // TODO: Combiner les listes en utilisant l'opérateur + et afficher le résultat
        // TODO: Afficher la somme de la liste combinée en utilisant la méthode d'extension Sum()
    }
}

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur C# en ligne