Riepilogo - Lista personalizzata
Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 40 di 70.
Sfida
FacileCreiamo 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 classeCustomListnello spazio dei nomiCollectionsche 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 aCount, non gli slot vuoti
- Un array privato di interi per memorizzare gli elementi e una proprietà
ListExtensions.cs: crea una classe staticaListExtensionsnello spazio dei nomiCollectionscon un metodo di estensione per la tua CustomList:Sum()- restituisce la somma di tutti gli elementi della lista (fino aCount)
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 usandoToString()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: 105Nota 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
1Fondamenti della programmazione orientata agli oggetti
File esterniNamespace e direttiveIntroduzione a classi e oggettiLa parola chiave "this"Metodi e parametriCampi e proprietàCostruttoriInizializzatori di oggettiRiepilogo - Calcolatrice semplice4Ereditarietà
Sintassi di base dell'ereditarietà (:)La parola chiave 'base'Parole chiave virtual e overrideClassi sealedLa classe base 'object'Riepilogo - Gerarchia dei dipendenti7Funzionalità avanzate
Sovraccarico degli operatoriIndicizzatori (this[])Override di ToString()Metodi di estensioneRiepilogo - Lista personalizzata10Pattern di progettazione Parte 1
Introduzione ai pattern di progettazioneSingleton thread-safePattern FactoryPattern Observer (eventi)Pattern Strategy2Proprietà e membri statici
Proprietà implementate automaticamenteProprietà di sola lettura e di sola scritturaCampi e metodi staticiClassi staticheMembri con corpo di espressione5Polimorfismo e interfacce
Polimorfismo a compile time e runtimeInterfaccia o classe astrattaInterfacce multipleInterfacce espliciteUpcasting e downcastingRipasso: calcolatore di forme8Concetti avanzati di programmazione a oggetti
Composizione invece dell'ereditarietàTipi generici (classi e metodi)Delegati ed eventiAttributi e reflectionIDisposable e istruzione usingNozioni di base sull'iniezione delle dipendenze11Pattern di progettazione, parte 2
Pattern del ComandoPattern dell’AdattatorePattern del DecoratorePattern Template MethodPattern dello StatoPattern Composito3Architettura delle classi
Dati di istanza vs staticiParole chiave 'readonly' e 'const'Campi di supportoRiepilogo - Gestore di conti bancari6Incapsulamento
Modificatori di accessoProprietà per l'incapsulamentoImplementazione dell'occultamento dei datiModelli di immutabilitàRiepilogo - Registri degli studentiEsercitati da solo: Compilatore C# online