‫Dan video ini, kita akan melihat beberapa antarmuka yang sangat penting yang harus Anda pahami setelah
‫Anda mulai menjadi pengembang yang lebih maju dan tajam.
‫Dan itu adalah antarmuka enumerable AI serta antarmuka enumerator AI.
‫Oke, jadi Anda harus memahami antarmuka sebelum menonton video ini, karena jika tidak, beberapa konsep mungkin
‫tidak akan masuk akal bagi Anda.
‫Jadi saya sangat merekomendasikan untuk melihat video antarmuka yang kami tawarkan juga.
‫Oke, jadi antarmuka enumerable AI adalah antarmuka terbaik untuk banyak sinkronisasi koleksi dan tugasnya adalah
‫menyediakan cara untuk beralih melalui koleksi.
‫Jadi inilah mengapa kita dapat menggunakan setiap pelumas untuk menelusuri daftar atau kamus, karena mereka mewarisi dari antarmuka
‫yang tak terhitung dari antarmuka yang tak terhitung banyaknya dan bahasa Inggris yang sederhana.
‫Ketika kelas koleksi mengimplementasikan antarmuka perdana, itu menjadi akuntabel dan kita dapat menghitung setiap elemen
‫di dalamnya satu per satu.
‫Jadi ada dua versi berbeda dari antarmuka enumerable AI.
‫Salah satunya adalah yang berfungsi untuk koleksi generik di mana Anda memiliki tanda kurung buka yang dapat dihitung dengan AI ini, tanda kurung tutup,
‫dan kemudian antarmuka yang dapat dihitung dengan AI untuk koleksi yang tidak dapat dihitung secara umum.
‫Oke, jadi Anda harus memahami apa itu koleksi generik dan non generik juga.
‫Mereka memiliki kelebihan dan kekurangan tertentu, tetapi saya juga memiliki video untuk itu.
‫Saya harap Anda menontonnya sebelum menonton video ini karena jika tidak, ini akan sedikit rumit.
‫OK, jadi dua yang kita miliki di sini, mari kita lihat itu.
‫Karena koleksi generik diperkenalkan setelah koleksi non generik, disarankan untuk menggunakan
‫koleksi generik.
‫Jadi mereka pada dasarnya adalah versi yang ditingkatkan, bisa dikatakan.
‫Jadi jika Anda membuat proyek baru, disarankan untuk menggunakan versi generik karena dan saya
‫enumerable untuk koleksi non generik, perlu menerapkan atau melakukan tinju dan tinju, yang pada
‫dasarnya adalah konversi jenis objek.
‫Dan nanti kami akan menjelaskan cara menggunakan antarmuka AI Enumerable T atau antarmuka koleksi generik.
‫Oke, kita tidak akan membahas antarmuka koleksi non-generik karena tidak direkomendasikan karena
‫melakukan boxing dan unboxing, yang hanya kurang efisien.
‫Jadi sekarang mari kita lihat perbedaan antara enumerable AI dan enumerator AI.
‫Anda mungkin pernah mendengarnya sebelumnya.
‫Jadi antarmuka enumerable AI berisi satu metode yang harus Anda terapkan saat mengimplementasikan antarmuka
‫ini.
‫Dan kita akan melakukannya nanti dalam contoh khusus kita di sini.
‫Jadi itu sedikit lebih masuk akal.
‫Jadi metode Get enumerator adalah salah satu yang perlu Anda implementasikan dan mengembalikan objek enumerator AI.
‫Oke, jadi metode ini yang perlu Anda terapkan ketika Anda ingin menggunakan enumerable AI untuk kelas Anda
‫atau apa yang ingin Anda terapkan untuk kelas Anda, Anda harus memiliki metode get enumerator ini, yang
‫kemudian mengembalikan enumerator AI.
‫Jadi pencacah AI.
‫Memberikan kemampuan untuk mengulangi melalui koleksi dengan mengekspos properti saat ini yang menunjuk ke objek yang
‫saat ini kita berada di dalam koleksi.
‫Oke, ini jauh lebih rumit daripada setelah kita benar-benar menjalankan ini dalam contoh khusus kita.
‫Oke, jadi kita akan membuat sebuah contoh, memahami sepenuhnya apa artinya semua ini.
‫Jadi ini hanya untuk mempersiapkan Anda apa yang dapat Anda harapkan.
‫Oke, jadi mari kita mulai.
‫Akhirnya menjauh dari semua teori ini.
‫Mari kita benar-benar melihat ke dalam praktek.
‫Jadi mari kita buat kelas kecil bernama Dog dan saya akan meletakkannya di file yang sama agar semuanya tetap
‫sederhana.
‫Jadi kami memiliki kelas yang disebut Anjing dengan nama dan kami memiliki boolean yang disebut bukan IDOC.
‫Jadi pada dasarnya kami akan memeriksa apakah anjing itu nakal atau tidak.
‫Dan berdasarkan itu, kami akan memberinya hadiah.
‫Oke, jadi jika dia bukan anjing yang nakal, Anda akan mendapatkan lebih sedikit suguhan daripada jika dia anak yang baik atau anjing yang baik.
‫OK, jadi konstruktor di sini pada dasarnya hanya menetapkan kedua nilai tersebut.
‫Jadi saat kita membuat objek anjing, kita akan memberinya nama dan boolean, apakah anjing atau bukan, Anda
‫bukan.
‫Dan kemudian kami memiliki metode pemberian hadiah ini dan ini pada dasarnya hanya akan mencetak kata guk anjing itu.
‫Jadi untuk setiap orang yang memperlakukan anjing yang diberikan, dia akan berkata, OK, jadi pada dasarnya jika dia anjing yang baik, Anda akan
‫mendapatkan hadiah dan Anda akan mendapatkan dua kali.
‫Dan jika dia anjing yang buruk atau anjing yang nakal, maka dia hanya akan bergerak sekali karena dia akan mendapatkan lebih sedikit suguhan.
‫OK, jadi sekarang kita memiliki anjing kelas ini dan sekarang kita dapat melanjutkan dan membuat objek anjing, jadi mari kita buat kelas lain
‫ini.
‫Mari kita asumsikan kita memiliki kelas lain yang akan menggunakan anjing di dalam daftar.
‫Oke, jadi kita punya kelas penampungan anjing ini.
‫Jadi kelas penampungan anjing ini akan memiliki daftar anjing.
‫Jadi oleh karena itu, kita perlu memastikan bahwa kita memiliki ini menggunakan koleksi sistem generik karena
‫daftar adalah koleksi generik.
‫OK, jadi di sini di bagian atas Anda akan melihat bahwa sekarang Anda memiliki ini menggunakan koleksi sistem generik.
‫OK, jadi sekarang kita memiliki tempat penampungan anjing ini dan kita memiliki daftar anjing ini di pembuat tempat
‫penampungan anjing ini, satu-satunya hal yang akan kita lakukan adalah menginisialisasi daftar anjing ini dengan sekelompok anjing.
‫Jadi kami memiliki anjing Casper atau anjing yang disebut Casper.
‫Dia bukan anjing nakal, tapi Siff adalah anjing nakal atau nyata tidak nakal dan Pixel juga tidak nakal.
‫Jadi jangan tanya saya bagaimana kami mendapatkan nama-nama ini, tetapi pada dasarnya seperti itulah kami akan memanggil anjing-anjing
‫itu.
‫Anda tentu saja dapat membuat seluruh aplikasi ini jauh lebih kompleks.
‫Tapi ide kami sebenarnya hanya menggunakan daftar anjing ini untuk beralih melalui tempat penampungan anjing, untuk pergi melalui tempat penampungan
‫anjing, pada dasarnya, dan berdasarkan apakah seekor anjing itu baik atau tidak atau anjing nakal atau tidak, kami akan
‫beri dia satu atau dua camilan.
‫Jadi sekarang mari kita beralih ke metode utama kita, karena di situlah titik awal aplikasi kita.
‫Dan pada titik ini, mari kita buat tempat perlindungan anjing di sini.
‫Baiklah.
‫Jadi kami memiliki tempat penampungan anjing yang disebut Shelter, dan ini akan menjadi tempat penampungan anjing baru.
‫Jadi kita langsung menginisialisasinya juga agar kita bisa menggunakan objek shelter ini karena objek
‫shelter akan berisi daftar anjing.
‫Benar.
‫Jadi sekarang yang ingin kami lakukan adalah mengulangi daftar dan memeriksa apakah kami ingin memberi mereka hadiah atau
‫tidak.
‫Jadi mari kita buat untuk setiap tahun seperti jadi ketuk dua kali untuk mempersiapkannya bagi kita.
‫Jadi apa yang akan kita lalui?
‫Nah, kita akan melalui seekor anjing.
‫Dan kita akan menyebutnya anjing, jadi setiap item di dalam daftar akan menjadi anjing dan kemudian
‫koleksi yang ingin kita lalui, sebenarnya, akan menjadi tempat perlindungan.
‫Oke, jadi sekarang kita memiliki sedikit masalah, setelah kita mengarahkan kursor ke atasnya, kita mengatakan bahwa kita melihat nama koleksi atau larik
‫Anda untuk beralih melalui adalah tempat penampungan.
‫Namun untuk setiap pernyataan tidak dapat beroperasi pada variabel tipe dog shelter
‫karena dog shelter tidak mengandung public instance atau extension definition untuk get enumerator.
‫OK, jadi kita punya enumerator get ini.
‫Jadi apa artinya itu?
‫Nah ini berarti kita perlu mengimplementasikan antarmuka I enumerable di sini untuk tempat penampungan anjing kita karena tempat penampungan anjing ini memiliki
‫daftar yang ingin kita ulangi.
‫Benar.
‫Karena jika Anda melihatnya, shelter, well, shelter anjing kami, itulah shelter yang ingin kami lewati.
‫Dan untuk membuatnya dapat diubah, kita perlu mengimplementasikan enumerable di sini.
‫Dan jenis objek apa yang ingin kita enumerasi?
‫Nah, dalam kasus kami, itu akan menjadi anjing.
‫Jadi kami ingin dapat melewati anjing-anjing di dalam tempat penampungan anjing karena, kami memiliki daftar
‫anjing ini dan ini diinisialisasi di sini di konstruktor tempat penampungan anjing.
‫Dan kami ingin memastikan bahwa kami dapat melewati semuanya dan melakukan sesuatu dengan anjing, seperti
‫membelai mereka atau dalam kasus kami, memberi mereka hadiah.
‫Jadi setelah Anda menerapkan ini dan Anda naik ke sini, kesalahannya hilang.
‫Jadi tiba-tiba tidak apa-apa karena, yah, tempat penampungan kami yang merupakan tempat penampungan anjing, sekarang mengikuti
‫instruksi yang baru saja diberikan kepada kami bahwa perlu menerapkan tahun enumerable.
‫Jadi ini adalah enumerable generik karena kami memiliki anjing ini di sini, kan, karena
‫bukan yang ini, ini yang jenis yang kami berikan padanya.
‫Tapi sekarang, setelah kami memiliki robot kami, kami melihat kami mendapatkan kesalahan lain.
‫Dikatakan tempat penampungan anjing tidak mengimplementasikan anggota antarmuka saya enumerable dog get enumerator dan ennumerable get enumerator sehingga
‫kami dapat menempatkannya secara manual di sana.
‫Tapi keindahan tentang menggunakan I. D. adalah bahwa ID dapat melakukan banyak
‫pekerjaan untuk kami sehingga Anda dapat mengklik tampilkan perbaikan potensial dan kemudian klik terapkan semua anggota secara eksplisit dan kemudian akan menambahkan
‫ruang nama koleksi untuk kami dan itu akan menangani penambahan dua metode tersebut untuk kami atau dua anggota itu.
‫Jadi setelah kami mengklik ini, Anda melihat bahwa kesalahan ini akan hilang.
‫Dan jika kita menggulir lebih jauh ke bawah, Anda akan menemukan bahwa sekarang kita mengembalikan sebuah I enumerator
‫anjing waktu dan sebuah koleksi I enumerator non generik.
‫Jadi sekarang kami belum menerapkannya.
‫Itu sebabnya kami meminta Anda tidak menerapkan pengecualian di sini.
‫Jadi kita perlu mengubahnya di sini.
‫Kita sekarang dapat mengimplementasikan apa yang seharusnya terjadi dengan metode arget enumerator setelah dipanggil untuk memperbaikinya,
‫apa yang akan kita katakan di sini adalah kembali.
‫Anjing, anjing kami tidak mendapatkan enumerator begitu saja.
‫Dan itu akan menjadi implementasi karena tempat penampungan anjing kami sekarang mengimplementasikan antarmuka enumerable dan daftar
‫kami di sini sebenarnya, hei, jika Anda mengarahkan kursor ke atasnya, daftar adalah daftar umum.
‫Oke, dan sekarang kita bisa mengambil anjing kecil ini dan kita bisa mendapatkan enumerator untuk setiap iterasi yang akan kita
‫lalui untuk masing-masing dua.
‫Jadi pada dasarnya, itu akan kembali ke masing-masing anjing.
‫Dan sekarang yang dapat kita lakukan adalah kita benar-benar dapat menggunakan anjing untuk setiap loopier.
‫Jadi itu pada dasarnya berarti bahwa kita sekarang dapat melanjutkan dan memeriksa apakah anjing itu bukan Nodi, jadi bukan anjing,
‫yaitu Mordy.
‫Jika itu masalahnya, itu pada dasarnya berarti jika anjing itu tidak nakal, kita akan memanggil metode
‫give treat dan kita akan memberinya dua treat.
‫Dan sebaliknya, jika dia nakal karena kita tidak bisa tidak memberi hadiah, kita terlalu suka berbicara, kita
‫hanya akan memberi mereka satu hadiah, oke, seperti itu.
‫Dan pada titik ini, kami tidak dapat menjalankan aplikasi kami.
‫Dan kita lihat nanti, kata Casper, Wolf, dua kali karena dia anjing yang baik, sniff adalah anjing yang
‫nakal, jadi dia hanya mendapat satu hadiah dan dia berkata, Wolf, sekali Oreo melakukannya dua kali dan Pixel bilang dia juga pindah dua kali.
‫Baiklah.
‫Dan itulah pada dasarnya bagaimana Anda dapat membuat kelas Anda mengikuti instruksi atau mengimplementasikan dan I enumerable sehingga
‫Anda dapat mengulang daftar menggunakan untuk setiap loop, misalnya, seperti yang kita miliki di sini.
‫OKE.
‫Nah, Anda mungkin bertanya-tanya, mengapa kita tidak menerapkan untuk mendapatkan enumerator dengan eye enumerable,
‫yang non generik?
‫Yah, itu karena kami tidak menggunakan contoh yang tidak umum.
‫Dan tempat perlindungan anjing kami juga tidak lebih umum, tetapi Anda hanya perlu menerapkannya saat menggunakan antarmuka enumerable
‫mata, karena jika tidak, jika Anda menyingkirkannya, kami akan mendapatkan peringatan di sini lagi.
‫Anda lihat di sini sebenarnya adalah panah, jadi kami perlu memastikan bahwa kami juga memiliki metode ini di sana.
‫Baiklah, itu saja untuk video ini dan video berikutnya, kita akan melihat contoh lain
‫di mana kita akan memanfaatkan mata, bahkan lebih banyak lagi.
‫Oke, jadi ini hanya sedikit perkenalan.
‫Saya tahu topik ini agak rumit dan rumit, tetapi kita akan memanfaatkannya sedikit lebih banyak.
‫Dan sekarang, omong-omong, hanya sekilas, hanya ringkasan di sini.
‫Kapan disarankan untuk menggunakan antarmuka enumerable mata?
‫Nah, Anda harus menggunakannya saat koleksi Anda mewakili tabel database yang sangat besar.
‫Jadi Anda tidak ingin menyalin semuanya ke dalam memori dan menyebabkan masalah kinerja di aplikasi Anda karena databasenya
‫bisa sangat besar, bukan?
‫Itu bisa memiliki jutaan entri.
‫Dan Anda tidak ingin harus memuat semuanya untuk mengulanginya, tetapi Anda hanya ingin
‫memuat sebanyak yang Anda perlukan untuk proses saat ini, apa pun yang ingin Anda jalankan.
‫Dan kapan Anda tidak boleh menggunakan antarmuka enumerable mata?
‫Nah, ketika Anda membutuhkan hasilnya segera dan Anda mungkin bermutasi, mengakui objek nanti, dalam hal
‫ini, lebih baik menggunakan array atau daftar.
‫Jadi ketika Anda ingin dapat mengubah atau menambahkan objek di kemudian hari dan Anda tidak
‫membutuhkan hasilnya secara langsung, gunakan array atau daftar atau gunakan dan saya enumerable karena itu akan lebih efisien.
‫Baiklah, sekian untuk video kali ini.
‫Sampai jumpa di yang berikutnya.