OOP NIMA?
Object Oriented Dasturash va uning tamoyillari bilan tanishamiz
KIRISH
Dasturlashni oโrganar ekanmiz, albatta object oriented programming (OOP) yaโni obyektga yoโnaltiriglan dasturlash tushunchasiga kelamiz. Koโpchilik uchun bu bosqich biroz tushunarsiz va murakkabdek tuyuladi. Aslida unday emas. Keling bugun object oriented programming va unga tegishli tamoyillar haqida gaplashamiz.
KLASSIK YOHUD CHIZIQLI DASTURLASH
OOPni tushunish uchun avval klassik dasturlashni koโraylik. Gap shundaki ilk kompyuterlar va dasturlar matematik muammolarni hal qilishga qaratilgan. Bunday dasturlar foydalanuvchidan biror maโlumotlarni qabul qilib olgan, va qatiโiy ketma-ketlik yaโni tartibga amal qilgan holda turli arifmetik amallarni bajarib, dastur soโngida foydalanuvchi kutgan natijani qaytargan. Shuning uchun ham bunday dasturlar chiziqli yoki tartibli dasturlar deb ataladi.

Siz ham dasturlashga ilk qadam qoโyganingizda mana shunday chiziqli dasturlarni yozishni oโrganishdan boshlaysiz. Sizning dasturingiz bir nechta oโzgaruvchilar va funksiyalardan iborat boโladi. Bu oโzgaruvchilar va funksiyalar maโlum ketma-ketlikda bir biri bilan munosabatga kiradi va dastur yakunida siz kutgan natijani beradi.

Dastur kattalashgani sari oโzgaruvchilar va funksiyalar soni ortib boradi. Ular oโrtasidagi munosabatlar ham chigallashib, kodingiz murakkab va tushunishga qiyin boโlib ketadi. Dasturlash jarayonida bitta funksiyaga oโzgartirish kiritishingiz esa, unga boโgliq boshqa funksiylaraning ishdan chiqishiga va dasturingiz xato natija berishiga olib kelishi ham mumkin.

Chiziqli dasturlarning afzalliklari :
Dasturlashni oโrganish uchun qulay
Sodda va tushunarli kod
Dastur algoritmini kuzatish oson
Dastur xotirada kamroq joy egallaydi
Chiziqli dasturlarning kamchiliklari :
Murakkab dasturlarni chziqili usulda yozish qiyin (ilojsiz)
Bir dastur uchun yozilgan koddan boshqa dasturda qayta foydalanib boโlmaydi
Dastur ichidagi maโlumotlar (oโzgaruvchilar) barcha funksiyalar uchun ochiq
ZAMONAVIY DASTURLAR CHIZIQLI EMAS
Vaqt oโtib dasturlarga qoโyilgan talablar murakkablashib borgani sababli, chiziqli dasturlash tamoyili zamon talabiga javob bermay qoโydi va 1970 yillarda object oriented programming tamoyili olgโa surila boshlandi.
OBYEKT NIMA?
Object oriented dasturlashda oโzaro boโgliq boโlgan oโzgaruvchilar va funksiyalar bitta konteynerga jamlanadi va bunday konteynerlar obyekt deb ataladi. Bir obyektga tegishli oโzgaruvchilar uning xususiyatlari, unga tegishli funksiyalar esa metodlari deb ataladi.

Keling misol tariqasida avtomobil degan obyektni koโramiz. Avtomobilning modeli, rangi va narhi uning xususiyatlari. Avtomobilga tegishli boโlgan start(), stop() va tezlashish() kabi amallar esa uning metodlari deyiladi.

Agar real dasturdan misol keltiradigan boโlsak, istalgan dastur ichidagi tugma bu obyekt. Uning shakli, rangi va matni esa xususiyatlari boโladi. Tugma ustida bajariladigan amallar tugmaning metodlari deyiladi. Misol uchun tugmani bosish, uzoq bosish, ustiga sichqonchani olib borish va hokazo.

Object oriented dasturlar onโlab balki yuzlab obyektlardan iborat boโladi va bunday dasturlar uchun dastur boshi yoki oxiri degan tushunchalar nisbiy boโladi.
Object oriented dasturlar bajarilishida qatโiy ketma-ketlikka amal qilmaydi. Foydalanuvchi istlagan obyektga murojat qilishi, uning ustida turli amallar bajarishi mumkin. Oโz navbatida bitta obyektga murojat ortidan boshqa obyektlar ham faollashishi mumkin.

Misol uchun, mobil ilovalarda obyektlar bu dastur ichidagi tugmalar, matnlar, rasmlar va boshqa elementlardir. Foydalanuvchi istalgan tugmani bosishi, istalgan matnni ajratib olishi va boshqa amallarni istalgan tartibda bajarishi mumkin. Bunda bitta tugma (yaโni obyektni) bosish bulan boshqa obyekt (masalan rasm) oโzgarishi mumkin.
Zamonaviy kompyuter oโyinlari ham minglab obyektlardan iborat. Foydalanuvchi esa virtual oโyin olamida erkin harakat qilishi, istlagan tarafga yurishi, istalgan vaqtda turli obyektlar bilan turli amallar bajarishi mumkin.
KLASS NIMA?
Object oriented programming haqida gaplashar ekanmiz uning fundamental tushunchalaridan biri - klass haqida gapirib oโtmaslikning iloji yoโq . Klass bu obyekt yaratish uchun shablon yoki qolipdir. Bitta klassdan biz istalgancha nusxa olishimiz va yangi obyektlar yaratishimiz mumkin. Demak obyekt bu biror klassning xususiy koโrinishi. Odatda klasslarning nomi oโzgarmas, undan yaratilgan obyektlar esa istalgancha nomlanishi mumkin.

Avval aytganimizdek, dasturimiz yuzlab obyektlardan iborat boโlishi mumkin. Klasslar esa bizga obyektlarni yaratishni yengillashtiradi.
Bu xoh dastur interfeysidagi oโnlab turli hil tugmalar boโlsin, yoki kompyuter oโyinidagi qahramonlar boโlsin. Har bir tugma yoki oโyin qahramoni va uning harakatlarini qayta-qayta yozmasdan bir martta yaratilgan klassdan nusxa olib, oโnlab obyektlarni yaratishimiz mumkin.

OOP TAMOYILLARI
INKAPSULYATSIYA
Biz object oriented dasturlash haqida gapira turib, maโlum bir obyektga tegishli boโlgan xususiyatlar va metodlarni bitta konteynerga joylaymiz dedik. Bu jarayon inkapsulyatsiya (yaโni kapsulaga solish) deb ataladi. Inkapsulyatsiya bizga klasslar yaratishga va keyinchalik bu klasslardan boshqa obyektlarni yaratishga yordam beradi.
ABSTRAKTSIYA
Abstraktsiya yordamida biz kodimizning ichki tuzilishini yashiramiz. Yaโni, tashqaridan qaraganda obyektimiz 2 ta parameter va 2 ta metoddan iborat boโlishi mumkin, lekin obyekt toโgโri ishlashi uchun uning ichida oโnlab boshqa oโzgaruvchilar va funksiyalar yashirin boโladi. Klassdan foydalanishda esa uning ichki tuzilishi va qanday ishlashini bilish talab qilinmaydi. Bu oโzimizga ham boshqa dasturchilarga ham bu klassdan foydalanishda qulayliklar yaratadi.

VORISLIK
Dasturlash jarayonida biz bir klassdan boshqa klasslar yaratishimiz mumkin. Misol uchun bizda transport klassi bor, biz bu klassdan qoโshimcha Avtomobil, avtobus, kema, poyezd kabi klasslarni yaratishimiz mumkin. Bunda bizning asl klassimiz ota yoki super klass deb ataladi, undan yaratilgan klasslar esa voris klasslar deyiladi.

Voris klasslar ota klassning baโzi yoki barcha xususiyatlari va metodlariga ega boโladi.
POLIMORFIZM
Voris klass super klassdan oโzlashtirilgan metodning nomini saqlagan holda, uning ishlashini oโzgartirishiga polimorfizm deyiladi.
Keling bir misol koโraylik. Biz kompyuter oโyini yaratish jarayonida oโyin Qahramon uchun super klass yaratamiz.
Qahramon bir nechta xususiyatlarga va metodlarga ega. Jumladan attack() yaโni xujum qilish metodi, qahramonni xujum qilishga undaydi.
Endi biz bu superklassdan boshqa voris klasslarni yaratamiz.

Birinchi qahramonimiz Qilichboz va bu qahramon xujum qilganda qilich bilan xujum qiladi.
Ikkinchi qahramonimiz esa Jangchi, va u qurolsiz boโlgani sababi qoโl va oyoqlari bilan xujum qiladi.
Uchunchi qahramonimiz pistolet bilan,
Oxrigisi esa kamon va yoylar bilan qurollangan.
Toโrttala qahramonimiz ham superklassdan attack() metodini meros oladi, lekin bu metodni biz har bir qahramon uchun turli koโrinishda yozishimiz va talqin qilishimiz mumkin. Bu esa oโz navbatida bizni turli qahramonlar va turli xujum turlari uchun alohida metodlar yozishdan qutqaradi.
Mana shular OOPning asosiy tamoyillari ekan.
OOP AFZALLIKLARI VA KAMCHILIKLARI
Keling darsimiz yakunida OOPning afzalliklari va kamchiliklariga ham toโxtalib oโtsak.
Afzalliklari
Parallel dasturlash โ bir loyihaning turli qismlari bir vaqtda yaratilishi mumkin
Vorislik tamoyili klasslardan qayta foydanalish imkonini beradi
Polimorfizm tamoyili klasslarni moslashuvchan qiladi
Klasslardan boshqa dastur va loyihalarda qayta-qayta foydalanish mumkin
Kamchiliklari
Dasturlashga yangi qadam qoโyganlar uchun biroz tushunarsiz
Har doim ham samarali emas
Baโzida dasturimizni haddan tashqari murakkablashtirib yuborishi mumkin
OOP bilan qisqacha tanishuvimiz shundan iborat edi. Endi esa Python OOP bilan tanishuvni boshlasak ham bo'ladi.
Last updated
Was this helpful?