Pythonda OOP
Saidkomil
OOP nima?
OOP (Object Oriented Programming - Obyektga yoʻnaltirilgan dasturlash) - asosiy konsepsiyasi Obyekt va Klass (Sinf) tushunchalariga bogʻliq boʻlgan dasturlash paradigmasi.
Endi odam tilida:
OOP - dasturning amallarini obyektlarga koʻchirish orqali dasturni soddaroq va oʻzgartirish uchun qulayroq qilishdir.
Python OOP ga 100% amal qiladigan DT (dasturlash tili). Chunki Pythonda barcha oʻzgaruvchilar obyekt hisoblanadi. Bu degani siz yaratgan barcha oʻzgaruvchilar nimaligidan qatʼi nazar, Python uchun Obyekt hisoblanadi.
OOP prinsiplari
OOPning asosiy uchta prinsipi mavjud:
- Incapsulation (Inkapsulyatsiya)
- Inheritance (Meʼroslilik)
- Polymorphism (Polimorfizm)
Inkapsulyatsiya
Inkapsulatsiya - realizatsiya detallarini berkitish imkoniyati. Axborot xavfsizligida maxsus xatolik keltirib chiqarish uslubi mavjud. Maxsus keltirib chiqarilgan xato dasturning nozik joylarini koʻrsatib berishi mumkin. Ammo xatoni keltirib chiqarish uchun ham realizatsiya detallaridan azgina boʻlsa ham maʼlumot kerak boʻladi. Buni Inkapsulatsiya berkitadi.
Meʼroslilik
Meʼroslilik bir klass imkoniyatlarini boshqa klassga uzata olishlik. Misol uchun siz baʼzi bir maʼlumot turini modifikatsiyalamoqchisiz. Pythondagi list ni faqat bir turdagi (masalan int) maʼlumot saqlaydigan turini yaratmoqchisiz. Siz list turining barcha imkoniyatlarini saqlagan boshqa bir klass tuzasiz va uni list dan meʼrosxoʻr deb eʼlon qilasiz.
Polimorfizm
Polimorfizm - bu meʼroslilikning kengaytirilgani. Yaʼni meʼroslikka olgan barcha imkoniyatlar yoniga biz yangi imkoniyatlar qoʻshishimiz mumkin. Demak biz yuqoridagi list dan meʼrosxoʻr boʻlgan yangi klassimizda roʻyhatga element qoʻshilishida tekshiradigan qilishimiz mumkin.
Toʻrtinchi prinsip Abstraction
Abstraksiya koʻpchilik manbalarda uchratilmaydi, shuning uchun biz uni roʻyhatimizga qoʻshmadik, ammo u haqida maʼlumot bermay ketish notoʻgʻri boʻladi. Abstraksiya OOP ning asosi desa ham boʻladi. Chunki klass degan narsamiz abstrakt. U chizmaga oʻxshaydi. Chizmaga qarab ustalar buyum yasashadi. Kompyuter uchun ham klass bu chizma va kompyuter bu chizma asosida boshqa maʼlumotlarni shakllantiradi va ushbu hosil boʻlgan tizimni bir obyekt sifatida dasturga taqdim etadi.
Kod qani?
Pythonda klass tuzish juda oson:

Yuqorida IntList nomli klass tuzilgan va u listdan meʼrosxoʻr deb eʼlon qilingan. Demak fikrni davom ettirib unga yangi imkoniyatlar qoʻshaylik. Yaʼni element qoʻshilayotganda u int tipiga mansub ekanligini tekshiramiz. Elementlar append() va extend() metodlari orqali qoʻshiladi. Avval append() ni oʻzgartiramiz:

Qatorma-qator oʻrganaylik. 1-qatorda funksiya kabi eʼlon qilingan append metodi ikkita argument self va item qabul qildi.
- self - bu obyektga havola. Yaʼni qaysidir obyekt append() metodini ishlatganida oʻsha obyekt haqida maʼlumot kerak boʻlishi, yoki oʻsha obyekt ishlatilishi kerak boʻlishi mumkin. Shunig uchun Python dasturlash tilida self degan argument iwlatiladi.
- item - bu bizning "yangicha" roʻyhatimizga qoʻshilishi kutilvotgan narsa yoki maʼlumot.
Oddiy list ning append() ini ishlatganimizda append() ga 1 dona maʼlumot berardik:
names = []
names.append("Jack")
Shunday boʻlsa ham "kapot tagida" appendga ikkita argument berilgan: names va "Jack". Yaʼni self == names boʻlgan.
Bizning misolimizda ham argument ikkitaligiga qaramasdan append() ga bitta dona argument beriladi.
2-qatorda item yaʼni append() ga berilgan argument int turiga mansub ekanligi tekshiriladi.
3-qatorda, yaʼni agar item butun son boʻlsa item bizning "yangicha" roʻyhatimizga qoʻshiladi.
5-qatorda, yaʼni item - int boʻlmasa bizning yangicha roʻyhatimizga qoʻshilmasdan "Notoʻgʻri maʼlumot berdingiz" degan xabar chiqariladi.
Extend()
Extend() ni oʻzgartirayotganimizda berilgan iterable ni har bir elementi uchun append() metodini iwlatiwimiz kifoya:

Barchasini birlashtiramiz va tekshiramiz:

Tushunmagan joylaringizni Maxsus Bot orqali aniqlashtirishingiz mumkin