Enkapsulyatsiya va meros
Dizayn naqshlari mualliflari meros va kapsula o'rtasidagi ziddiyatni uzoq vaqt
davomida muhokama qilishadi va o'z tajribalarida dizaynerlar merosdan ortiqcha
foydalanishni ta'kidlaydilar. Ularning ta'kidlashicha, meros subklassni ota-onasini
amalga oshirish tafsilotlariga ta'sir qilishini hisobga olgan holda, meros ko'pincha
kapsulani buzadi.Yo-yo muammosi bilan tavsiflanganidek, merosdan ortiqcha
foydalanish va shuning uchun kapsulalash juda murakkab va disk raskadrovka qiyin
bo'lishi mumkin.(Ma'lumotni yashirish)
Inkapsulyatsiya "ma'lumotlar a'zolari va a'zo funktsiyalarini yashirish uchun
ishlatilishi mumkin" degan ta'rifga binoan, ob'ektning ichki ko'rinishi odatda ob'ekt
ta'rifidan tashqarida yashiringan. Odatda, faqat ob'ektning o'ziga xos usullari uning
maydonlarini bevosita tekshirishi yoki boshqarishi mumkin. Ob'ektning ichki qismini
yashirish, foydalanuvchilarning tarkibiy qismlarining ichki ma'lumotlarini yaroqsiz
yoki mos kelmaydigan holatga qo'yishiga yo'l qo'ymaslik orqali uning yaxlitligini
himoya qiladi. Enkapsulyatsiyaning taxminiy foydasi shundaki, u tizimning
murakkabligini kamaytirishi va shu bilan ishlab chiquvchiga dasturiy ta'minot
tarkibiy qismlari o'rtasidagi o'zaro bog'liqlikni cheklashiga imkon berish orqali
mustahkamlikni oshirishi mumkin.
Smalltalk va Ruby singari ba'zi tillar faqat ob'ekt usullari orqali kirishga ruxsat
beradi, ammo boshqalarning aksariyati (masalan, C ++, C #, Delphi yoki Java)
dasturchiga yashiringan narsalarni boshqarish darajasini taklif qiladi, odatda ochiq va
shaxsiy kabi kalit so'zlar orqali. ISO C ++ standarti "kirish spetsifikatorlari" deb
nomlangan himoyalangan, xususiy va jamoatchilikni anglatadi va ular "hech qanday
ma'lumot yashirmaydi". Axborotni yashirish, sarlavha fayli orqali bog'langan manba
kodining kompilyatsiya qilingan versiyasini taqdim etish orqali amalga oshiriladi.
Deyarli har doim bunday himoyani bekor qilishning bir usuli bor - odatda aks
ettirish API (Ruby, Java, C # va boshqalar) orqali, ba'zida ismlarni boshqarish
(Python) mexanizmi yoki C ++ dagi do'st kabi maxsus kalit so'zlardan foydalanish.
(Ma'lumotlar maydonlarini cheklash)
C ++, C #, Java, PHP, Swift va Delphi kabi tillar ma'lumotlar maydonlariga
kirishni cheklash usullarini taklif etadi.
Quyida shaxsiy kalit so'z yordamida ma'lumotlar maydoniga kirishni qanday
cheklash mumkinligini ko'rsatadigan C # misolida keltirilgan:
Do'stlaringiz bilan baham: |