Menu
Coddy logo textTech

Özet - Özel Liste

Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 40 / 70.

challenge icon

Görev

Kolay

Bu bölümdeki tüm gelişmiş özellikleri (operatör aşırı yükleme, dizinleyiciler, ToString() geçersiz kılma ve genişletme yöntemleri) bir araya getiren, kullanımı doğal ve sezgisel hissettiren bir koleksiyon oluşturmak için bir CustomList sınıfı inşa edelim.

Kodunuzu üç dosya halinde düzenleyeceksiniz:

  • CustomList.cs: Collections ad alanında (namespace), dahili bir tam sayı dizisini sarmalayan ve sezgisel erişim modelleri sağlayan bir CustomList sınıfı oluşturun. Listeniz şunlara sahip olmalıdır:
    • Öğeleri depolamak için özel (private) bir tam sayı dizisi ve kaç öğenin depolandığını takip eden bir Count özelliği (özel bir ayarlayıcı - private setter ile)
    • Bir kapasite (tam sayı) kabul eden ve dahili diziyi bu boyutta başlatan bir yapıcı (constructor)
    • Bir öğeyi bir sonraki müsait konuma ekleyen (eğer yer varsa) bir Add(int item) yöntemi
    • Öğeleri konuma göre almayı ve ayarlamayı sağlayan bir this[int index] dizinleyicisi
    • İki CustomList'i, her ikisindeki tüm öğeleri içeren yeni bir listede birleştiren aşırı yüklenmiş bir + operatörü (yeni listenin kapasitesi her iki sayımın toplamı olmalıdır)
    • Öğeleri [item1, item2, item3] formatında döndüren geçersiz kılınmış bir ToString() yöntemi - boş yuvaları değil, yalnızca Count değerine kadar olan öğeleri dahil edin
  • ListExtensions.cs: Collections ad alanında, CustomList'iniz için bir genişletme yöntemi içeren statik bir ListExtensions sınıfı oluşturun:
    • Sum() - listedeki tüm öğelerin toplamını döndürür (Count değerine kadar)
  • Program.cs: Ana dosyanızda iki CustomList oluşturun, her birine öğeler ekleyin, ardından tüm özelliklerin birlikte çalışmasını gösterin - öğelere erişmek için dizinleyiciyi kullanın, listeleri + operatörüyle birleştirin, ToString() kullanarak yazdırın ve genişletme yönteminizi kullanarak toplamı hesaplayın.

Altı girdi alacaksınız:

  • Birinci listeye eklenecek üç tam sayı
  • İkinci listeye eklenecek üç tam sayı

İlk listeyi 5 kapasiteyle, ikinci listeyi ise 3 kapasiteyle oluşturun. Üç girdi değerini ilgili her listeye ekleyin.

Çıktıyı şu formatta yazdırın:

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

Örneğin, girdiler 10, 20, 30, 5, 15 ve 25 ise çıktı şöyle olmalıdır:

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

Tüm parçaların nasıl birlikte çalıştığına dikkat edin - dizinleyici size dizi benzeri erişim sağlar, + operatörü listeleri doğal bir şekilde birleştirmenize olanak tanır, ToString() okunabilir çıktı sağlar ve genişletme yöntemi yardımcı işlevsellik ekler. İyi tasarlanmış sınıflar işte böyle hissettirir!

Kendin dene

using System;
using Collections;

class Program
{
    public static void Main(string[] args)
    {
        // Altı tam sayı oku
        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: 5 kapasiteli ilk CustomList'i oluştur
        // TODO: a1, a2, a3 değerlerini ilk listeye ekle

        // TODO: 3 kapasiteli ikinci CustomList'i oluştur
        // TODO: b1, b2, b3 değerlerini ikinci listeye ekle

        // TODO: ToString() kullanarak List 1'i yazdır
        // TODO: ToString() kullanarak List 2'yi yazdır
        // TODO: İndeksleyiciyi kullanarak List 1[0] değerini yazdır
        // TODO: + operatörünü kullanarak listeleri birleştir ve sonucu yazdır
        // TODO: Sum() genişletme metodunu kullanarak birleştirilmiş listenin toplamını yazdır
    }
}

Nesne Yönelimli Programlama bölümündeki tüm dersler