Python'da OOP nima — obyektga yo'naltirilgan dasturlash
Shu paytgacha ma’lumotni alohida (o’zgaruvchilar, ro’yxatlar), harakatni esa alohida (funksiyalar) yozib keldik. OOP — obyektga yo’naltirilgan dasturlash — bularni birlashtirishning boshqacha usuli. Bu darsda OOP nima ekanini va u qanday muammoni yechishini ko’ramiz.
Muammo: bog’liq ma’lumot tarqoq
Aytaylik, o’quvchi haqidagi ma’lumotni saqlaymiz: ism, yosh, baholar. Bu ma’lumotlar bir-biriga bog’liq, lekin alohida o’zgaruvchilarda turadi:
ism = "Aziz"
yosh = 20
baholar = [90, 85, 78]
Uchta o’quvchi bo’lsa — to’qqizta o’zgaruvchi. Bir o’quvchining o’rtacha bahosini hisoblaydigan funksiya yozsak, unga har safar shu ma’lumotlarni qo’lda uzatishimiz kerak. Ma’lumot va u bilan bog’liq harakat tarqoq qoladi.
G’oya: ma’lumot va harakatni birga jamlash
OOP shunday deydi: bir-biriga bog’liq ma’lumot va harakatni bitta “narsa” ichiga jamla. Bu “narsa” — obyekt deyiladi.
O’quvchi obyekti ichida ham ma’lumot (ism, yosh, baholar), ham harakat (o’rtacha bahoni hisoblash) birga turadi. Endi ular tarqoq emas — bir joyda.
Klass va obyekt
OOP ikki tushunchaga tayanadi:
- Klass — obyektning chizmasi (shabloni). U “o’quvchi qanday bo’ladi” degan qolipni belgilaydi.
- Obyekt — shu chizma asosida yasalgan aniq nusxa. Bitta klassdan istagancha obyekt yasash mumkin.
Uy qurilishiga o’xshatsak: klass — bitta chizma, obyektlar — o’sha chizma bo’yicha qurilgan uylar. Chizma bitta, uylar ko’p va har biri mustaqil.
Oquvchi — klass (chizma). aziz va dilnoza — undan yasalgan ikkita
mustaqil obyekt. Har biri o’z ma’lumotini saqlaydi.
Nega OOP kerak
OOP katta dasturlarni tartibli ushlashga yordam beradi:
- Bog’liq narsalar birga turadi — ma’lumot va harakat tarqalmaydi.
- Qayta ishlatish oson — bitta klassdan ko’p obyekt yasaladi.
- Kod real dunyoga o’xshaydi — “o’quvchi”, “mahsulot”, “buyurtma” kabi tushunchalar kodda bevosita aks etadi.
Kichik skriptlar uchun OOP shart emas, lekin dastur o’sgani sari uning foydasi ortadi.
Amaliy mashq
Tarqoq ma’lumotni jamlang:
- Bitta kitob haqidagi ma’lumotni uchta alohida o’zgaruvchida yozing:
kitob_nomi,kitob_muallifi,kitob_yili; - endi ikkinchi kitob qo’shing — yana uchta o’zgaruvchi kerak bo’ldimi?
- shu ma’lumotni bitta lug’atga jamlang;
- o’nta kitob uchun nima qilish kerakligini o’ylab ko’ring;
- qog’ozda yozing: kitob klassida qanday atribut va qanday harakat (metod) bo’lishi kerak?
Bu darsda kod yozmasangiz ham bo’ladi — muammoni his qilish muhimroq.
Qisqacha xulosa
- OOP — bir-biriga bog’liq ma’lumot va harakatni bitta obyekt ichiga jamlash usuli.
- Klass — obyekt yasaladigan chizma; obyekt — shu chizmadan yasalgan aniq nusxa.
- Bitta klassdan istagancha mustaqil obyekt yasash mumkin.
- Python’da ro’yxat, string kabi tanish narsalar ham aslida obyekt.
- OOP dastur kattalashganda kodni tartibli va qayta ishlatiladigan qiladi.
Keyingi darsda klass va obyekt yaratishni —
class, __init__ va self ni batafsil ko’ramiz.