Ö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, indeksleyiciler, CustomList geçersiz kılma ve genişletme metotları) bir araya getirerek kullanımı doğal ve sezgisel hissettiren bir koleksiyon oluşturacak bir ToString() sınıfı oluşturalım.
Kodunuzu üç dosyaya ayıracaksınız:
CustomList.cs:CustomListad alanında, dahili bir tamsayı dizisini saran ve sezgisel erişim biçimleri sağlayan birCollectionssınıfı oluşturun. Listeniz şunlara sahip olmalıdır:- Öğeleri depolamak için özel bir tamsayı dizisi ve kaç öğenin depolandığını takip eden (özel ayarlayıcılı) bir
Countözelliği - Bir kapasiteyi (tamsayı) kabul eden ve dahili diziyi bu boyuta başlatan bir oluşturucu
- Yer varsa bir öğeyi bir sonraki kullanılabilir konuma ekleyen
Add(int item)metodu - Öğelerin konuma göre alınmasına ve ayarlanmasına olanak tanıyan
this[int index]indeksleyicisi - İ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ının toplamı olmalıdır) - Öğeleri
ToString()biçiminde döndüren geçersiz kılınmış bir[item1, item2, item3]metodu - boş konumları değil, yalnızcaCountdeğerine kadar olan öğeleri dahil edin
- Öğeleri depolamak için özel bir tamsayı dizisi ve kaç öğenin depolandığını takip eden (özel ayarlayıcılı) bir
ListExtensions.cs:ListExtensionsad alanındaCollectionsadlı statik bir sınıf ve CustomList'iniz için bir genişletme metodu 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ıştığını gösterin - öğelere erişmek için indeksleyiciyi kullanın, listeleri+operatörüyle birleştirin,ToString()kullanarak yazdırın ve genişletme metodunuzu kullanarak toplamı hesaplayın.
Altı girdi alacaksınız:
- İlk listeye eklenecek üç tamsayı
- İkinci listeye eklenecek üç tamsayı
İlk listeyi 5, ikinci listeyi ise 3 kapasiteyle oluşturun. Üç girdi değerini ilgili listelere ekleyin.
Çıktıyı şu biçimde 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ı şu şekilde 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 - indeksleyici dizi benzeri erişim sağlar, + operatörü listeleri doğal biçimde birleştirmenizi sağlar, ToString() okunabilir çıktı sunar ve genişletme metodu yardımcı işlevsellik ekler. İyi tasarlanmış sınıfları kullanmak böyle bir his verir!
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ıKendi başına pratik yap: Online C# derleyicisi