6 - BOB. Pythonda Obyektga Yo’naltirilgan Dasturlash (OOP)
Last updated
Last updated
Obyektga yo’naltirilgan dasturlash (OOP) bu dasturlash paradigmasi bo‘lib, Python kabi zamonaviy dasturlash tillarida keng qo‘llaniladi. OOP yordamida dasturlarni obyektlar va ularning o‘zaro munosabatlari orqali tashkil etish mumkin. Python-da sinflar (class) va obyektlar (object) orqali OOPning barcha tushunchalarini amaliyotda qo‘llash oson. Pythonda deyarli barcha narsa ob'ekt bo‘lib, ular sinf yordamida aniqlanadi.
OOPning asosiy tushunchalari quyidagilar:
Obyekt (Object): Obyekt bu haqiqiy dunyodagi narsa yoki mantiqiy birlikni ifodalaydigan dasturiy element. Masalan, mashina, talaba, kitob, va hokazolar obyekt bo‘lishi mumkin.
Sinf (Class): Obyektlarni yaratish uchun ishlatiladigan shablon. Sinf obyektning barcha xususiyatlarini va metodlarini o‘zida saqlaydi.
Metod (Method): Obyektning bajaradigan amallari (funksiyalari). Bu obyektlar uchun xos amallarni bajaradigan funksiya.
Vorislik (Inheritance): Bir sinfning boshqa sinfdan xususiyat va metodlarni meros qilib olishi jarayoni. Bu kodning qayta ishlatilishini ta'minlaydi.
Polimorfizm (Polymorphism): Bir xil metodlarning turli sinflar tomonidan turli xil tarzda bajarilishi.
Inkapsulyatsiya (Encapsulation): Ma'lumot va funksiyalarni bitta obyekt ichiga joylash va tashqi kirishni cheklash jarayoni.
Abstraktsiya (Abstraction): Ma'lumotlarning faqat kerakli qismini ko'rsatib, boshqa murakkab tafsilotlarni yashirish.
Nazariy Ma'lumotlar
Obyekt (Object): Obyekt bu sinfning aniq namunasidir. Har bir obyekt o‘ziga xos xususiyatlar va amallarga ega. Masalan, agar sizda "Mashina" sinfi bo‘lsa, bu sinf orqali bir nechta mashina obyektlarini yaratishingiz mumkin: bitta mashina qora, boshqasi oq, bitta Tesla, boshqasi BMW bo‘lishi mumkin.
Sinf (Class): Sinf obyektlarni yaratish uchun shablon bo‘lib, uning ichida obyektning atributlari va metodlari belgilanadi.
Amaliy Misol: Oddiy Sinf va Obyekt
Tushuntirish:
Bu misolda Mashina
sinfi yaratildi. Unga model
va rang
atributlari biriktirilgan.
__init__()
bu konstruktor bo'lib, yangi obyekt yaratilganda avtomatik ravishda ishlaydi.
Obyekt yaratilib, ma'lumot()
metodi chaqiriladi.
Natija:
Nazariy Ma'lumotlar
Sinf obyektlarni yaratish uchun asosiy shablon hisoblanadi. Sinf ichida metodlar va atributlar mavjud bo‘ladi. Obyektlar esa sinfning konkret misollari bo‘lib, har bir obyektga o‘zining xususiyatlari va metodlari biriktiriladi.
Atributlar sinfda obyektning xususiyatlarini belgilaydi, masalan: ism, yosh, narx. Metodlar esa obyektning xatti-harakatlarini aniqlovchi funksiyalardir, masalan: ma'lumotni chiqarish, hisoblash, va hokazo.
Amaliy Misol: Sinf Va Obyektlar
Tushuntirish:
Bu yerda Talaba
sinfi yaratilgan. Uning ism
va yosh
atributlari mavjud.
__init__()
konstruktor yordamida obyekt yaratishda qiymatlar beriladi.
Natija:
Nazariy Ma'lumotlar
Konstruktor bu obyekt yaratilganda avtomatik ravishda ishlaydigan metod bo‘lib, u obyektning boshlang‘ich holatini belgilaydi. Pythonda konstruktorni __init__()
metodi orqali yaratamiz. Konstruktor obyekt yaratishda atributlarga qiymat berish imkonini beradi.
Amaliy Misol: Konstruktor Bilan Sinf
Tushuntirish:
__init__()
konstruktor yordamida obyekt yaratishda ism
va lavozim
parametrlariga qiymatlar berildi.
Natija:
Nazariy Ma'lumotlar
Vorislik bu sinflar o‘rtasidagi munosabat bo‘lib, bir sinf boshqa sinfdan xususiyatlar va metodlarni meros qilib oladi. Vorislik orqali biz yangi sinf yaratishda eski sinfdagi kodlarni qayta ishlatamiz. Vorislikda:
Ona sinf (superclass): Meros beruvchi sinf.
Bola sinf (subclass): Meros oluvchi sinf.
Amaliy Misol: Vorislik
Tushuntirish:
Hayvon
— bu ona sinf, unda umumiy ovoz()
metodi mavjud.
It
va Mushuk
esa bola sinflar bo‘lib, ular ona sinfdagi ovoz()
metodini o‘zlariga xos qilib o‘zgartiradi.
Natija:
Super() Funktsiyasi:
super()
funksiyasi ona sinfning metodlarini bola sinfda chaqirish uchun ishlatiladi.
Natija:
Nazariy Ma'lumotlar
Polimorfizm bu bir xil nomdagi metodlarning turli sinflarda har xil ish bajarishi. Bu tushuncha OOPda ko'p shaklga ega bo‘lish degan ma'noni anglatadi. Polimorfizm yordamida bitta funksiyani turli sinflar uchun turlicha ishlatish mumkin. Masalan, bir sinfda bir metod boshqa sinfda bir xil nom bilan boshqa vazifani bajarishi mumkin.
Polimorfizmning afzalliklari:
Bir xil metod yoki funksiya turli sinflarda turlicha ishlashi mumkin.
Bu OOPda moslashuvchanlikni oshiradi va kodni qayta ishlatish imkonini beradi.
Amaliy Misol: Polimorfizm
Tushuntirish:
Hayvon
sinfi umumiy metod (ovoz) bilan ta'minlaydi, lekin har bir bola sinf bu metodni o‘z uslubida qayta aniqlaydi.
Polimorfizm orqali bir xil metod (ovoz()
) turli sinflarda turlicha ishlaydi.
Natija:
Metodlarni Overriding (Qayta aniqlash)
Overriding bu ona sinfdagi metodni bola sinfda qayta aniqlash imkonini beradi. Bu usul orqali bola sinf ona sinfdan meros qilib olingan metodni o‘zgartirishi mumkin.
Natija:
Nazariy Ma'lumotlar
Inkapsulyatsiya bu obyektning barcha ma'lumotlari va funksiyalarini bir joyga to‘plab, ular bilan tashqi dunyo orasida kirishni cheklash jarayonidir. Inkapsulyatsiya ma'lumotlarni himoya qilishning muhim qismi hisoblanadi, chunki u xatoliklar yoki noto‘g‘ri ishlatishdan saqlaydi.
Python-da inkapsulyatsiya yordamida obyektning atributlarini tashqi kirishdan yashirish (private) yoki faqat o'qish (read-only) huquqini ta'minlash mumkin. Bu dasturiy xatolarning oldini oladi va obyektning ichki holatlarini boshqarishni osonlashtiradi.
Python-da atributlarni yashirish uchun atribut nomining boshiga ikki tag chiziq (__
) qo'yiladi.
Amaliy Misol: Inkapsulyatsiya
Tushuntirish:
__balans
private atribut hisoblanadi va tashqi tomondan unga to‘g‘ridan-to‘g‘ri kirib bo‘lmaydi.
balans_ol()
va balans_oshir()
metodlari orqali balansga kirish va uni o‘zgartirish mumkin.
Natija:
Nazariy Ma'lumotlar
Abstraktsiya bu obyektning faqat kerakli qismini ko‘rsatib, boshqa murakkab tafsilotlarni yashirish jarayonidir. Bu dasturlashning soddalashishiga va kodning murakkab qismlarini boshqarishda yordam beradi. Abstraktsiya orqali foydalanuvchiga obyektning faqat tashqi xatti-harakati ko‘rsatiladi, uning ichki ishlash jarayoni yashirin bo‘ladi.
Python'da abstraktsiyaga erishish uchun abstract sinflardan foydalaniladi. Abstract sinflarni yaratishda abc
(Abstract Base Class) moduli va @abstractmethod
dekoratori ishlatiladi.
Amaliy Misol: Abstraktsiya
Tushuntirish:
Transport
abstrakt sinfi har qanday transport vositasi uchun umumiy metodni belgilaydi.
Avtomobil
va Poyezd
sinflari bu metodni o‘z usulida aniqlaydi.
Natija:
Qayta ishlatish imkoniyati: Bir sinfni yoki metodni bir necha marta ishlatish mumkin. Bu kodni qisqartiradi va tizimni tushunarli qiladi.
Modullashuv: Dastur kodini qismlarga ajratib yozish osonlashadi.
Ma'lumotlarni yashirish (Inkapsulyatsiya): Ma'lumotlar tashqi tomondan himoyalanadi.
Kengayish: Vorislik yordamida yangi sinflar yaratish osonlashadi.
Moslashuvchanlik: Polimorfizm orqali bir xil metodlar har xil obyektlar uchun turlicha ishlaydi.
Pythonda obyektga yo'naltirilgan dasturlash (OOP) dastur tuzilmasini oson tushunarli va modulli tarzda yozish imkonini beradi. Sinflar va obyektlar orqali kodni qayta ishlatish, uni kengaytirish va muhofaza qilish osonlashadi.
Obyektlar va sinflar — kodning asosiy tuzilmasi.
Polimorfizm — bir xil metodning turli sinflarda turlicha ishlashini ta'minlaydi.
Inkapsulyatsiya — ma'lumotlarni himoyalash uchun ishlatiladi.
Abstraktsiya — murakkab ma'lumotlarni soddalashtiradi.
Vorislik — kodni qayta ishlatish va kengaytirish uchun imkon beradi.
Konstruktor obyekt yaratilganda unga boshlang'ich qiymatlarni berish uchun ishlatiladi.