Menu
Coddy logo textTech

Riepilogo - Lista personalizzata

Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 40 di 70.

challenge icon

Sfida

Facile

Creiamo una classe CustomList che riunisca tutte le funzionalità avanzate di questo capitolo: overload degli operatori, indicizzatori, override di ToString() e metodi di estensione, per creare una raccolta naturale e intuitiva da usare.

Organizzerai il codice in tre file:

  • CustomList.cs: crea una classe CustomList nello spazio dei nomi Collections che racchiuda un array interno di interi e fornisca modalità di accesso intuitive. La tua lista dovrebbe avere:
    • Un array privato di interi per memorizzare gli elementi e una proprietà Count (con un setter privato) che tenga traccia del numero di elementi memorizzati
    • Un costruttore che accetti una capacità (intero) e inizializzi l'array interno a quella dimensione
    • Un metodo Add(int item) che aggiunga un elemento alla posizione disponibile successiva (se c'è spazio)
    • Un indicizzatore this[int index] che consenta di ottenere e impostare gli elementi in base alla posizione
    • Un operatore + ridefinito che combini due CustomLists in una nuova lista contenente tutti gli elementi di entrambe (la capacità della nuova lista dovrebbe essere la somma dei conteggi di entrambe)
    • Un metodo ToString() ridefinito che restituisca gli elementi nel formato [item1, item2, item3]: includi solo gli elementi fino a Count, non gli slot vuoti
  • ListExtensions.cs: crea una classe statica ListExtensions nello spazio dei nomi Collections con un metodo di estensione per la tua CustomList:
    • Sum() - restituisce la somma di tutti gli elementi della lista (fino a Count)
  • Program.cs: nel file principale, crea due CustomLists, aggiungi elementi a ciascuna, poi mostra tutte le funzionalità in azione insieme: usa l'indicizzatore per accedere agli elementi, combina le liste con l'operatore +, stampa usando ToString() e calcola la somma usando il tuo metodo di estensione.

Riceverai sei input:

  • Tre interi da aggiungere alla prima lista
  • Tre interi da aggiungere alla seconda lista

Crea la prima lista con capacità 5 e la seconda con capacità 3. Aggiungi i tre valori di input alla rispettiva lista.

Stampa l'output in questo formato:

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

Per esempio, se gli input sono 10, 20, 30, 5, 15 e 25, l'output dovrebbe essere:

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

Nota come tutti gli elementi lavorano insieme: l'indicizzatore ti dà un accesso simile a quello di un array, l'operatore + consente di combinare le liste in modo naturale, ToString() fornisce un output leggibile e il metodo di estensione aggiunge funzionalità utili. È così che si presentano le classi ben progettate!

Provalo tu

using System;
using Collections;

class Program
{
    public static void Main(string[] args)
    {
        // Leggi sei numeri interi
        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: Crea il primo CustomList con capacità 5
        // TODO: Aggiungi a1, a2, a3 alla prima lista

        // TODO: Crea il secondo CustomList con capacità 3
        // TODO: Aggiungi b1, b2, b3 alla seconda lista

        // TODO: Stampa la lista 1 usando ToString()
        // TODO: Stampa la lista 2 usando ToString()
        // TODO: Stampa l'elemento 1[0] della lista usando l'indicizzatore
        // TODO: Combina le liste usando l'operatore + e stampa il risultato
        // TODO: Stampa la somma della lista combinata usando il metodo di estensione Sum()
    }
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore C# online