Mundarija[Yashirish][Show]
Ishlab chiquvchilar orasida ob'ektga yo'naltirilgan dasturlash ko'plab muxlislarni jalb qildi. Ommabop kompyuter tili Python ham ob'ektga yo'naltirilgan paradigmaga amal qiladi.
U OOP tamoyillari uchun asos bo'lgan Python-da ob'ektlar va sinflarni aniqlash bilan shug'ullanadi. Ushbu "Python-da ob'ektga yo'naltirilgan dasturlash" bo'yicha qo'llanmada siz Python sinflarini qanday e'lon qilishni, ulardan ob'ektlarni yaratishni va to'rtta OOP texnikasidan foydalanishni o'rganasiz.
Shunday qilib, birinchi narsa.
Ob'ektga yo'naltirilgan dasturlash nima?
Ob'ektga yo'naltirilgan dasturlashning (OOP) asosiy yo'nalishi "ob'ektlar" ni yaratishdir. O'zaro bog'langan o'zgaruvchilar va funktsiyalar to'plami ob'ektni tashkil qiladi.
Ushbu o'zgaruvchilar odatda ob'ektning atributlari deb ataladi va uning xatti-harakatlari ko'pincha funktsiyalari deb ataladi. Ushbu elementlar ilovani yanada samaraliroq va tushunarli tuzilma bilan ta'minlaydi. Avtomobil buyumga misoldir.
Agar avtomobil buyum bo'lsa, uning atributlari rangi, modeli, narxi, markasi va boshqalarni o'z ichiga oladi. Bundan tashqari, u tezlashadi, sekinlashadi va viteslarni o'zgartiradi.
Yana bir misol: Agar itni buyum deb hisoblasak, unda uning ba'zi xususiyatlari rangi, zoti, ismi, vazni va hokazo bo'lishi mumkin. Va u harakatlanar, hurlaydi, o'ynaydi va hokazo.
U ob'yektlar, yashirish, merosxo'rlik va hokazo kabi real dunyo tushunchalarini dasturlashda o'z ichiga olganligi sababli, ob'ektga yo'naltirilgan dasturlash yaxshi ma'lum. Haqiqiy sharoitlarga juda o'xshashligi sababli, vizualizatsiya soddalashtirilgan.
Ob'ektga yo'naltirilgan dasturlash tushunchalari
Python-da sinflar va ob'ektlar
Boshqa barcha ob'ektga yo'naltirilgan tillar singari, Python sizga ob'ektlarni yaratish uchun sinflarni loyihalash imkonini beradi. Python-dagi eng mashhur ma'lumotlar turlari, jumladan satrlar, ro'yxatlar, lug'atlar va boshqa ob'ektlar o'rnatilgan sinflardir.
Sinf - ob'ektning ma'lum bir turini belgilaydigan bog'langan usullar va misol o'zgaruvchilari guruhi. Sinf ob'ekt uchun model yoki shablon sifatida ko'rinishi mumkin. Sinfni tashkil etuvchi o'zgaruvchilar atributlar deb nomlanadi.
Ob'ekt - bu belgilangan atributlar to'plamiga ega bo'lgan sinf a'zosi. Shu sababli, bir xil sinf yordamida istalgan miqdordagi ob'ektlar yaratilishi mumkin.
Python sinflari sinf so'zi yordamida aniqlanadi, undan keyin sinf nomi va ikki nuqta qo'yiladi. To'tiqush sinfining tasviri bo'lishi mumkin:
Bu erda biz bo'sh sinf Parrotni class kalit so'zidan foydalanib e'lon qilamiz. Biz sinflardan misollar yaratamiz. Namuna - bu ma'lum bir sinfdan yaratilgan muayyan ob'ekt. "pass" tez-tez kod uchun stend sifatida ishlatiladi, biz hozircha amalga oshirishdan voz kechishimiz mumkin. Biz “pass” kalit so‘zidan foydalanib, Python kodini xatoga yo‘l qo‘ymasdan bajarishimiz mumkin.
Sinfning instantsiyasi ob'ektni (nasolani) keltirib chiqaradi. Sinf yaratilganda faqat ob'ekt tavsifi aniqlanadi. Natijada, xotira yoki RAM ajratilmaydi.
To'tiqush sinfi ob'ektiga misol:
Obj bu misolda Parrot-sinf ob'ektidir.
Aytaylik, biz to'tiqushlarning o'ziga xos xususiyatlarini bilamiz. Endi biz to'tiqush sinfini va uning ob'ektlarini qanday yaratishni ko'rsatamiz.
Maxsus usul (__init__)
Init deb nomlangan usul har bir Parrot ob'ektida bo'lishi kerak bo'lgan atributlarni belgilaydi (). Yangi Parrot ob'ekti yaratilganda, __init__ funktsiyasi ob'ekt xususiyatlari ichida biz taqdim etadigan qiymatlarni belgilash orqali ob'ektning boshlang'ich holatini yaratadi.
Shunday qilib, sinfning har bir yangi namunasi __init__() yordamida ishga tushiriladi. __init__() har qanday miqdordagi parametrlarni qabul qila olsa ham, self har doim birinchi parametrdir.
Faol sinf misoliga havola o'z-o'zidan argumentga kiritilgan. Sinfning joriy ob'ektining manziliga bog'laydigan va uning (ob'ektning) o'zgaruvchilari ma'lumotlariga kirish imkonini beruvchi self parametri buni bildiradi.
misol 1
Biz yuqoridagi kodda Parrot nomli sinfni yaratdik. Keyinchalik, xususiyatlar aniqlanadi. Narsaning xususiyatlari uning xossalaridir. Sinfning __init__ funktsiyasi bu xususiyatlar ko'rsatilgan joydir.
Ob'ekt hosil bo'lganda, ishga tushirish usuli dastlab chaqiriladigan usuldir. Keyin Parrot sinfining misollari yaratiladi. Ushbu misolda Blaze va Vonda bizning yangi ob'ektlarimizga havolalar (qiymatlar). __class .species bizga sinf atributiga kirish imkonini beradi.
Sinfning har bir namunasi bir xil xususiyatlarga ega. Namuna xususiyatlariga blaze.name va blaze.age orqali ham kirish mumkin. Biroq, sinfning barcha namunalari noyob misol atributlariga ega.
misol 2
usullari
Sinf tanasi ichida aniqlangan funksiyalar metodlar deyiladi. Ular element qanday harakat qilishini aniqlash uchun ishlatiladi.
Ikki usul, sing() va raqs, yuqorida aytib o'tilgan ilovada () belgilangan. Ular alov kabi misol ob'ektida chaqirilganligi sababli, ular misol usullari deb ataladi.
OOPS kontseptsiyasining asoslari
Ob'ektga yo'naltirilgan dasturlashning to'rtta asosiy g'oyasi:
- meros olish
- Kapsülleme
- Polimorfizm
- Abstraktsiya
meros olish
Odamlar tez-tez yangi tug'ilgan chaqaloqlarga ota-onalarinikiga o'xshash yuz xususiyatlariga ega ekanligini yoki ota-onalaridan o'ziga xos xususiyatlarni meros qilib olishlarini aytishadi.
Siz ham ota-onangiz bilan ba'zi xususiyatlarni baham ko'rishingizni kuzatgan bo'lishingiz mumkin. Haqiqiy vaziyat ham merosga juda o'xshaydi.
Biroq, bu holda, "ota-onalar sinflari" xususiyatlari "bolalar sinflari" ga o'tadi. Ushbu jihatlar ushbu kontekstda "xususiyatlar" va "usullar" deb ataladi.
Sinf o'z usullari va atributlarini meros sifatida ma'lum bo'lgan texnikadan foydalangan holda boshqa sinfdan olishi mumkin. Meros - bu bolalar sinfining ota-sinf xususiyatlarini qabul qilish jarayoni.
misol:
Inson ota-ona sinfi yuqoridagi misoldagi Boy bolalar sinfiga meros bo'lib qolgan. Boy odamdan meros bo'lgani uchun biz Boy sinfining namunasini yaratganimizda uning barcha usullari va atributlariga kira olamiz.
O'g'il bolalar sinfida maktab nomi deb nomlangan usul ham aniqlangan. Ota-onalar sinfi obyekti schoolName usuliga kira olmaydi. Biroq, schoolName usulini bolalar sinfi ob'ektini (Boy) yaratish orqali chaqirish mumkin.
Kapsülleme
Dasturdagi har bir o'zgaruvchiga global kirish huquqini berish sinflar bilan ishlash va nozik ma'lumotlar bilan ishlashda oqilona harakat emas.
Dasturga ushbu o'zgaruvchilarning birortasiga to'liq kirish huquqini bermasdan, inkapsulyatsiya bizga kerakli o'zgaruvchilarni olish mexanizmini taqdim etadi.
Maqsad uchun aniq belgilangan usullar o'zgaruvchilardan ma'lumotlarni yangilash, tahrirlash yoki o'chirish uchun ishlatilishi mumkin. Dasturlashning bu usuli ma'lumotlar kiritilishi ustidan xavfsizlikni oshirish va nazorat qilishning afzalliklariga ega.
Quyidagi namoyishda oʻzgaruvchilarga qanchalik tez kirish mumkinligini koʻring:
Polimorfizm
Aytaylik, siz telefoningizni ko'rib chiqish uchun foydalanyapsiz Instagram tarmoqlari. Musiqa tinglash istagi paydo bo'lgach, siz Spotify-ga kirdingiz va sevimli qo'shiqni o'ynay boshladingiz.
Bir muncha vaqt o'tgach, sizga qo'ng'iroq keldi, shuning uchun siz unga javob berish uchun fonda nima qilayotganingizni to'xtatdingiz. Do'stingiz qo'ng'iroq qildi va sizdan ma'lum bir odamning telefon raqamini yozishingizni so'radi.
Shunday qilib, siz unga telefon raqamini SMS orqali yubordingiz va vazifalaringizni davom ettirdingiz. Biror narsani tanladingizmi? Faqat bitta qurilma – mobil telefoningiz bilan siz tasmalarni kezishingiz, musiqa tinglashingiz, qo‘ng‘iroqlarni qabul qilishingiz va qo‘ng‘iroq qilishingiz va xabar yuborishingiz mumkin.
Shuning uchun, polimorfizm bilan solishtirish mumkin. Poly ko'p, morf esa turli shakllarni bildiradi. Shuning uchun polimorfizm umuman olganda har xil shakllarga ega bo'lgan narsani anglatadi.
Yoki vaziyatga qarab, turli xil xatti-harakatlarni namoyon qilishi mumkin bo'lgan "bir narsa". OOPS da polimorfizm bir xil nomga ega, ammo har xil xatti-harakatlarga ega funktsiyalarni tavsiflaydi. Shu bilan bir qatorda, bir xil funktsiya nomiga ega bo'lgan boshqa funktsiya imzosi (funktsiyaga o'tkazilgan parametrlar).
misol:
Bu erda biz o'zgaruvchan hayvondan Zebra va Quyon ob'ektlari bo'ylab takrorlash uchun ularning tegishli misol usullaridan foydalanishimiz mumkin. Natijada, Zebra va Quyonning xatti-harakati (color() & eats()) bu yerda hayvon deb ataladigan bitta o‘zgaruvchi bilan ifodalanadi. Shuning uchun u polimorfizm qoidalariga rioya qiladi.
Abstraktsiya
Siz ushbu kontentni o'qish uchun noutbuk, telefon yoki planshetdan foydalanasiz. Uni o'qiyotganda, siz, ehtimol, eslatmalarni olib yurasiz, asosiy parchalarni chizasiz va, ehtimol, shaxsiy fayllaringizda ba'zi ma'lumotlarni saqlaysiz.
Buni o'qiganingizda ko'rishingiz mumkin bo'lgan narsa bu sizga ko'rsatilayotgan ma'lumotlarga ega "ekran". Siz yozayotganda klaviatura tugmalarini ko‘rasiz, shuning uchun tugmani bosish bu so‘zning ekranda paydo bo‘lishiga qanday olib kelishi kabi ichki nozikliklar haqida tashvishlanishingiz shart emas.
Shu bilan bir qatorda, ekrandagi tugmani qanday bosish yangi tabni ishga tushirishi mumkin.
Shuning uchun, bu vaziyatda biz kuzata oladigan narsa mavhumdir. Biz faqat u yaratayotgan natijani ko'ra olamiz, lekin ichki nozikliklarni (aslida biz uchun muhim) emas.
Shunga o'xshab, abstraktsiya faqat har qanday amalga oshirish yoki ichki tafsilotlarni yashirgan holda hamma narsaga ega bo'lgan funktsiyalarni ochib beradi.
Abstraktsiyaning asosiy maqsadi fon ma'lumotlarini va har qanday begona ma'lumotlarni amalga oshirishni yashirishdir, shunda odamlar faqat ko'rishlari kerak bo'lgan narsalarni ko'rishadi. Bu kodning murakkabligini boshqarishda yordam beradi.
misol:
Bu yerda transport vositasiga oid mavhum sinf mavjud. ABC mavhum sinfidan meros bo'lgani uchun u mavhumdir. Mavhum usullar aniqlanmagan yoki bo'sh qolishi sababli, Vehicle sinfida "no of g'ildiraklar" deb nomlangan mavhum usul mavjud bo'lib, unda ta'rifi yo'q.
Usulni amalga oshirish uchun ular mavhum sinflarni meros qilib olgan sinflarni kutadilar.
OOPS tushunchalarining afzalliklari
- Inkapsulyatsiya orqali yuqori darajadagi xavfsizlik va ma'lumotlar maxfiyligiga erishiladi.
- Xuddi shu sinfning ko'plab polimorfik versiyalariga ega bo'lishning moslashuvchanligi.
- Kod murakkabligining yuqori darajasi abstraksiya bilan kamaytirildi.
- Bitta muammoni topish uchun yuzlab kod qatorlarini saralash o‘rniga, dasturlashning modulliligi nosozliklarni tuzatishni osonlashtiradi.
- Kodni qayta ishlatish ota-sinf xususiyatlarining bolalar sinfining merosi tufayli yuzaga keladi.
- Muammoni samarali hal qilish mumkin, chunki biz har bir mini-muammo uchun kerakli harakatlarni bajaradigan sinflarni yaratamiz. Quyidagi muammoni tezroq hal qilish mumkin, chunki biz bu sinflarni qayta ishlatishimiz mumkin.
Xulosa
Xulosa qilib aytganda, biz Python-da OOPS g'oyalari haqida bilib oldik, hozirda eng issiq dasturlash paradigmasi.
Buni o'qib chiqqandan so'ng, siz OOPS paradigmasi butunlay sinflar va ob'ektlar g'oyasi bilan shug'ullanishini tushungan bo'lsangiz kerak. va inkapsulyatsiya, polimorfizm, meros va abstraksiya kabi OOPS tushunchalari.
Leave a Reply