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.

Chiziqli dasturlash

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.

Chiziqli dastur tarkibi va algoritmi

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 dastur murakkablashib ketishi 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.

OBYEKT

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.

AVTOMOBIL obyekti

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.

Dastur ichidagi Tugma ham aslida obyekt

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.

Dasturlar o'nlab obyektlardan iborat bo'ladi

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.

Klass va obyektlar

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.

Yagona klassdan yaratilgan obyketlar turli ko'rinishda bo'lishi 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.

Abstraktsiya

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.

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.

Superklass va voris klasslar
  1. Birinchi qahramonimiz Qilichboz va bu qahramon xujum qilganda qilich bilan xujum qiladi.

  2. Ikkinchi qahramonimiz esa Jangchi, va u qurolsiz boโ€™lgani sababi qoโ€™l va oyoqlari bilan xujum qiladi.

  3. Uchunchi qahramonimiz pistolet bilan,

  4. 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?