Menu
Coddy logo textTech

Podsumowanie – własna lista

Część sekcji Programowanie obiektowe ścieżki C# w Coddy. Lekcja 40 z 70.

challenge icon

Wyzwanie

Łatwy

Zbudujmy klasę CustomList, która łączy wszystkie zaawansowane funkcje z tego rozdziału — przeciążanie operatorów, indeksatory, przesłonięcie ToString() i metody rozszerzające — aby utworzyć kolekcję, z której korzysta się w naturalny i intuicyjny sposób.

Rozmieścisz kod w trzech plikach:

  • CustomList.cs: Utwórz klasę CustomList w przestrzeni nazw Collections, która opakowuje wewnętrzną tablicę liczb całkowitych i zapewnia intuicyjne sposoby dostępu. Twoja lista powinna mieć:
    • Prywatną tablicę liczb całkowitych do przechowywania elementów oraz właściwość Count (z prywatnym setterem) śledzącą liczbę przechowywanych elementów
    • Konstruktor przyjmujący pojemność (liczbę całkowitą) i inicjujący wewnętrzną tablicę o takim rozmiarze
    • Metodę Add(int item), która dodaje element na następnej dostępnej pozycji (jeśli jest miejsce)
    • Indeksator this[int index], który umożliwia pobieranie i ustawianie elementów według ich pozycji
    • Przeciążony operator +, który łączy dwie listy CustomList w nową listę zawierającą wszystkie elementy z obu (pojemność nowej listy powinna być sumą liczników obu list)
    • Przesłoniętą metodę ToString(), która zwraca elementy w formacie [item1, item2, item3] — uwzględniaj tylko elementy aż do Count, a nie puste miejsca
  • ListExtensions.cs: Utwórz klasę statyczną ListExtensions w przestrzeni nazw Collections z metodą rozszerzającą dla klasy CustomList:
    • Sum() — zwraca sumę wszystkich elementów listy (aż do Count)
  • Program.cs: W głównym pliku utwórz dwie listy CustomList, dodaj elementy do każdej z nich, a następnie pokaż działanie wszystkich funkcji razem — użyj indeksatora, aby uzyskać dostęp do elementów, połącz listy operatorem +, wypisz je za pomocą ToString() i oblicz sumę przy użyciu metody rozszerzającej.

Otrzymasz sześć danych wejściowych:

  • Trzy liczby całkowite do dodania do pierwszej listy
  • Trzy liczby całkowite do dodania do drugiej listy

Utwórz pierwszą listę o pojemności 5, a drugą o pojemności 3. Dodaj trzy wartości wejściowe do odpowiedniej listy.

Wypisz wynik w tym formacie:

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

Na przykład, jeśli danymi wejściowymi są 10, 20, 30, 5, 15 i 25, wynik powinien być następujący:

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

Zwróć uwagę, jak wszystkie elementy współpracują ze sobą — indeksator zapewnia dostęp podobny do dostępu do tablicy, operator + pozwala w naturalny sposób łączyć listy, ToString() zapewnia czytelny wynik, a metoda rozszerzająca dodaje użyteczną funkcjonalność. Tak działają dobrze zaprojektowane klasy!

Spróbuj swoich sił

using System;
using Collections;

class Program
{
    public static void Main(string[] args)
    {
        // Wczytaj sześć liczb całkowitych
        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: Utwórz pierwszą CustomList o pojemności 5
        // TODO: Dodaj a1, a2, a3 do pierwszej listy

        // TODO: Utwórz drugą CustomList o pojemności 3
        // TODO: Dodaj b1, b2, b3 do drugiej listy

        // TODO: Wypisz listę 1 za pomocą ToString()
        // TODO: Wypisz listę 2 za pomocą ToString()
        // TODO: Wypisz element 1[0] listy za pomocą indeksatora
        // TODO: Połącz listy za pomocą operatora + i wypisz wynik
        // TODO: Wypisz sumę elementów połączonej listy za pomocą metody rozszerzającej Sum()
    }
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C# online