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 rassemble toutes les fonctionnalités avancées de ce chapitre - surcharge d'opérateurs, indexeurs, redéfinition de ToString() et méthodes d'extension - pour créer une collection dont l'utilisation semble naturelle et intuitive.

Vous organiserez votre code sur trois fichiers :

  • CustomList.cs : Créez une classe CustomList dans l'espace de noms Collections qui enveloppe un tableau d'entiers interne et fournit des modèles d'accès intuitifs. Votre liste doit avoir :
    • Un tableau d'entiers privé pour stocker les éléments et une propriété Count (avec un accesseur set privé) suivant le nombre d'éléments stockés
    • Un constructeur qui accepte une capacité (entier) et initialise le tableau interne à cette taille
    • Une méthode Add(int item) qui ajoute un élément à la position suivante disponible (s'il y a de la place)
    • Un indexeur this[int index] qui permet d'obtenir et de définir des éléments par position
    • Un opérateur + surchargé qui combine deux CustomLists en une nouvelle contenant tous les éléments des deux (la capacité de la nouvelle liste doit être la somme des deux comptes)
    • Une méthode ToString() redéfinie qui renvoie les éléments au format [item1, item2, item3] - n'incluez que les éléments jusqu'à Count, pas 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 démontrez toutes les fonctionnalités fonctionnant ensemble - utilisez l'indexeur pour accéder aux éléments, combinez les listes avec l'opérateur +, affichez en utilisant ToString(), et calculez la somme en utilisant 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 d'entrée à chaque liste respective.

Affichez la sortie 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, la sortie 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 toutes les pièces fonctionnent ensemble - l'indexeur vous donne un accès de type tableau, l'opérateur + vous permet de combiner des listes naturellement, ToString() fournit une sortie lisible, et la méthode d'extension ajoute une fonctionnalité utilitaire. C'est à cela que ressemblent 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