Algoritmni loyihalash va tahlil qilishga kirish
Meros, inkapsulyatsiya va polimorfizm
Download 110.63 Kb.
|
Algoritmni loyihalash va tahlil qilishga kirish
7. Meros, inkapsulyatsiya va polimorfizm
Barcha OOP tillari, shu jumladan C ++, kapsulalash, polimorfizm va meros deb ataladigan uchta asosiy tushunchaga asoslangan. Keling, ushbu tushunchalarni ko'rib chiqaylik. 1. Inkapsulyatsiya Inkapsulyatsiya - bu ma'lumotlar va ushbu ma'lumotlarni boshqaradigan kodni birlashtirgan va ikkalasini ham tashqi buzilish yoki noto'g'ri foydalanishdan himoya qiluvchi mexanizm. Ob'ektga yo'naltirilgan dasturlashda kod va ma'lumotlar birlashtirilishi mumkin; bu holatda "qora quti" deb ataladigan narsa yaratilayotgani aytiladi. Kodlar va ma'lumotlar shu tarzda birlashtirilganda ob'ekt yaratiladi. Boshqacha qilib aytganda, ob'ekt - bu kapsulani qo'llab-quvvatlovchi narsa. Ob'ekt ichida kodlar va ma'lumotlar shaxsiy bo'lishi mumkin. Shaxsiy kodlar yoki ma'lumotlar faqat ushbu ob'ektning boshqa qismlari uchun mavjud. Shunday qilib, shaxsiy kodlar va ma'lumotlar dasturning ob'ektdan tashqarida mavjud bo'lgan qismlarida mavjud emas. Agar kodlar va ma'lumotlar ommaviy bo'lsa, ular ob'ekt ichida ko'rsatilganligiga qaramay, ular dasturning boshqa qismlarida mavjud. Odatiy holat - bu ob'ektning ochiq qismi ob'ektning yopiq elementlariga boshqariladigan interfeysni ta'minlash uchun ishlatiladi. Aslida, ob'ekt foydalanuvchi tomonidan belgilangan turdagi o'zgaruvchidir. Kodlar va ma'lumotlarni birlashtirgan ob'ektni o'zgarmaydigan deb hisoblash mumkinligi g'alati tuyulishi mumkin. Biroq, aynan shu narsa ob'ektga yo'naltirilgan dasturlash uchun amal qiladi. Ushbu turdagi har bir ma'lumotlar tarkibiy o'zgaruvchidir. 2. Polimorfizm Polimorfizm (yunoncha polimorfosdan) - ikki yoki undan ortiq o'xshash, ammo texnik jihatdan har xil masalalarni echishda bir xil nomdan foydalanishga imkon beruvchi xususiyat. Ob'ektga yo'naltirilgan dasturlashda qo'llaniladigan polimorfizmning maqsadi bitta nomdan foydalanib, sinf uchun umumiy harakatlarni aniqlashdir. Har bir aniq harakatning bajarilishi ma'lumotlar turiga qarab belgilanadi. Masalan, polimorfizmni qo'llab-quvvatlamaydigan C-da raqamning mutlaq qiymatini topish uch xil funktsiyani talab qiladi: abs (), labs () va fabs (). Ushbu funktsiyalar mos ravishda butun sonlar, uzun tamsayılar va suzuvchi nuqta raqamlarining mutlaq qiymatini hisoblaydi va qaytaradi. C ++ da ushbu funktsiyalarning har birini abs () deb atash mumkin. Funktsiyani chaqirishda ishlatiladigan ma'lumotlar turi funktsiyalarning qaysi aniq versiyasi aslida bajarilishini aniqlaydi. C ++ da bitta funktsiya nomi turli xil harakatlar uchun ishlatilishi mumkin. Bunga funktsiyalarni haddan tashqari yuklash deyiladi. Umuman olganda, polimorfizm tushunchasi - "bitta interfeys, ko'plab usullar" g'oyasi. Bu shuni anglatadiki, siz tegishli harakatlar guruhi uchun umumiy interfeys yaratishingiz mumkin. Polimorfizmning afzalligi shundaki, u dasturlarning murakkabligini kamaytirishga yordam beradi, chunki bir xil interfeysdan harakatlarning yagona sinfini aniqlash uchun foydalanishga imkon beradi. Muayyan harakatni tanlash, vaziyatga qarab, kompilyatorga tegishli. Dasturchi sifatida ushbu tanlovni o'zingiz qilishingiz shart emas. Siz faqat eslashingiz va umumiy interfeysdan foydalanishingiz kerak. Oldingi xatboshidagi misol, bitta qiymat o'rniga mutlaq qiymat funktsiyasi uchun uchta nomning qanday bo'lishi umumiy vazifani kerak bo'lgandan ko'ra murakkablashtirishini ko'rsatadi. Polimorfizm operatorlarga ham qo'llanilishi mumkin. Deyarli barcha dasturlash tillarida polimorfizm cheklangan, masalan, arifmetik operatorlarda. Masalan, C da + belgisi butun sonlarni, uzun butun sonlarni, belgilar o'zgaruvchilarini va suzuvchi nuqta raqamlarini qo'shishda ishlatiladi. Bunday holda, kompilyator avtomatik ravishda arifmetikaning qaysi turiga ehtiyoj borligini aniqlaydi. C ++ da siz ushbu kontseptsiyani o'zingiz belgilagan boshqa ma'lumotlar turlariga qo'llashingiz mumkin. Ushbu turdagi polimorfizm operatorning haddan tashqari yuklanishi deb ataladi. Polimorfizmni tushunishning kaliti shundaki, u har xil darajadagi murakkablikdagi moslamalarni ularga o'xshash harakatlarni amalga oshirishi uchun umumiy standart interfeysni yaratish orqali boshqarish imkonini beradi. 3. Meros Meros - bu bir ob'ekt boshqasining xususiyatlarini egallashi mumkin bo'lgan jarayon. Aniqrog'i, ob'ekt boshqa ob'ektning asosiy xususiyatlarini meros qilib olishi va o'ziga xos xususiyatlarni qo'shishi mumkin. Merosxo'rlik muhim, chunki u ierarxik tasnif tushunchasini qo'llab-quvvatlaydi. Sinf iyerarxiyasidan foydalanish katta ma'lumot oqimlarini boshqarishga imkon beradi. Masalan, ko'p qavatli uyni tavsiflash haqida o'ylab ko'ring. Uy - bu bino deb ataladigan umumiy sinfning bir qismi. Boshqa tomondan, inshoot odam qo'llarini yaratish deb atash mumkin bo'lgan ob'ektlarning yanada umumiy sinfining bir qismi bo'lgan umumiy sinfning bir qismidir. Har holda, olingan sinf ota-ona bilan bog'liq bo'lgan barcha fazilatlarni egallaydi va ularga o'ziga xos xususiyatlarni qo'shadi. Sinf iyerarxiyasidan foydalanmasdan har bir ob'ekt uchun uni har tomonlama aniqlaydigan barcha xususiyatlarni ko'rsatish kerak bo'ladi. Biroq, merosdan foydalanishda siz ob'ektni o'ziga xos xususiyatlariga ega bo'lgan umumiy sinfni (yoki sinflarni) belgilash orqali ob'ektni tavsiflashingiz mumkin. OOPda meros juda muhim rol o'ynaydi. Download 110.63 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling