Özet - Özel Liste
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 40 / 70.
Görev
KolayBu 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:Collectionsad alanında (namespace), dahili bir tam sayı dizisini sarmalayan ve sezgisel erişim modelleri sağlayan birCustomListsı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ış birToString()yöntemi - boş yuvaları değil, yalnızcaCountdeğerine kadar olan öğeleri dahil edin
- Öğeleri depolamak için özel (private) bir tam sayı dizisi ve kaç öğenin depolandığını takip eden bir
ListExtensions.cs:Collectionsad alanında, CustomList'iniz için bir genişletme yöntemi içeren statik birListExtensionssınıfı oluşturun:Sum()- listedeki tüm öğelerin toplamını döndürür (Countdeğ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: 105Tü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
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci Kayıtları