Sayt bo'limlari
Muharrir tanlovi:
- JAVA ob'ektga yo'naltirilgan dasturlash tushunchalari
- Axborot urushi nima
- Domen nomi mavjudligini qanday aniqlash mumkin
- Ob'ektlarni 1 soniyada o'chirish 8
- 1s zup 3.0 birja hisobi. Ma'lumotlar almashinuvi jadvalini o'rnatish
- Hisob-faktura misoli uchun 1s 83 shtrix kodi
- Hujjatlarning jadval qismidan ma'lumotlarni qanday olish mumkin?
- 1s 8-bandlar uchun qo'shimcha tafsilotlar va qo'shimcha ma'lumotlarni o'rnatish
- Partiyali pochta jo'natmalarini qabul qilish Partiyani qabul qilish rpo
- Sharq nozik masala: Yaponiyada kriptovalyutalar Yaponiyada kriptovalyutalarni tartibga solish
Reklama
JAVA ob'ektga yo'naltirilgan dasturlash tushunchalari. Polimorfizm - bu nima? Genetik polimorfizm Polimorfizm va uning dasturlarda qo'llanilishi |
Genetik polimorfizm - bu genlarning uzoq muddatli xilma-xilligi mavjud bo'lgan holat, ammo populyatsiyada eng kam uchraydigan genning chastotasi bir foizdan ortiq. Uning saqlanishi genlarning doimiy mutatsiyasiga, shuningdek ularning doimiy rekombinatsiyasiga bog'liq. Olimlar tomonidan olib borilgan tadqiqotlarga ko'ra, genetik polimorfizm keng tarqalgan, chunki bir necha million gen birikmalari bo'lishi mumkin. Katta zaxiraPopulyatsiyaning yangi muhitga yaxshiroq moslashishi polimorfizmning katta ta'minotiga bog'liq va bu holda evolyutsiya ancha tez sodir bo'ladi. An'anaviy genetik usullardan foydalangan holda polimorf allellarning butun sonini hisoblash amaliy emas. Buning sababi, genotipda ma'lum bir genning mavjudligi gen tomonidan aniqlangan turli xil fenotipik xususiyatlarga ega bo'lgan shaxslarni kesib o'tish orqali erishiladi. Agar ma'lum bir populyatsiyaning qaysi qismi turli xil fenotiplarga ega bo'lgan shaxslardan iboratligini bilsangiz, u holda ma'lum bir belgining shakllanishi bog'liq bo'lgan allellar sonini aniqlash mumkin bo'ladi. Hammasi qanday boshlandi?Genetika o'tgan asrning 60-yillarida tez rivojlana boshladi, aynan o'sha paytda gellardagi fermentlar ishlatila boshlandi, bu genetik polimorfizmni aniqlashga imkon berdi. Bu qanday usul? Uning yordami bilan oqsillar elektr maydonida harakatlanadi, bu ko'chirilayotgan oqsilning o'lchamiga, uning konfiguratsiyasiga, shuningdek, jelning turli qismlarida umumiy zaryadga bog'liq. Shundan so'ng, paydo bo'ladigan dog'larning joylashuvi va soniga qarab, aniqlangan modda aniqlanadi. Populyatsiyadagi protein polimorfizmini baholash uchun taxminan 20 yoki undan ko'p joyni tekshirishga arziydi. Keyin matematik usul yordamida gomo- va geterozigotalarning soni va nisbati aniqlanadi. Tadqiqotlarga ko'ra, ba'zi genlar monomorf bo'lishi mumkin, boshqalari esa g'ayrioddiy polimorf bo'lishi mumkin. Polimorfizm turlariPolimorfizm tushunchasi juda keng bo'lib, u o'tish va muvozanatli variantni o'z ichiga oladi. Bu genning selektiv qiymatiga va populyatsiyaga bosim o'tkazadigan tabiiy tanlanishga bog'liq. Bundan tashqari, u genetik va xromosoma bo'lishi mumkin. Gen va xromosoma polimorfizmiGen polimorfizmi organizmda bir nechta allellar bilan ifodalanadi, buning yorqin misoli qondir. Xromosomalar xromosomalardagi buzilishlar tufayli yuzaga keladigan farqlarni ifodalaydi. Biroq, geteroxromatik hududlarda farqlar mavjud. Agar buzilish yoki o'limga olib keladigan patologiya bo'lmasa, bunday mutatsiyalar neytral hisoblanadi. O'tish davri polimorfizmiO'tish davri polimorfizmi populyatsiyada bir vaqtlar keng tarqalgan allel boshqasi bilan almashtirilganda yuzaga keladi, bu esa uning tashuvchisiga ko'proq moslashishni ta'minlaydi (shuningdek, ko'p allelizm deb ataladi). Berilgan xilma-xillik bilan genotiplar foizida yo'nalishli siljish mavjud, buning natijasida evolyutsiya sodir bo'ladi va uning dinamikasi amalga oshiriladi. Sanoat mexanizmi hodisasi o'tish davri polimorfizmini tavsiflovchi yaxshi misol bo'lishi mumkin. Bu nima ekanligini oddiy kapalak ko'rsatadi, u sanoat rivojlanishi bilan qanotlarining oq rangini to'q rangga o'zgartirdi. Bu hodisa Angliyada kuzatila boshlandi, u erda kapalaklarning 80 dan ortiq turlari och krem gullaridan quyuq rangga aylandi, bu birinchi marta sanoatning jadal rivojlanishi tufayli 1848 yildan keyin Manchesterda sezildi. 1895 yilda allaqachon kuyalarning 95% dan ortig'i qanotlarining quyuq rangiga ega bo'lgan. Bunday o'zgarishlar daraxt tanasining tutunli bo'lishi va ochiq rangli kapalaklarning qo'ziqorin va robinlarning oson o'ljasiga aylanishi bilan bog'liq. O'zgarishlar mutant melanistik allellar tufayli sodir bo'ldi. Balanslangan polimorfizm"Muvozanatli polimorfizm" ta'rifi barqaror ekologik sharoitda bo'lgan populyatsiyada turli xil genotip shakllarining har qanday raqamli nisbatlarida o'zgarish yo'qligini tavsiflaydi. Bu shuni anglatadiki, nasldan naslga nisbat bir xil bo'lib qoladi, lekin doimiy bo'lgan ma'lum bir qiymat doirasida biroz o'zgarishi mumkin. O'tish davri, muvozanatli polimorfizm bilan solishtirganda - bu nima? Bu birinchi navbatda statik evolyutsiya jarayonidir. I. I. Shmalgauzen 1940 yilda unga muvozanat geteromorfizmi nomini ham bergan. Balanslangan polimorfizmga misolMuvozanatli polimorfizmning yaqqol misoli ko'plab monogam hayvonlarda ikki jinsning mavjudligidir. Bu ularning teng selektiv afzalliklarga ega ekanligi bilan bog'liq. Ularning bir populyatsiyadagi nisbati har doim teng. Agar populyatsiyada ko'pxotinlilik mavjud bo'lsa, ikkala jins vakillarining selektiv nisbati buzilishi mumkin, bu holda bir jins vakillari butunlay yo'q qilinishi yoki qarama-qarshi jins vakillariga qaraganda ko'proq darajada ko'payishdan chiqarib yuborilishi mumkin. Yana bir misol, ABO tizimiga ko'ra qon guruhi bo'lishi mumkin. Bunday holda, turli xil populyatsiyalarda turli xil genotiplarning chastotasi har xil bo'lishi mumkin, lekin ayni paytda u avloddan-avlodga o'zining doimiyligini o'zgartirmaydi. Oddiy qilib aytganda, hech bir genotip boshqasidan selektiv ustunlikka ega emas. Statistik ma'lumotlarga ko'ra, birinchi qon guruhi bo'lgan erkaklar boshqa qon guruhlari bilan kuchli jinsiy aloqa vakillariga qaraganda uzoq umr ko'rishadi. Shu bilan birga, birinchi guruh ishtirokida o'n ikki barmoqli ichak yarasi rivojlanish xavfi yuqori, ammo u teshilishi mumkin va bu yordam kechiktirilsa, o'limga olib keladi. Genetik muvozanatUshbu mo'rt holat yuzaga kelishi natijasida populyatsiyada buzilishi mumkin va ular ma'lum bir chastotada va har bir avlodda sodir bo'lishi kerak. Tadqiqotlar shuni ko'rsatdiki, gemostatik tizim genlarining polimorfizmlari, ularning dekodlanishi evolyutsiya jarayoni bu o'zgarishlarga yordam beradimi yoki aksincha, ularga qarshi turadimi, juda muhimdir. Agar siz ma'lum bir populyatsiyadagi mutant jarayonning borishini kuzatsangiz, uning moslashish qiymatini ham baholashingiz mumkin. Tanlash jarayonida mutatsiya chiqarib tashlanmasa va uning tarqalishiga hech qanday to'siq bo'lmasa, u birga teng bo'lishi mumkin. Aksariyat holatlar shuni ko'rsatadiki, bunday genlarning qiymati birdan kichikdir va bunday mutantlar ko'payish qobiliyatiga ega bo'lmagan taqdirda, hamma narsa 0 ga tushadi. Bunday turdagi mutatsiyalar tabiiy tanlanish jarayonida chetga suriladi, ammo bu shunday qiladi. selektsiya yo'li bilan amalga oshiriladigan eliminatsiyani qoplaydigan bir xil gendagi takroriy o'zgarishlarni istisno qilmaydi. Keyin muvozanatga erishiladi, mutatsiyaga uchragan genlar paydo bo'lishi yoki aksincha, yo'qolishi mumkin. Bu muvozanatli jarayonga olib keladi. Nima bo'layotganini aniq tavsiflovchi misol o'roqsimon hujayrali anemiyadir. Bunday holda, gomozigotli holatdagi dominant mutatsiyaga uchragan gen organizmning erta o'limiga yordam beradi. Geterozigotali organizmlar omon qoladi, lekin bezgak kasalligiga ko'proq moyil bo'ladi. Ushbu tropik kasallikning tarqalish joylarida o'roqsimon hujayrali anemiya genining muvozanatli polimorfizmini kuzatish mumkin. Bunday populyatsiyada homozigotlar (bir xil genlarga ega bo'lgan shaxslar) yo'q qilinadi va seleksiya geterozigotalar (turli xil genlarga ega bo'lgan shaxslar) foydasiga harakat qiladi. Populyatsiya genofondida sodir bo'ladigan ko'p vektorli tanlov tufayli har bir avlodda genotiplar saqlanib qoladi, bu organizmning atrof-muhit sharoitlariga yaxshi moslashishini ta'minlaydi. O'roqsimon hujayrali anemiya genining mavjudligi bilan bir qatorda, polimorfizmni tavsiflovchi boshqa turdagi genlar ham mavjud. Bu nima beradi? Bu savolga javob geteroz deb ataladigan hodisa bo'ladi. Geterozigotali mutatsiyalar va polimorfizmGeterozigotali polimorfizm retsessiv mutatsiyalar mavjudligida, hatto zararli bo'lsa ham, fenotipik o'zgarishlarning yo'qligini ta'minlaydi. Ammo shu bilan birga, ular populyatsiyada yuqori darajada to'planishi mumkin, bu zararli dominant mutatsiyalardan oshib ketishi mumkin. evolyutsion jarayonEvolyutsiya jarayoni uzluksiz bo'lib, uning zaruriy sharti polimorfizmdir. Buning ma'nosi ma'lum bir populyatsiyaning yashash muhitiga doimiy moslashishi. Bir guruhda yashovchi turli jinsdagi organizmlar geterozigota holatda bo'lishi va ko'p yillar davomida avloddan-avlodga o'tishi mumkin. Shu bilan birga, ularning fenotipik ko'rinishi mavjud bo'lmasligi mumkin - genetik o'zgaruvchanlikning katta zaxirasi tufayli. Fibrinogen geniKo'pgina hollarda tadqiqotchilar fibrinogen gen polimorfizmini ishemik insult rivojlanishining kashshofi deb hisoblashadi. Ammo hozirgi vaqtda ushbu kasallikning rivojlanishiga genetik va orttirilgan omillar ta'sir ko'rsatishi muammosi birinchi o'ringa chiqmoqda. Ushbu turdagi insult miya tomirlarining trombozi tufayli rivojlanadi va fibrinogen genining polimorfizmini o'rganish orqali ko'plab jarayonlarni tushunish mumkin, unga ta'sir qilish orqali kasallikning oldini olish mumkin. Hozirgi vaqtda olimlar genetik o'zgarishlar va qonning biokimyoviy parametrlari o'rtasidagi bog'liqlikni etarlicha o'rganmaganlar. Keyingi tadqiqotlar kasallikning rivojlanishiga ta'sir qilish, uning kursini o'zgartirish yoki rivojlanishning dastlabki bosqichida oddiygina oldini olish imkonini beradi. Misollar bilan pdf formatidagi taqdimot shaklida ma'ruza - 27 slayd. Ma'ruzada funksiya va usullar polimorfizmining barcha shakllari muhokama qilinadi va ularning ierarxiyasi diagramma shaklida taqdim etiladi. Ma'ruzadan parchalarPolimorfizm tushunchasi
Polimorfizmdan foydalanishning afzalliklari
Parametrlangan polimorfizm
Sof polimorfizm
Haddan tashqari yuk yoki maxsus polimorfizm
Bir-biriga bog'liq bo'lmagan sinflarda ortiqcha yuklash usullari
Parametrik ortiqcha yuk
O'zgartirish usuli
Usulni almashtirish mexanizmining maqsadi
Usulni bekor qilish misoliMyEllipse sinfi MyEllipse ellipsi; // MyEllipse::area() usuli chaqiriladi // DIQQAT!!! MyEllipse::area() usuli chaqiriladi Usulni bekor qilish
Usulni bekor qilish misoliMyEllipse sinfi MyEllipse ellipsi; // MyEllipse::area() usuli chaqiriladi // MyEllipse::area() usuli chaqiriladi // MyCircle::area() usuli chaqiriladi // DIQQAT!!! MyCircle::area() usuli chaqiriladi Usulni bekor qilish mexanizmining maqsadi
Kechiktirilgan usullar
C++ tilida kechiktirilgan usullar
Polimorfizm (dasturlash) Qisqacha aytganda, polimorfizmning ma'nosini "Bir interfeys, ko'plab ilovalar" iborasida ifodalash mumkin. Polimorfizm - ob'ektga yo'naltirilgan dasturlashning to'rtta muhim mexanizmlaridan biri (abstraktsiya, inkapsulyatsiya va meros bilan birga). Polimorfizm sizga ko'proq mavhum dasturlarni yozish va kodni qayta ishlatishni oshirish imkonini beradi. Ob'ektlarning umumiy xossalari tizimga birlashtirilgan bo'lib, ularni turlicha - interfeys, sinf deb atash mumkin. Jamiyat tashqi va ichki ifodaga ega:
MisollarGeometrik shakllar sinfi (ellips, ko'pburchak) geometrik o'zgarishlar (o'zgartirish, aylantirish, masshtablash) usullariga ega bo'lishi mumkin. Funktsional tillardaXaskellda polimorfizmning ikki turi mavjud - parametrik (sof) va maxsus (sinfga asoslangan). Maxsus deb ham ataladi maxsus(Lotin tilidan ad hoc - maxsus). Ularni quyidagicha ajratish mumkin: Parametrik polimorfizmMaxsus polimorfizmHaskellda OOPda topilmagan sinflar va misollarga bo'linish mavjud. Sinf usullar to'plamini va imzolarini belgilaydi (ehtimol, ularning ba'zilari yoki barchasi uchun standart ilovalarni beradi) va misollar ularni amalga oshiradi. Shunday qilib, bir nechta meros muammosi avtomatik ravishda yo'qoladi. Sinflar boshqa sinflarning usullarini meros qilib olmaydi yoki bekor qilmaydi - har bir usul faqat bitta sinfga tegishli. Ushbu yondashuv OOPdagi sinf munosabatlarining murakkab diagrammasidan ko'ra soddadir. Berilgan ma'lumotlar turi bir nechta sinflarga tegishli bo'lishi mumkin; sinf uning har bir turi boshqa sinfga yoki hatto bir nechta sinfga tegishli bo'lishini talab qilishi mumkin; xuddi shunday talab instansiya tomonidan qo'yilishi mumkin. Bular ko'p merosning analoglari. OOPda o'xshashi bo'lmagan ba'zi xususiyatlar ham mavjud. Misol uchun, ro'yxatni solishtiriladigan miqdorlar sinfining namunasi sifatida amalga oshirish, ro'yxat elementlarining ham taqqoslanadigan miqdorlar sinfiga tegishli bo'lishini talab qiladi. OOP dan FP ga o'tadigan dasturchilar o'zlarining sinf tizimlari o'rtasidagi muhim farqni bilishlari kerak. Agar OOPda sinf ob'ektga, ya'ni ma'lumotlarga "bog'langan" bo'lsa, FPda u funktsiyaga bog'langan. FPda sinfga a'zolik haqidagi ma'lumotlar ob'ekt maydonlarida saqlanmasdan, funksiya chaqirilganda uzatiladi. Bunday yondashuv, xususan, bir nechta ob'ektlar usuli masalasini hal qilish imkonini beradi (OOPda usul bitta ob'ektda chaqiriladi). Misol: qo'shish usuli (raqamlar, satrlar) bir xil turdagi ikkita argumentni talab qiladi. Yashirin yozishBa'zi dasturlash tillari (masalan, Python va Ruby) imzo polimorfizmining bir turi bo'lgan o'rdak terish (boshqa nomlar: yashirin, yashirin) dan foydalanadi. Shunday qilib, masalan, Pythonda polimorfizm meros bilan bog'liq emas. Polimorfizm shakllariStatik va dinamik polimorfizm(Manba bo'lgan Sutter va Aleksandreskuning klassik kitobida eslatib o'tilgan). Polimorfizmni kodda moslashtirish nuqtalarining mavjudligi, dasturchi tomonidan yozilgan bir xil kod qismi biror narsaga qarab turli xil operatsiyalarni anglatishi mumkin deb tushunish mumkin. Bir holatda, fragmentning o'ziga xos ma'nosi kod yaratilgan muhitga bog'liq. Bu deb ataladigan narsa statik polimorfizm. Funktsiyani haddan tashqari yuklash va C++ dagi shablonlar statik polimorfizmni amalga oshiradi. Agar, masalan, shablon sinfi kodida std::sort chaqirilgan bo'lsa, unda qo'ng'iroqning haqiqiy ma'nosi ushbu shablon qaysi turdagi parametrlar uchun qo'llanilishiga bog'liq - std::sort dan biri chaqiriladi. Boshqa holatda, fragmentning o'ziga xos ma'nosi faqat ijro etilish bosqichida aniqlanadi va ob'ekt aniq qanday va qaerda qurilganiga bog'liq. Bu virtual usullar orqali amalga oshiriladigan oddiy, dinamik polimorfizm. Inklyuziya polimorfizmiBu polimorfizm sof polimorfizm deyiladi. Polimorfizmning ushbu shaklidan foydalanib, tegishli ob'ektlar umumiy tarzda ishlatilishi mumkin. O'zgartirish va qo'shish polimorfizmidan foydalanib, TPerson ob'ektlarining barcha turlari bilan ishlashning bitta usulini yozishingiz mumkin. Inklyuziya va almashtirish polimorfizmidan foydalanib, siz "is-A" testidan o'tgan har qanday ob'ekt bilan ishlashingiz mumkin. Inklyuziv polimorfizm dasturga yangi subtiplarni qo'shish ishini soddalashtiradi, chunki har bir yangi tur uchun ma'lum bir usulni qo'shishning hojati yo'q, siz mavjudidan foydalanishingiz mumkin, faqat undagi tizimning harakatini o'zgartirish orqali. Polimorfizm bilan siz asosiy sinfni qayta ishlatishingiz mumkin; asosiy sinf foydalanadigan har qanday avlod yoki usullardan foydalaning. Parametrik polimorfizmParametrik polimorfizmdan foydalanib, universal tayanch turlarini yaratishingiz mumkin. Parametrik polimorfizm holatida funktsiya barcha turlar uchun teng ravishda amalga oshiriladi va shuning uchun funktsiya ixtiyoriy tur uchun amalga oshiriladi. Parametrik polimorfizm parametrik usullar va turlarni qamrab oladi. Parametrik usullar Agar inklyuziya polimorfizmi ob'ektni idrok etishimizga ta'sir qilsa, parametrik polimorfizm qo'llaniladigan usullarga ta'sir qiladi, chunki turlarni e'lon qilishni ish vaqtigacha kechiktirib, tegishli sinflarning usullarini yaratish mumkin. Har bir tur uchun alohida usul yozmaslik uchun parametrik polimorfizm qo'llaniladi, bunda parametrlar turi operandlar bilan bir xil parametr bo'ladi. Parametrik turlari Har bir aniq tip uchun sinf yozish o'rniga biz dasturni bajarish jarayonida amalga oshiriladigan tiplarni yaratishimiz kerak, ya'ni parametrik tip yaratamiz. Polimorfizmni bekor qilishMavhum usullar ko'pincha kechiktirilgan usullar deb ataladi. Ushbu usul aniqlangan sinf usulni chaqirishi mumkin va polimorfizm kechiktirilgan usulning tegishli versiyasini bolalar sinflarida chaqirishini ta'minlaydi. Ad hoc polimorfizm har bir ma'lumot turi uchun maxsus amalga oshirish imkonini beradi. Polimorfizm - ortiqcha yukBu polimorfizmning alohida holati. Haddan tashqari yuklash yordamida bir xil nom turli usullarni belgilashi mumkin va usullar parametrlarning soni va turi bo'yicha farq qilishi mumkin, ya'ni ular argumentlariga bog'liq emas. Usul juda ko'p turli xil turdagi o'ziga xos parametr turlari bilan cheklanmasligi mumkin. Funktsional va ob'ektga yo'naltirilgan dasturlashda polimorfizmni taqqoslashFP va OOPdagi sinf tizimlari boshqacha tuzilgan, shuning uchun ular orasidagi taqqoslashga juda ehtiyotkorlik bilan yondashish kerak. Polimorfizm - bu dasturlash tilining ancha izolyatsiya qilingan xususiyati. Masalan, C++ tilidagi sinflar dastlab C uchun preprotsessor sifatida amalga oshirilgan. Xaskell uchun maxsus polimorfizmdan foydalanadigan dasturlarni faqat parametrik polimorfizmga ega dasturlarga tarjima qilish algoritmi mavjud. FP va OOPdagi sinf tizimlari o'rtasidagi konseptual farqlarga qaramay, ular taxminan bir xil tarzda - virtual usullar jadvallari yordamida amalga oshiriladi.Ko'pincha Java-da qo'llaniladi. Shuningdek qarangHavolalarEslatmalarWikimedia fondi. 2010 yil. Boshqa lug'atlarda "Polimorfizm (dasturlash)" nima ekanligini ko'ring:Bu atamaning boshqa maʼnolari ham bor, qarang: Polimorfizm. Kompyuter virusi polimorfizmi (yunoncha: pōlí ko'p + yunoncha: mōrōk shakl, ko'rinish) - zararli dasturlar mualliflari tomonidan qo'llaniladigan maxsus texnika... ... Vikipediya Ob'ektga yo'naltirilgan dasturlashda ob'ektning xabarda olingan ma'lumotlar turiga qarab to'g'ri usulni tanlash qobiliyati. Ingliz tilida: Polimorfizm Shuningdek qarang: Ob'ektga yo'naltirilgan dasturlash Moliyaviy lug'at... ... Moliyaviy lug'at Polimorfizm (dasturlash tillarida) - bir xil interfeysga ega bo'lgan ob'ektlarning almashinishi. Dasturlash tili polimorfizmni qo'llab-quvvatlaydi, agar bir xil spetsifikatsiyaga ega sinflar turli xil ilovalarga ega bo'lsa, masalan, sinfni amalga oshirish... ... Vikipediya Ob'ektlarni sinflarga birlashtirish muammoni umumiyroq shaklda ko'rib chiqishga imkon beradi. Sinf o'sha sinfning barcha ob'ektlariga tegishli nomiga ega (masalan, "ot"). Bundan tashqari, sinf ob'ektlar uchun aniqlangan atributlarning nomlarini o'z ichiga oladi. Shu ma'noda sinf tavsifi protsessual dasturlashda keng qo'llaniladigan tuzilma yoki yozuv (yozuv) turining tavsifiga o'xshaydi; Bundan tashqari, har bir ob'ekt strukturaning namunasi bilan bir xil ma'noga ega (mos keladigan turdagi o'zgaruvchi yoki doimiy). Rasmiy ravishda Sinf holatini belgilaydigan ko'rsatilgan parametrlarga ega bo'lgan ma'lum turdagi ob'ektlarning xatti-harakatlari namunasidir. Xuddi shu sinfning barcha misollari (bir xil sinfdan olingan ob'ektlar) bir xil xususiyatlar to'plamiga va umumiy xatti-harakatlarga ega, ya'ni ular bir xil xabarlarga bir xil munosabatda bo'lishadi. Ga muvofiq UML(Yagona modellashtirish tili - birlashtirilgan modellashtirish tili), sinf quyidagi grafik tasvirga ega. Sinf uch qismdan iborat to'rtburchaklar shaklida tasvirlangan. Yuqori qismda sinf nomi, o'rtada sinf ob'ektlarining xossalari, pastki qismida esa ushbu sinf ob'ektlari (usullari) bilan bajarilishi mumkin bo'lgan amallar joylashgan. Har bir sinf, shuningdek, ushbu sinf ob'ektlari yaratilganda va yo'q qilinganda avtomatik ravishda chaqiriladigan maxsus usullarga ega bo'lishi mumkin:
Odatda, konstruktor va destruktor maxsus sintaksisga ega bo'lib, ular oddiy sinf usullarini yozish uchun ishlatiladigan sintaksisdan farq qilishi mumkin. InkapsulyatsiyaInkapsulyatsiya(inkapsulyatsiya) sinfning amalga oshirilishini yashiradi va uning ichki ko'rinishini tashqi (interfeys)dan ajratadi. Ob'ektga yo'naltirilgan yondashuvdan foydalanganda, sinfning xususiyatlariga boshqa sinflar usullaridan to'g'ridan-to'g'ri kirish odatiy hol emas. Sinf xususiyatlariga kirish uchun uning xususiyatlarini olish va o'zgartirish uchun ushbu sinfning maxsus usullaridan foydalanish odatiy holdir. Ob'ekt ichida ma'lumotlar va usullar turli darajadagi ochiqlik (yoki foydalanish imkoniyati) bo'lishi mumkin. Java tilida qabul qilingan qulaylik darajalari 6-bobda batafsil muhokama qilinadi. Ular sizga inkapsulyatsiya xususiyatini yanada aniqroq boshqarish imkonini beradi. Sinfning umumiy a'zolari ob'ektning tashqi interfeysini tashkil qiladi. Bu boshqalar uchun mavjud bo'lgan funksionallik. Sinfning barcha xossalari odatda shaxsiy, shuningdek, amalga oshirish tafsilotlari bo'lgan va tizimning boshqa qismlari bog'liq bo'lmasligi kerak bo'lgan yordamchi usullar deb e'lon qilinadi. Amalga oshirishni sinfning tashqi interfeysi orqasida yashirish orqali siz tizimning boshqa komponentlari kodini o'zgartirmasdan alohida sinfning ichki mantiqini o'zgartirishingiz mumkin. Bu xususiyat deyiladi modullilik. Sinf xususiyatlariga faqat uning usullari orqali kirish mumkinligini ta'minlash ham bir qator afzalliklarni beradi. Birinchidan, bu maydonlarning to'g'ri qiymatlarini boshqarishni ancha osonlashtiradi, chunki xususiyatlarga to'g'ridan-to'g'ri kirishni kuzatish mumkin emas, ya'ni ularga noto'g'ri qiymatlar berilishi mumkin. Ikkinchidan, ma'lumotlarni saqlash usulini o'zgartirish qiyin bo'lmaydi. Agar ma'lumot fayl tizimi yoki ma'lumotlar bazasi kabi xotiradan tashqari xotirada saqlansa, bu funksiyani butun tizimda amalga oshirishdan ko'ra, faqat bitta sinfda bir nechta usullarni o'zgartirishingiz kerak bo'ladi. Nihoyat, ushbu printsip yordamida yozilgan kodni disk raskadrovka qilish osonroq. Bizni qiziqtirgan ob'ektning xususiyati kim va qachon o'zgarganligini bilish uchun ushbu ob'ektning xususiyatiga kirish mumkin bo'lgan ob'ekt usuliga disk raskadrovka ma'lumotlarining chiqishini qo'shish kifoya. Ob'ekt xususiyatlariga to'g'ridan-to'g'ri kirishdan foydalanganda, dasturchi qiziqtirgan ob'ekt ishlatiladigan kodning barcha bo'limlariga disk raskadrovka ma'lumotlari chiqishini qo'shishi kerak edi. Meros olishMeros olish Meros - bu sinflar o'rtasidagi munosabat bo'lib, unda sinf boshqa sinfning (bitta meros) yoki boshqa sinflarning (bir nechta meros) tuzilishi yoki xatti-harakatlaridan foydalanadi. Meros davlat/xususiy ierarxiyani joriy qiladi, unda kichik sinf bir yoki bir nechta keng tarqalganlardan meros bo'lib o'tadi supersinflar. Kichik sinflar odatda meros qilib olingan tuzilma va xatti-harakatlarni kengaytiradi yoki bekor qiladi. Misol tariqasida, biz "Avtomobil" va "Yuk mashinasi" sinflarini amalga oshirish zarur bo'lgan muammoni ko'rib chiqishimiz mumkin. Shubhasiz, bu ikki sinf umumiy funksionallikka ega. Shunday qilib, ularning ikkalasi ham 4 ta g'ildirak, dvigatel, harakatlana oladi va hokazo. Har qanday avtomobil yuk mashinasi yoki yo'lovchi avtomobili, 5 yoki 12 o'rinli bo'lishidan qat'i nazar, bu barcha xususiyatlarga ega. Turli sinflarda bir xil kodni qayta-qayta yozmaslik uchun ushbu umumiy xususiyatlar va funksionallikni alohida sinfga, masalan, "Avtomobil" ga kiritish va undan "Avtomobil" va "Yuk mashinasi" sinflarini meros qilib olish maqsadga muvofiqdir. Umumlashtirish munosabati oxirida uchburchak o'q bo'lgan qattiq chiziq bilan ko'rsatilgan. O'q umumiy sinfga ishora qiladi ( ajdodlar sinfi yoki supersinf) va uning yo'qligi - yanada maxsus sinfga ( bolalar sinfi yoki kichik sinf). Merosdan foydalanish o'xshash ob'ektlarni tavsiflash uchun yaratilgan kod miqdorini kamaytirishga yordam beradi, shuningdek, yanada samarali va moslashuvchan kod yozishga yordam beradi. Ko'rib chiqilgan misolda yagona meros qo'llaniladi. Sinf bir vaqtning o'zida bir nechta sinflarning xususiyatlari va xatti-harakatlarini meros qilib olishi mumkin. Ko'p merosdan foydalanishning eng mashhur namunasi - bu uy hayvonlari do'konida mahsulotni inventarizatsiya qilish tizimini loyihalash. Uy hayvonlari do'konidagi barcha hayvonlar "Hayvon" sinfining merosxo'rlari, shuningdek, "Mahsulot" sinfining merosxo'rlaridir. Bular. ularning barchasi yoshi bor, oziq-ovqat va suvga muhtoj va ayni paytda narxga ega va sotilishi mumkin. Diagrammada bir nechta merosxo'rlik xuddi bitta merosga o'xshash tarzda tasvirlangan, faqat meros chiziqlari avlod sinfini bir vaqtning o'zida bir nechta yuqori sinflarga bog'laydi. Barcha ob'ektga yo'naltirilgan dasturlash tillarida bir nechta merosni tavsiflash uchun til konstruktsiyalari mavjud emas. Java-da bir nechta meros interfeyslar orqali cheklangan qo'llab-quvvatlanadi va 8-bobda ko'rib chiqiladi. PolimorfizmPolimorfizm dagi asosiy tushunchalardan biridir ob'ektga yo'naltirilgan dasturlash meros va inkapsulyatsiya bilan birga. "Polimorfizm" so'zi yunoncha bo'lib, "ko'p shaklga ega" degan ma'noni anglatadi. U bilan bog'liq holda nimani anglatishini tushunish uchun ob'ektga yo'naltirilgan dasturlash, keling, bir misolni ko'rib chiqaylik. Aytaylik, biz vektorli grafik muharriri yaratmoqchimiz, unda biz sinflar ko'rinishidagi grafik primitivlar to'plamini tasvirlashimiz kerak - Point, Line, Circle, Box va boshqalar. Ushbu sinflarning har biri uchun ekranda mos keladigan primitivni ko'rsatish uchun chizish usulini aniqlaymiz. Shubhasiz, siz chizmani ko'rsatish uchun kod yozishingiz kerak bo'ladi, agar kerak bo'lsa, chizish paytida ekranda mavjud bo'lgan barcha ibtidoiy elementlarni ketma-ket takrorlaydi va ularning har birida chizish usulini chaqiradi. Polimorfizm bilan tanish bo'lmagan odam, ehtimol, bir nechta massivlarni (har bir ibtidoiy tip uchun alohida massiv) yaratadi va har bir massivdagi elementlarni ketma-ket takrorlaydigan va har bir elementda chizish usulini chaqiradigan kodni yozadi. Natijada taxminan quyidagi kod bo'ladi: ... //Maksimum // sig'imi 1000 bo'lgan Point obyektlarini // o'z ichiga olishi mumkin bo'lgan bo'sh massiv yaratish Point p = new Point; l qatori = yangi qator; Circle c = yangi doira; b qutisi = yangi quti; ... // faraz qilaylik, shu nuqtada // barcha massivlar mos keladigan // obyektlar bilan to‘ldirilgan... for(int i = 0; i)< p.length;i++) { //цикл с перебором всех ячеек массива. //вызов метода draw() в случае, // если ячейка не пустая. if(p[i]!=null) p[i].draw(); } for(int i = 0; i < l.length;i++) { if(l[i]!=null) l[i].draw(); } for(int i = 0; i < c.length;i++) { if(c[i]!=null) c[i].draw(); } for(int i = 0; i < b.length;i++) { if(b[i]!=null) b[i].draw(); } ... Yuqorida yozilgan kodning kamchiligi shundaki, har bir turdagi ibtidoiylarni ko'rsatish uchun deyarli bir xil kodning takrorlanishi. Grafik muharririmizni yanada modernizatsiya qilish va grafik primitivlarning yangi turlarini, masalan, Matn, Yulduz va boshqalarni chizish qobiliyatini qo'shish bilan biz mavjud kodni o'zgartirishga va yangi massivlarning ta'riflarini qo'shishga to'g'ri kelishi ham noqulay. unga, shuningdek, ular tarkibidagi elementlarni qayta ishlash. Polimorfizmdan foydalanib, biz bunday funktsiyani amalga oshirishni sezilarli darajada soddalashtira olamiz. Avvalo, umumiy ota-onani yarataylik Salom! Bu OOP tamoyillaridan biri - polimorfizm haqida maqola. Polimorfizm nimaPolimorfizmning ta'rifi qo'rqinchli ko'rinadi :)
so'z " polimorfizm"Murakkab ko'rinishi mumkin - lekin unday emas. Siz shunchaki ushbu ta'rifni qismlarga bo'lishingiz va nimani anglatishini misollar bilan ko'rsatishingiz kerak. Ishoning, maqolaning oxirida polimorfizmning ushbu ta'rifi sizga aniq ko'rinadi :) Polimorfizm, agar tarjima qilingan bo'lsa, bu degani "ko'p shakllar" Masalan, teatrdagi aktyor ko'p rollarni sinab ko'rishi yoki "ko'p shakllarni" olishi mumkin. Bizning kodimiz bir xil - polimorfizm tufayli u OOP tamoyillaridan foydalanmaydigan dasturlash tillariga qaraganda ancha moslashuvchan bo'ladi. Xo'sh, biz qanday shakllar haqida gapirayapmiz? Keling, avvalo misollar keltiramiz va polimorfizm amalda qanday namoyon bo'lishini ko'rsatamiz, so'ngra uning ta'rifiga qaytamiz. Polimorfizm qanday namoyon bo'ladi?Gap shundaki agar Java polimorfizm printsipiga ega bo'lmasa, kompilyator buni xato sifatida izohlaydi: Ko'rib turganingizdek, rasmdagi usullar ular qabul qilgan qiymatlarda farqlanadi:
Biroq, Java polimorfizm printsipidan foydalanganligi sababli, kompilyator buni xato deb hisoblamaydi, chunki bunday usullar boshqacha ko'rib chiqiladi: Bir xil nomlash usullari juda qulay. Misol uchun, agar bizda raqamning kvadrat ildizini qidiradigan usul mavjud bo'lsa, bitta nomni eslab qolish ancha osonlashadi (masalan, sqrt()) har bir tur uchun yozilgan bir xil usul uchun bir nechta alohida nom: Ko'rib turganingizdek, biz har bir usul uchun alohida nom topishimiz shart emas - lekin asosiysi ularni eslab qolishdir! Juda qulay. Endi siz ushbu tamoyil nima uchun tez-tez quyidagi ibora bilan tasvirlanganligini tushunishingiz mumkin:
Bu biz bir nechta usullarga kirishimiz mumkin bo'lgan bitta nomni (bitta interfeys) to'ldirishimiz mumkinligini nazarda tutadi. Usulni ortiqcha yuklashBiz yuqorida ko'rsatgan narsa - bir xil nom va turli xil parametrlarga ega bo'lgan bir nechta usullar deyiladi ortiqcha yuk. Ammo bu usulni haddan tashqari yuklashga misol bo'ldi bitta sinfda. Ammo yana bir holat bor - ota-ona sinfining usullarini bekor qilish. Ota-ona usullarini bekor qilishBiz sinfni meros qilib olsak, uning barcha usullarini meros qilib olamiz. Ammo agar biz meros qilib olgan usullardan birini o'zgartirmoqchi bo'lsak, uni bekor qilishimiz mumkin. Biz, masalan, ehtiyojlarimiz uchun o'xshash nom bilan alohida usul yaratishga majbur emasmiz va meros qilib olingan usul bizning sinfimizda "o'lik vazn" bo'ladi. Biz ota-onadan meros bo'lib qolgan sinf bilan bir xil nomdagi avlod sinfida sinf yaratishimiz mumkinligi bekor qilish deb ataladi. Misol Tasavvur qilaylik, bizda shunday tuzilma bor: Sinf ierarxiyasining yuqori qismida sinf joylashgan Hayvon. U uchta sinfga meros bo'lib o'tadi - Mushuk, It Va Sigir. “Hayvon” sinfida “ovoz” usuli mavjud. Ushbu usul ekranda "Ovoz" xabarini ko'rsatadi. Tabiiyki, na it, na mushuk "Ovoz" demaydi :) Ular xirillab, miyovlaydilar. Shunga ko'ra, siz sinflar uchun boshqa usulni o'rnatishingiz kerak Mushuk, It Va Sigir- shunday qilib, mushuk miyovlaydi, it hurlaydi va sigir "Moo" deydi. Shuning uchun, avlod sinflarida biz usulni bekor qilamiz ovoz(), shuning uchun biz konsolda "Meow", "Woof" va "Moo" ni qabul qilamiz.
Xo'sh, polimorfizm nima
Keling, maqolaning boshida bergan ta'rifni yana bir bor ko'rib chiqaylik: Polimorfizm- bir sinfda yoki meros munosabatlari bilan bog'liq bo'lgan sinflar guruhida bir xil yoki turli xil parametrlar to'plamiga ega bir xil nomdagi usullardan foydalanish qobiliyati. Aniqroq ko'rinadi, shunday emasmi? Biz buni qanday qila olishingizni ko'rsatdik:
Bularning barchasi polimorfizm tufayli ob'ektga yo'naltirilgan tillarning "moslashuvchanligi oshishi" ning namoyonidir. Umid qilamizki, bizning maqolamiz siz uchun foydali bo'ldi. Java kurslarimizda roʻyxatdan oʻtishingiz mumkinbizda bor. |
O'qing: |
---|
Mashhur:
Yangi
- Axborot urushi nima
- Domen nomi mavjudligini qanday aniqlash mumkin
- Ob'ektlarni 1 soniyada o'chirish 8
- 1s zup 3.0 birja hisobi. Ma'lumotlar almashinuvi jadvalini o'rnatish
- Hisob-faktura misoli uchun 1s 83 shtrix kodi
- Hujjatlarning jadval qismidan ma'lumotlarni qanday olish mumkin?
- 1s 8-bandlar uchun qo'shimcha tafsilotlar va qo'shimcha ma'lumotlarni o'rnatish
- Partiyali pochta jo'natmalarini qabul qilish Partiyani qabul qilish rpo
- Sharq nozik masala: Yaponiyada kriptovalyutalar Yaponiyada kriptovalyutalarni tartibga solish
- SEOsprint uchun boshqa avtoklikerni sinab ko'rish