Menu
Coddy logo textTech

Recapitulação - Lista Personalizada

Parte da seção Programação Orientada a Objetos do Journey de C# da Coddy. Lição 40 de 70.

challenge icon

Desafio

Fácil

Vamos criar uma classe CustomList que reúne todos os recursos avançados deste capítulo — sobrecarga de operadores, indexadores, sobrescrita de ToString() e métodos de extensão — para criar uma coleção que seja natural e intuitiva de usar.

Você organizará seu código em três arquivos:

  • CustomList.cs: crie uma classe CustomList no namespace Collections que encapsule um array interno de inteiros e forneça formas intuitivas de acesso. Sua lista deve ter:
    • Um array privado de inteiros para armazenar os itens e uma propriedade Count (com setter privado) que acompanhe quantos itens estão armazenados
    • Um construtor que aceite uma capacidade (inteiro) e inicialize o array interno com esse tamanho
    • Um método Add(int item) que adicione um item à próxima posição disponível (se houver espaço)
    • Um indexador this[int index] que permita obter e definir itens por posição
    • Um operador + sobrecarregado que combine duas CustomLists em uma nova lista contendo todos os itens de ambas (a capacidade da nova lista deve ser a soma das duas contagens)
    • Um método ToString() sobrescrito que retorne os itens no formato [item1, item2, item3] — inclua apenas os itens até Count, não as posições vazias
  • ListExtensions.cs: crie uma classe estática ListExtensions no namespace Collections com um método de extensão para sua CustomList:
    • Sum() — retorna a soma de todos os itens da lista (até Count)
  • Program.cs: no arquivo principal, crie duas CustomLists, adicione itens a cada uma e, em seguida, demonstre todos os recursos funcionando em conjunto — use o indexador para acessar itens, combine as listas com o operador +, imprima usando ToString() e calcule a soma usando seu método de extensão.

Você receberá seis entradas:

  • Três inteiros para adicionar à primeira lista
  • Três inteiros para adicionar à segunda lista

Crie a primeira lista com capacidade 5 e a segunda com capacidade 3. Adicione os três valores de entrada a cada lista correspondente.

Imprima a saída neste formato:

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

Por exemplo, se as entradas forem 10, 20, 30, 5, 15 e 25, a saída deverá ser:

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

Observe como todas as partes funcionam em conjunto — o indexador oferece acesso semelhante ao de um array, o operador + permite combinar listas naturalmente, ToString() fornece uma saída legível e o método de extensão adiciona funcionalidade útil. É assim que classes bem projetadas devem ser!

Experimente você mesmo

using System;
using Collections;

class Program
{
    public static void Main(string[] args)
    {
        // Lê seis números inteiros
        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: Criar a primeira CustomList com capacidade 5
        // TODO: Adicionar a1, a2, a3 à primeira lista

        // TODO: Criar a segunda CustomList com capacidade 3
        // TODO: Adicionar b1, b2, b3 à segunda lista

        // TODO: Imprimir a Lista 1 usando ToString()
        // TODO: Imprimir a Lista 2 usando ToString()
        // TODO: Imprimir a Lista 1[0] usando o indexador
        // TODO: Combinar as listas usando o operador + e imprimir o resultado
        // TODO: Imprimir a soma da lista combinada usando o método de extensão Sum()
    }
}

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de C# online