3-Ma`ruza: Obyektga yo`naltirilgan dasturlash tillari Reja: Obyektga Yo`naltirilgan yondashuv tarixi



Yüklə 41,12 Kb.
səhifə10/10
tarix17.04.2023
ölçüsü41,12 Kb.
#105960
1   2   3   4   5   6   7   8   9   10
3-maruza

Vorislik turlari
Vorislik uch asosiy hollarda qo`llanadi:
1. Ko`p martalab foydalanishda.Ajralib turish uchun.

    1. Turlarni almashtirish uchun.

Vorislikning ayrim turlaridan foydalanish boshqalaridan ko`ra afzalroq hisoblanadi. Vorislik yangi sinfga eski sinfning amalda qo`llanishidan ko`p martalab foydalanish imkonini beradi. Kodni qirqib tashlash yoki kiritish o`rniga, vorislik kodga avtomatik tarzda kirishni ta`minlaydi, ya`ni kodga kirishda u yangi sinfning bir qis- midek olib qaraladi. Ko`p martalab qo`llash uchun vorislikdan foy- dalanar ekansiz, siz meros qilib olingan realizatsiya (joriy qilinish) bilan bog`liq bo`lasiz. Vorislikning bu turini ehtiyotkorlik bilan qo`llash lozim. Yaxshisi bu o`rinda «Has-a» munosabatidan foydalanish kerak.
Farqlash uchun vorislik faqat avlod-sinf va ajdod-sinf o`rtasidagi farqlarni dasturlash imkonini beradi. Farqlarni dasturlash g`oyat qudratli vositadir. Kodlash hajmining kichikligi va kodning oson boshqarilishi loyiha ishlanmasini osonlashtiradi. Bu holda kod satrlarini kamroq yozishga to`g`ri keladiki, bu qo`shiladigan xatolar miqdorini ham kamaytiradi.
Almashtirish imkoniyati — OYD da muhim tushunchalardan bin. Merosxo`r sinfga uning ajdodi bo`lmish sinfga yuboriladigan xabarlarni yuborish mumkin bo`lgani uchun ularning har ikkalasiga bir xil munosabatda bo`lish mumkin. Aynan shuning uchun merosxo`r sinfni yaratishda xulq-atvorni chiqarib tashlash mumkin emas. Almashtirish imkoniyatini qo`llab, dasturga har qanday tarmoq turlarni qo`shish mumkin. Agar dasturda ajdod qo`llangan bo`lsa, bu holda u yangi obyektlardan qanday foydalanishni biladi.
Polimorfizm
Agar inkapsulatsiyalash va vorislikni OYD ning foydali vositalari sifatida olib qarash mumkin bo`lsa, polimorfizm — eng universal va radikal vositadir. Polimorfizm inkapsulatsiyalash va vorislik bilan chambarchas bog`liq, boz ustiga, polimorfizmsiz OYD samarali bo`lolmaydi. Polimorfizm — OYD paradigmasida markaziy tushunchadir. Polimorfizmni egallamay turib OYD dan samarali foydalanish mumkin emas.
Polimorfizm shunday holatki, bunda qandaydir bitta narsa ko`p shakllarga ega bo`ladi. Dasturlash tilida «ko`p shakllar» deyilganda, bitta nom avtomatik mexanizm tomonidan tanlab olingan turli kodlarning nomidan ish ko`rishi tushuniladi. Shunday qilib, poli­morfizm yordamida bitta nom turli xulq-atvorni bildirishi mumkin.
Vorislik polimorfizmning ayrim turlaridan foydalanish uchun zarur. Aynan o`rindoshlik imkoniyati mavjud bo`lgani uchun polimor- fizmdan foydalanish mumkin bo`ladi. Polimorfizm yordamida tizimga to`g`ri kelgan paytda qo`shimcha funksiyalarni qo`shish mumkin. Dasturni yozish paytida hatto taxmin qilinmagan funksionallik bilan yangi sinflarni qo`shish mumkin, buning ustiga bularning hammasini dastlabki dasturni o`zgartirmay turib ham amalga oshirish mumkin. Yangi talablarga osongina moslasha oladigan dasturiy vosita deganda mana shular tushuniladi.
Polimorfizmning uchta asosiy turi mavjud:

  • Qo`shilish polimorfizmi.

  • Parametrik polimorfizm.

  • Ortiqcha yuklanish.

Qo`shilish polimorfizmini ba`zida sof polimorfizm deb ham ataydilar. Qo`shilish polimorfizmi shuning bilan qiziqarliki, u tufayli tarmoq sinf nusxalari o`zini turlicha tutishi mumkin. Qo`shilish polimorfizmidan foydalanib, yangi tarmoq sinflarni kiritgan holda, tizimning xulq-atvorini o`zgartirish mumkin. Uning bosh afzalligi shundaki, dastlabki dasturni o`zgartirmay turib yangi xulq-atvorni yaratish mumkin.
Aynan polimorfizm tufayli joriy qilishdan takroran foydalanishni vorislik bilan almashtirish kerak emas. Buning o`rniga vorislikdan avvalambor o`zaro almashinish munosabatlari yordamida polimorf xulq-atvorga erishish uchun foydalanish lozim. Agar o`zaro alma­shinish munosabatlari to`g`ri belgilansa, buning ortidan albatta takroran qo`llash chiqib keladi. Qo`shilish polimorfizmidan foyda­lanib, bazaviy sinfdan, har qanday avloddan, shuningdek, bazaviy sinf qo`llaydigan metodlardan takroran foydalanish mumkin.
Parametrik polimorfizmdan foydalanib turdosh metodlar va turdosh (universal) turlar yaratish mumkin. Turdosh metodlar va turlar dalillarning ko`plab turlari bilan ishlay oladigan dasturni yozish imkonini beradi. Agar qo`shilish polimorfizmidan foydalanish obyektni idrok etishga ta`sir ko`rsatsa, parametrik polimorfizmdan foydalanish qo`llanayotgan metodlarga ta`sir ko`rsatadi. Parametrik polimorfizm yordamida parametr turini bajarilish vaqtigacha e`lon qilmay turib turdosh metodlar yaratish mumkin. Metodlarning parametrik parametrlari bo`lganidek, turlarning o`zi ham parametrik bo`lishi mumkin. Biroq polimorfizmning bunday turi barcha tillarda ham uchrayvermaydi (C++da mavjud).
Ortiqcha yuklanish yordamida bitta nom turlicha metodlarni bil- dirishi mumkin. Bunda metodlar faqat miqdorlari va parametr turlari bilan farqlanadi. Metod o`z dalillari (argumentlari) ga bog`liq bo`lmaganda, ortiqcha yuklanish foydalidir. Metod o`ziga xos parametrlar turlari bilan cheklanmaydi, balki har xil turdagi parametrlarga nisbatan ham qo`llanadi. Masalan, max metodini ko`rib chiqaylik. Maksimal — turdosh tushuncha bo`lib, u ikkita muayyan parametrlarni qabul qilib, ularning qaysi biri kattaroq ekanini ma`lum qiladi. Ta`rif butun sonlar yoki suzuvchi nuqtali sonlar qiyoslanishiga qarab o`zgarmaydi.
Polimorfizmdan samarali foydalanish sari qo`yilgan birinchi qadam bu inkapsulatsiyalash va vorislikdan samarali foydalanishdir. Inkap- sulatsiyalashsiz dastur osongina sinflarning joriy qilinishiga bog`liq bo`lib qolishi mumkin. Agar dastur sinflarning joriy qilinish aspektr- laridan biriga bog`liq bo`lib qolsa, tarmoq sinfda bu joriyni to`g`rilash mumkin bo`lmaydi.
Vorislik — qo`shilish polimorfizmining muhim tarkibiy qismi. Hammavaqt bazaviy sinfga imkon darajada yaqinlashtirilgan darajada dasturlashga uringan holda o`rinbosarlik munosabatlarini o`rnatishga harakat qilish kerak. Bunday usul dasturda ishlov berilayotgan obyektlar turlari miqdorini oshiradi.
Puxta o`ylab ishlab chiqilgan tabaqalanish o`rinbosarlik munosa­batlarini o`rnatishga yordam beradi. Umumiy qismlarni abstrakt sinf- larga olib chiqish kerak hamda obyektlarni shunday dasturlash kerakki, bunda obyektlarning ixtisoslashtirilgan nusxalari emas, balki ularning o`zlari dasturlashtirilsin. Bu keyinchalik har qanday voris sinfni dastur- da qo`llash imkonini beradi.
Agar til vositalari bilan interfeys va joriy qilinishni to`liq ajratish mumkin bo`lsa, u holda odatda mana shu vositalardan foydalanish kerak, vorislikdan emas. Interfeys va joriy qilinishni aniq ajratib, o`rinbosarlik imkoniyatlarini oshirish va shuning bilan polimorfizmdan foydalanishning yangi imkoniyatlarini ochib berish mumkin.
Biroq ko`p o`rinlarda tajribasiz loyihachilar polimorfizmni kuchaytirish maqsadida xulq-atvorni juda baland tabaqaviy darajaga olib chiqishga urinadilar. Bu holda har qanday avlod ham bu xulq- atvorni ushlab tura oladi. Shuni esdan chiqarmaslik kerakki, avlodlar o`z ajdodlarining funksiyalarini chiqarib tashlay olmaydilar. Dasturni yanada polimorf qilish maqsadida puxta rejalashtirilgan vorislik tabaqalarini buzish yaramaydi.
Hamma narsaning hisob-kitobi bor. Haqiqiy polimorfizmning kamchiligi shundaki, u unumdorlikni pasaytiradi. Polimorfizmdan foydalanganda dasturni bajarish paytida tekshiruvlar o`tkazish talab qilinadi. Bu tekshiruvlar turlari statik ravishda berilgan qiymatlarga ishlov berishga qaraganda ko`proq vaqt talab qiladi.
Yüklə 41,12 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə