JavaRush /Kurslar /All lectures for UZ purposes /OOPning yana bir tushuntirish (bo'sh bog'lanish, aniq fun...

OOPning yana bir tushuntirish (bo'sh bog'lanish, aniq funksiyalar)

All lectures for UZ purposes
Daraja, Dars
Mavjud

— Salom, Amigo! Senga OOP ishlatishning yana bir afzalliklari haqida gapirmoqchiman. Ko'ryapsanmi – dasturlar ko'proq inshootlarga emas, balki hayvonlarga o'xshaydi. Ularni qurmaydilar, ular o'sadi. Dasturlash — bu doimiy o'zgarishlar. Qurilishda yaxshi reja tuzib, unga qat'iy amal qilishing mumkin. Ammo dasturlashda bunday emas.

Ko'p hollarda o'zing belgilagan usulda nimanidir amalga oshirib bo'lmaydi, va ko'p narsalarni qayta ishlashga to'g'ri keladi. Yana ko'pincha buyurtmachining talablari o'zgaradi.

— Agar loyihaning buyurtmachisi juda aniq spetsifikatsiya bergan bo'lsa-chi?

— Unda vaziyatni vaqt ichida ko'rib chiqing. Mahsulotning muvaffaqiyati buyurtmachiga yangi versiyasini chiqarish istaginga olib keladi, keyin yana va yana. Va albatta, mavjud mahsulotga faqat kichik o'zgarishlar qo'shish kerak bo'ladi. Shuning uchun mahsulot ishlab chiqarish — bu doimiy o'zgarishlar qatori. Faqat vaqt miqyosi har xil. Har yangi versiya haftada bir marta, oyda bir marta yoki har yarim yil chiqishi mumkin.

— Va bu hammasidan qanday xulosa chiqarish mumkin?

— Mahsulotning ichki tuzilishini shunday holatda ushlab turish kerakki, katta (va kichik) o'zgarishlarni minimal qayta ishlovlar bilan kiritish imkonini bersin.

— Va buni qanday amalga oshirish mumkin?

— Biz allaqachon dastur obyektlardan iborat ekanligini va ular bir-birlari bilan o'zaro ta'sir qilishlarini aytgandik. Keling, dasturning barcha obyektlarini taxtaga joylashtiraylik, ularni qalin nuqtalar bilan belgilab. Har bir obyektdan (nuqtadan) u o'zaro ta'sir qiladigan barcha obyektlarga (nuqtalarga) strelka chizib chiqamiz.

Endi biz obyektlarni (nuqtalarni) guruhlarga birlashtiramiz. Agar ular orasidagi aloqalar boshqa nuqtalarga nisbatan ancha intensiv bo'lsa, nuqtalar guruhga birlashtiriladi. Agar nuqtadan chiqqan strelkalar ko'pchiligi o'z guruhi nuqtalariga ketayotgan bo‘lsa, unda bo‘linish to‘g‘ri amalga oshirilgan. Bir guruhdagi nuqtalar kuchli bog'langan, turli guruhdagi nuqtalar esa bo'sh bog'langan deb ataladi.

Bu «bo'sh bog'lanish tamoyili» deb ataladi. Dastur bir necha qismga, ko'pincha qatlamlarga bo'linadi, ularning logikasi ichki qurilmalariga juda bog'liq bo'lib, boshqa qatlam/qismlarga juda zaif bog'liq bo'ladi. Odatda qatlamlar o'rtasidagi o'zaro ta'sir juda reglamenladir. Bir qatlam ikkinchi qatlamga murojaat qilishi mumkin va uning faqat kichik qismini ishlatishi mumkin.

— Huddi «bo'limlarga bo'lish» tamoyili, lekin katta miqyosda?

— Aynan shunday. Bu shuni anglatadiki, biz bo'limni qayta tashkil qilishimiz, uning samaradorligini oshirishimiz, ko'proq odamlarni yollashimiz mumkin, ammo agar biz boshqa bo'limlar bilan o'zaro ta'sir protokollini o'zgartirmasak, barcha amalga oshirilgan o'zgartirishlar mahalliy qoladi. Hech kim qayta o'qitilishi kerak bo‘lmaydi. Barcha tizimni qayta ishlash zarur bo'lib qolmaydi. Har bir bo'lim o'z ichki optimallashuvi bilan shug'ullanishi mumkin, agar umumiy o'zaro ta'sir mexanizmlari muvaffaqiyatli tanlangan bo'lsa.

— Muvaffaqiyatli tanlangan. Agar ular muvaffaqiyatsiz tanlangan bo'lsa nima bo'ladi?

— Unda «o'zgartirish zaxirasi» tezda tugaydi va barcha tizimni qayta ishlash kerak bo'ladi. Bunday ishlarni vaqti-vaqti bilan qilish kerak. Kelajakda nima bo'lishini oldindan aytib bo'lmaydi, lekin bunday qayta ishlovlar sonini minimal darajada kamaytirish mumkin.

— Yaxshi. Bunday bo'linishning foydasi haqida tushundim, bu yerda OOP nima aloqasi bor?

— Bo'limlar tuzilishini va ularning o'zaro ta'sir usulini tanlash – bu «Abstraksiya tamoyili». Dasturlashda u qanday qismlarga bo'lish yaxshiroq ekanligini va bu qismlar qanday o'zaro ta'sir qilishi kerakligini belgilash uchun ishlatiladi. Ushbu tamoyil qabul qilingan qismlarni bo'lish uchun foydalanishga ham mumkin, dasturini alohida sinflarga bo'lguncha.

— Va bu qismlarning ichki tuzilishini yashirish, va boshqa qismlarla o'zaro ta'sirga qat'iy cheklovlar — bu Inkapsulatsiya, shundaymi?

— Aynan. Inkapsulatsiya + Abstraksiya — bu OOPning asosiy toshlari. Yaxshi dastur shu ikki tamoyilga rioya qilishi kerak. Keyinchalik boshqa tamoyillarni ko'rib chiqamiz va ular qanday afzalliklar berishini tushunib olamiz.

— Juda qiziqarli. Sabr bilan kutaman.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION