С# da inkapsulyatsiyaning asosiy birligi bu sinf bo`lib, ob`ekt shu shaklda aniqlanadi. U ma`lumotlar va kod orqali tasvirlanadi, undagi ammallar ular orqali bajariladi. С# da tasvirlangan sinf oddiy ob`ekt bo`lib, u shu sinfda aniqlangan nusxalariga xizmat qiladi. Shunday ekan sinf juda muhim ob'ektni qurish usulining bir qator sxematik tavsiflarini beradi.
Kod va ma`lumotlardan tashkil topgan sinfda ular a`zolar deb nomlanadi. Ma`lumotlar o`zi aniqlangan sinfda maydonlar yoki ob`ekt nusxasi o`zgaruvchisi deb nomlanadi. Kod esa sinfda ma`lumotlar ustida amallar bajaruvchi bo`li u funksiya a`zosida joylashadi, ularning eng ko`p tasvirlanuvchisi metod hisoblanadi. C# da metod analog qism dastur sifatida xizmat qiladi. (Boshqa a`zolari fuksiya a`zolari xususiyat, hodisa va konstruktorni o`z ichiga oladi.) Shunday qilib, sinf metodlari kondni o`z ichiga oladi va o`zi aniqlangan sinfning maydonlariga ta`sir qila oladi.
Polimorfizm (Полиморфизм).
Polimorfizm yunon tilida "ko`p shakllar" degan ma`noni anglatadi, - bu xususiyat bitta interfeysga ruxsat berish orqali umumiy sinflarga ta`sir o`tkazishga ruxsat oladi. Polimorfizmning oddiy namunasi sifatida avtomashina boshqarish mexanizmining turiga qaramasdan, bir xil interfeys bir xil funksiyalarni bajaradigan mashina ruli xizmatini keltirish mumkin. Bu shuni anglatadiki, rul boshqaruvning turiga bog`liq bo`lmagan holda bir xil harakat qiladi: to`g`ri harakatda, tezlanish yoki uzatma almashtirilganda. Shunday ekan, rulni chapga burilganda mashina har doim chapga buriladi, unda qanday boshqaruv qo`llanilgan bo`lsa ham. Bir xil interfeysning asosiy afzalligi shundaki, rulnini qanday boshqarishni bilib olsangiz, har qanday turdagi avtomobilni boshqarishingiz mumkin.
Xuddi shu usul dasturlashda ham qo`llanilishi mumkin. Misol sifatida stekni, yani "oxilgi kelgan-birinchi xizmat qiladi" tamoyiliga asoslangan xotira sohasini qaraylik. Keling, dasturda uchta turli xil tipda stek aniqlash talab qilinsin: bittasi butun qiymatlar uchun, boshqasi suzuvchi nuqtali qiymat uchun, uchinchisi belgilar uchun. Ushbu misolda, bu to'plamlarni amalga oshiradigan algoritm turli xil ma'lumotlarni saqlab qolishiga qaramasdan o'zgarishsiz qoladi. Ob'ektga yo'naltirilmagan tilda, bu maqsad uchun turli nomlar bilan uchta turli xil stakli dasturlarini yaratish kerak edi. Biroq, polimorfizm tufayli C # da barcha uch turni amalga oshirish uchun faqat bitta umumiy to'plamini yaratish kifoya. Bitta stekdan qanday foydalanishni bilsangiz qolganlaridan ham foydalana olasiz.
Umuman olganda, polimorfizm tushunchasi ko'pincha quyidagicha ifodalanadi:"bir interfeys — ko'plab metodlar". Bu shuni anglatadiki, o'zaro bog'liq harakatlar guruhi uchun umumiy interfeysni ishlab chiqish mumkin. Polimorfizm dasturni soddalashtirishga yordam beradi, bu esa umumiy harakat sinfini tasvirlash uchun bir xil interfeysdan foydalanishga imkon beradi. Har bir alohida holatda muayyan harakatni (ya'ni metodni) tanlash — bu komplyatorning vazifasidir. Dasturchi buni o`zi bajarishi shart emas. Unga umumiy interfeysni bilish va undan to`g`ri foydalanish yetarli.
Do'stlaringiz bilan baham: |