Inkapsulyatsiyaning ta’rifi
Inkapsulyatsiya(ing. encapsulation, lot. capsula soʻzidan) — informatikada maʼlumotlar va ular bilan ishlaydigan usullarni bir komponentda joylashtirish. Ko'pgina dasturlash tillarini (C++, C#, Java va boshqalar) amalga oshirishda komponentning turli qismlariga kirishni farqlash imkonini beruvchi yashirish mexanizmi mavjud.
Inkapsulyatsiya ko'pincha ob'ektga yo'naltirilgan dasturlash (OOP) uchun eksklyuziv tushuncha sifatida qaraladi, lekin aslida u boshqalarda keng tarqalgan (qarang: yozuv subtiplari va yozuvlar va variant polimorfizmi). OOPda inkapsulyatsiya ma'lumotlarni abstraktsiyalash printsipi bilan chambarchas bog'liq (mavhum ma'lumotlar turlari bilan adashtirmaslik kerak, ularning amalga oshirilishi inkapsulyatsiyani ta'minlaydi, lekin boshqa xarakterga ega). Bu, xususan, turli manbalarda terminologiyadagi farqlarni keltirib chiqaradi. C++ yoki Java hamjamiyatida yashirmasdan inkapsulyatsiya odatda past deb hisoblanadi. Biroq, ba'zi tillar (masalan, Smalltalk, Python) inkapsulyatsiyani amalga oshiradi, ammo printsipial jihatdan yashirish imkoniyatini ta'minlamaydi. Boshqalar (Standard ML, OCaml) bu tushunchalarni qat'iy ravishda ortogonal sifatida ajratib turadi va ularni semantik jihatdan boshqacha shaklda taqdim etadi (ML moduli tilida yashirishga qarang).
Voqealarga asoslangan dasturlash (keyingi o'rinlarda SOP deb yuritiladi) dasturlash paradigmasi bo'lib, unda dasturning bajarilishi hodisalar - foydalanuvchi harakatlari (klaviatura, sichqoncha, sensorli ekran), boshqa dasturlar va oqimlardan olingan xabarlar, operatsion tizim hodisalari (masalan, tarmoq paketining kelishi).
SOP, shuningdek, dasturning asosiy tsikli kodda (odatda dasturning asosiy funktsiyasida) aniq identifikatsiya qilingan kompyuter dasturini qurish usuli sifatida belgilanishi mumkin, uning tanasi ikki qismdan iborat: hodisalarni olish va hodisani qayta ishlash.
Qoidaga ko'ra, haqiqiy vazifalarda voqea ishlovchisini uzoq vaqt davomida ishga tushirish mumkin emas, chunki bu holda dastur boshqa hodisalarga javob bera olmaydi. Shu munosabat bilan hodisalarga asoslangan dasturlarni yozishda ko'pincha avtomatik dasturlash qo'llaniladi.
Qo'llash doirasi. Voqealarga asoslangan dasturlash odatda uchta holatda qo'llaniladi:
Foydalanuvchi interfeyslarini yaratishda (shu jumladan grafik);
Server ilovalarini yaratishda, agar u yoki bu sabablarga ko'ra, xizmat
ko'rsatish jarayonlarini yaratish istalmagan bo'lsa;
Ko'p ob'ektlar boshqariladigan o'yinlarni dasturlashda.
Server ilovalarida dastur. Voqealarga asoslangan dasturlash server ilovalarida bir vaqtning o'zida 10 000 yoki undan ko'p ulanishlarni kengaytirish muammosini hal qilish uchun ishlatiladi.
"Har bir ulanish uchun bitta ip" modeliga muvofiq qurilgan serverlarda miqyoslash muammolari quyidagi sabablarga ko'ra yuzaga keladi:
Bitta vazifani (vazifa holati segmenti, stek) tavsiflash uchun zarur bo'lgan operatsion tizimning ma'lumotlar tuzilmalari uchun qo'shimcha xarajatlar juda yuqori;
Kontekstni o'zgartirish uchun yuk juda yuqori. Serverlarning oqimli modelidan voz kechishning falsafiy asosi Alan Koksning quyidagi bayonoti bo'lishi mumkin: “Kompyuter - bu davlat mashinasi. Oqimli dasturlash chekli holat mashinalarini qanday dasturlashni bilmaganlar uchun zarurdir”.
Voqealarga yo'naltirilgan dasturlashda server ilovasi bir vaqtning o'zida ko'plab identifikatorlardan hodisalarni qabul qiluvchi tizim chaqiruvida amalga oshiriladi (multiplekslash). Voqealarni boshqarish faqat bloklanmaydigan kiritish-chiqarish operatsiyalaridan foydalanadi, shuning uchun hech qanday tutqich boshqa tutqichlardagi voqealarni qayta ishlashga xalaqit bermaydi.
Multiplekslash. Multipleks ulanishlar uchun quyidagi operatsion tizim vositalaridan foydalanish mumkin:
select (ko'pchilik UNIX tizimlari). Deskriptorlar ro'yxati bitmap sifatida ko'rsatilganligi sababli yaxshi masshtablashmaydi;
poll va epoll (Linux)
Kqueue (FreeBSD);
/dev/poll (Solaris);
IO completion port porti (Windows);
POSIX AIO hozirda faqat disk kiritish-chiqarish;
Disk kiritish/chiqarish operatsiyalari uchun io submit va eventfd.
Ish stoli ilovalarida dastur. Zamonaviy dasturlash tillarida hodisalar va hodisalarni ishlovchilar grafik foydalanuvchi interfeysini amalga oshirishda markaziy o'rinni egallaydi. Misol uchun, dasturning sichqoncha hodisalari bilan o'zaro ta'sirini ko'rib chiqing. Sichqonchaning o'ng tugmachasini bosish operatsion tizim ichida ma'lum bir protsedurani bajaradigan tizim uzilishini ishga tushiradi. Ushbu protsedura sichqoncha kursori ostidagi oynani qidiradi. Agar oyna topilsa, bu hodisa oynaning xabarlar navbatiga yuboriladi. Bundan tashqari, oyna turiga qarab, qo'shimcha hodisalar yaratilishi mumkin. Misol uchun, agar oyna tugma bo'lsa (Windowsda barcha grafik elementlar oynadir), u holda tugmani bosish hodisasi qo'shimcha ravishda hosil bo'ladi. Oxirgi hodisaning farqi shundaki, u mavhumroq, ya'ni u kursorning koordinatalarini o'z ichiga olmaydi, shunchaki tugma bosilganligini aytadi.
Hodisa ishlov beruvchisi shunday ko'rinishi mumkin (misol sifatida C# dan foydalanish):
Do'stlaringiz bilan baham: |