Mavzu: Kolleksiya va iteratorlar. Reja

Mavzu:
Kolleksiya va iteratorlar.
Reja:
1.
Kolleksiyalar haqida qisqacha ma'lumot.
2.
Umumlashmagan kolleksiyalar.
3.
Umumlashmagan kolleksiyalarning interfeyslari.
1. Kolleksiyalar
haqida qisqacha ma'lumot.
Kolleksiyalarning asosiy afzalligi shundaki, ular dasturdagi ob'ektlar
guruhlarini qayta ishlashni standartlashtiradilar. Barcha kolleksiyalar aniq
belgilangan interfeyslar kolleksiyai asosida yaratilgan. ArrayList, Hashtable, Stack
va Queue kabi interfeyslarning ba'zi ichki amalga oshirilishidan ularning
nusxalarida qanday o'zgarishsiz qo'llanilishi mumkin. Bunga
ehtiyoj juda kam
bo'lsa-da, o'z kolleksiyangizni amalga oshirish imkoniyati ham mavjud.
.NET Framework muhitida beshta kolleksiya turini qo'llab-quvvatlaydi:
umumlashmagan, maxsus, shaffof tashkillashtirilgan, umumlashgan va parallel.
umumlashmagan kolleksiyalar bir qator asosiy ma'lumotlar tuzilmalarini amalga
oshiradi, jumladan, dinamik massiv, stack, navbat, shuningdek, "kalit-qiymat"
juftlarini saqlash mumkin bo'lgan
lug'atlar
. umumlashmagan kolleksiyalarga
nisbatan quyidagilarni yodda tutish muhimdir: ular object tipidagi ma'lumotlar
bilan ishlaydi.
Shunday qilib, umumlashmagan kolleksiyalar har qanday ma'lumotni
saqlashga xizmat qilishi mumkin va bir kolleksiyada turli xil ma'lumotlarni
saqlashga ruxsat beriladi. Shubhasiz, bunday kolleksiyalar tiplashtirilmagan,
chunki ular ob'ekt kabi ma'lumotlarga havolalar saqlaydi. Umumlashmagan
kolleksiyalarning sinflari va interfeyslari System.Collections nomlar
fazosida
joylashgan.
Maxsus kolleksiyalar muayyan turdagi ma'lumotlar bilan ishlaydi yoki uni
maxsus tarzda amalga oshiradi. Misol uchun, belgili qatorlar uchun maxsus
kolleksiyalar, shuningdek, bir tomonlama ro'yxat uchun ishlatiladigan maxsus
kolleksiyalar mavjud.
Maxsus kolleksiyalardan foydalanish uchun
SystemCollectionsSpecialized nomlar fazosi e'lon qilinadi.
Collections API-ning amaliy interfeysida shaffof tashkillashtirilgan
kolleksiya aniqlangan - bu BitArray. Kolleksiya tipi BitArray ikkilik
operatsiyalarini qo'llab-quvvatlaydi, ya'ni alohida ikkilik oqimlar bo'yicha
operatsiyalarni bajaradi, masalan, VA istisno YOKI, shuning uchun u boshqa
kolleksiyalardan sezilarli darajada farq qiladi. BitArray kolleksiyalardan
foydalanish uchun System.Collections nomlar fazosi e'lon qilinadi.
Umumlashgan kolleksiyalar bir nechta standart ma'lumotlar
tuzilmalarini,
jumladan, bog'langan ro'yxatlar, stack, navbatlar va lug'atlarni umumlashtiradi.
Bunday kolleksiyalar ularning umumlashgan tabiati tufayli tiplashtirilgan
hisoblanadi. Bu shuni anglatadiki, umumlashgan kolleksiyada faqat ushbu
kolleksiya bilan mos keladigan ma'lumot tiplari elementlari saqlanishi mumkin.
Shu sababli, tiplarning tasodifiy mos kelmasligi chiqarib tashlanadi. Umumlashgan
kolleksiyalardan foydalanish uchun System.Collections.Generic nomlar
fazosi
e'lon qilinadi.
Parallel kolleksiyalar kolleksiyaga ko'p tarmoqli kirishni qo'llab-quvvatlaydi.
Bu umumlashgan kolleksiya hisoblanadi, undan foydalanish uchun
System.Collections.Concurrent nomlar fazosi e'lon qilinadi.
System.Collections.ObjectModel nomlar fazosida
joylashgan sinflar
foydalanuvchilarni o`zlari uchun kolleksiyalar yaratishlarini qo`llab-quvvatlaydi.
Barcha kollektsiyalar uchun asosiy ob`ktlar IEnumerator va IEnumerable
interfeyslari, shuningdek, IEnumerator
va IEnumerableumumlashgan
interfeyslarida qo'llab-quvvatlanadigan ro`yxatlar vositasi tushunchasi. Ro'yxatchi
kolleksiya elementlariga muqobil ravishda kirishning standart usulini ta'minlaydi.
Shuning uchun, u kolleksiyaning mazmunini ro`yxatda saqlanadi. Har bir
kolleksiya IEnumerable interfeysining umumlashgan yoki oshkor qilinmagan
shaklini amalga oshirishi kerak, shuning uchun har qanday kolleksiya sinfining
elementlari IEnumerator yoki IEnumerator interfeysida aniqlangan usullar
orqali mavjud bo'lishi kerak. Bu shuni anglatadiki, bir turdagi kolleksiyaga davriy
aylanish kodiga minimal o'zgarishlar kiritish orqali turdagi kolleksiyaga o'xshash
murojaat uchun ishlatilishi mumkin. Qizig'i shundaki, foreach tsiklidagi kolleksiya
tarkibiga muqobil ravishda murojaat qilish uchun ro'yxat ishlatiladi.
Iterator deb ataladigan boshqa vosita ro`yxat bilan bevosita bog'liq. Ushbu
vosita kolleksiyalar sinflarini yaratish jarayonini soddalashtiradi, masalan, foreach
tsiklida tashkil etilgan maxsus muqobil murojaat usuli. Iteratorlar ham ushbu
bobda muhokama qilinadi.