Ringkasan: Custom list
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 40 dari 70.
Tantangan
MudahMari buat class CustomList yang menyatukan semua fitur tingkat lanjut dari bab ini: operator overloading, indexer, override ToString(), dan extension method, untuk membuat koleksi yang terasa alami dan mudah digunakan.
Kamu akan membagi kodemu ke dalam tiga file:
CustomList.cs: Buat classCustomListdalam namespaceCollectionsyang membungkus array integer internal dan menyediakan pola akses yang intuitif. List-mu harus memiliki:- Array integer privat untuk menyimpan item dan property
Count(dengan setter privat) yang melacak jumlah item yang tersimpan - Constructor yang menerima kapasitas (integer) dan menginisialisasi array internal dengan ukuran tersebut
- Method
Add(int item)yang menambahkan item ke posisi tersedia berikutnya (jika masih ada ruang) - Indexer
this[int index]yang memungkinkan kamu mengambil dan mengatur item berdasarkan posisinya - Operator
+yang di-overload untuk menggabungkan dua CustomLists menjadi satu list baru yang berisi semua item dari keduanya (kapasitas list baru harus sama dengan jumlah Count keduanya) - Method
ToString()yang di-override untuk mengembalikan item dalam format[item1, item2, item3]: sertakan hanya item hinggaCount, bukan slot kosong
- Array integer privat untuk menyimpan item dan property
ListExtensions.cs: Buat class statisListExtensionsdalam namespaceCollectionsdengan extension method untuk CustomList-mu:Sum(): mengembalikan jumlah semua item dalam list (hinggaCount)
Program.cs: Di file utama, buat dua CustomLists, tambahkan item ke masing-masing, lalu tunjukkan semua fitur bekerja bersama: gunakan indexer untuk mengakses item, gabungkan list dengan operator+, cetak menggunakanToString(), dan hitung jumlahnya menggunakan extension method-mu.
Kamu akan menerima enam input:
- Tiga integer untuk ditambahkan ke list pertama
- Tiga integer untuk ditambahkan ke list kedua
Buat list pertama dengan kapasitas 5 dan list kedua dengan kapasitas 3. Tambahkan tiga nilai input ke masing-masing list.
Cetak output dengan format berikut:
List 1: {ToString()}
List 2: {ToString()}
List 1[0]: {first item}
Combined: {ToString() of combined list}
Combined sum: {Sum()}Misalnya, jika inputnya adalah 10, 20, 30, 5, 15, dan 25, outputnya seharusnya:
List 1: [10, 20, 30]
List 2: [5, 15, 25]
List 1[0]: 10
Combined: [10, 20, 30, 5, 15, 25]
Combined sum: 105Perhatikan bagaimana semua bagian bekerja bersama: indexer memberimu akses seperti array, operator + memungkinkanmu menggabungkan list secara alami, ToString() menghasilkan output yang mudah dibaca, dan extension method menambahkan fungsi yang berguna. Seperti inilah class yang dirancang dengan baik!
Coba sendiri
using System;
using Collections;
class Program
{
public static void Main(string[] args)
{
// Baca enam bilangan bulat
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: Buat CustomList pertama dengan kapasitas 5
// TODO: Tambahkan a1, a2, a3 ke list pertama
// TODO: Buat CustomList kedua dengan kapasitas 3
// TODO: Tambahkan b1, b2, b3 ke list kedua
// TODO: Cetak List 1 menggunakan ToString()
// TODO: Cetak List 2 menggunakan ToString()
// TODO: Cetak List 1[0] menggunakan pengindeks
// TODO: Gabungkan list menggunakan operator + dan cetak hasilnya
// TODO: Cetak jumlah nilai dalam list gabungan menggunakan method ekstensi Sum()
}
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalNamespace & DirektifPengantar class & objectKata Kunci 'this'Method dan ParameterField vs PropertyKonstruktorInisialisasi objectRingkasan: Kalkulator Sederhana4Pewarisan
Sintaks Dasar Pewarisan (:)Kata Kunci 'base'Kata Kunci Virtual & OverrideClass SealedBase Class 'object'Rangkuman: Hierarki Karyawan7Fitur Lanjutan
Overloading OperatorIndexer (this[])Penimpaan ToString()Extension methodRingkasan: Custom list2Property & Anggota Statis
Property yang Diimplementasikan OtomatisProperty Hanya Baca dan Hanya TulisField dan method StatisClass StatisAnggota Berbentuk Ekspresi5Polimorfisme & Antarmuka
Polimorfisme saat kompilasi vs runtimeAntarmuka vs kelas abstrakBeberapa antarmukaAntarmuka eksplisitUpcasting & DowncastingRingkasan, Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi daripada PewarisanGenerics (class dan method)Delegate dan EventAtribut dan ReflectionIDisposable dan Pernyataan usingDasar-Dasar Dependency Injection11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola CompositeLatihan sendiri: Compiler C# online