3-Ma`ruza: Obyektga yo`naltirilgan dasturlash tillari Reja: Obyektga Yo`naltirilgan yondashuv tarixi



Yüklə 41,12 Kb.
səhifə4/10
tarix17.04.2023
ölçüsü41,12 Kb.
#105960
1   2   3   4   5   6   7   8   9   10
3-maruza

Inkapsulatsiyalash nima uchun kerak?
Inkapsulatsiyalashdan to`g`ri foydalanish tufayli obyektlar bilan o`zgartiriladigan komponentlar (tarkibiy qismlar) dek muomala qilish mumkin. Boshqa obyekt sizning obyektingizdan foydalana olishi uchun u sizning obyektingizning ommaviy interfeysidan qanday foydalanish kerakligini bilishi kifoya. Bunday mustaqillik uchta muhim afzallikka ega. Mustaqilligi tufayli obyektdan takroran foydalanish mumkin. Inkapsulatsiyalash puxta amalga oshirilgan bo`lsa, obyektlar ma`lum bir programmaga bog`lanib qolgan bo`lmaydi. Ulardan imkoni bo`lgan hamma yerda foydalanish mumkin bo`ladi. Obyektdan boshqa biron o`rinda foydalanish uchun uning interfeysidan foydalanib qo`ya qolish kifoya.

    1. Inkapsulatsiyalash tufayli obyektda boshqa obyektlar uchun ko`rinmas bo`lgan o`zgarishlarni amalga oshirish mumkin. Agar interfeys o`zgartirilmasa, barcha o`zgarishlar obyektdan foydalana- yotganlar uchun ko`rinmas bo`ladi. Inkapsulatsiyalash komponentni yaxshilash, amalga oshirish samaradorligini ta`minlash, xatolarni bartaraf etish imkonini beradi, yana bularning hammasi dasturning boshqa obyektlariga ta`sir ko`rsatmaydi. Obyektdan foydalanuvchilar ularda amalga oshirilayotgan barcha o`zgarishlardan avtomatik tarzda yutadilar.

    2. Himoyalangan obyektdan foydalanishda obyekt va dasturning boshqa qismi o`rtasida biror bir ko`zda tutilmagan o`zaro aloqalar bo`lishi mumkin emas. Agar obyekt boshqalardan ajratilgan bo`lsa, bu holda u dasturning boshqa qismi bilan faqat o`z interfeysi orqali aloqaga kirishishi mumkin.

Shunday qilib, inkapsulatsiyalash yordamida modulli dasturlarni yaratish mumkin. Samarali inkapsulatsiyalashning quyidagicha uchta o`ziga xos belgisi mavjud:

  • abstraksiya;

  • joriy qilishning berkitilganligi;

  • mas`uliyatning bo`linganligi.

Abstraksiya
Garchi obyektga Yo`naltirilgan tillar inkapsulatsiyalashdan foy- dalanishga yordam bersa-da, biroq ular inkapsulatsiyalashni kafo- latlamaydi. Tobe va ishonchsiz kodni yaratib qo`yish oson. Samarali inkapsulatsiyalash — sinchkovlik bilan ishlab chiqish hamda abstraksiya va tajribadan foydalanish natijasi. Inkapsulatsiyalashdan samarali foydalanish uchun dasturni ishlab chiqishda avval abstraksiyadan va uning bilan bog`liq konsepsiyalardan foydalanishni o`rganib olish lozim.
Abastraksiya murakkab masalani soddalashtirish jarayonidir. Muayyan masalani yechishga kirishar ekansiz, siz barcha detallarni hisobga olishga urinmaysiz, balki yechimni osonlashtiradiganlarini tanlab olasiz.
Aytaylik, siz yo`l harakati modelini tuzishingiz kerak. Shunisi ayonki, bu o`rinda siz svetoforlar, mashinalar, shosselar, bir tomon- lama va ikki tomonlama ko`chalar, ob-havo sharoitlari va h.k. sinflarini yaratasiz. Ushbu elementlarning har biri transport harakatiga ta`sir ko`rsatadi. Biroq bu o`rinda xasharotlar va qushlar ham yo`lda paydo bo`lishi mumkin bo`lsa-da, siz ularning modelini yaratmaysiz. Inchunin, siz mashinalar markalarini ham ajratib ko`rsatmaysiz. Siz haqiqiy olamni soddalashtirasiz hamda uning faqat asosiy elementlaridan foydalanasiz. Mashina — modelning muhim detali, biroq bu Kadillakmi yoki boshqa biron markadagi mashinami, yo`l harakati modeli uchun bu detallar ortiqcha.
Abstraksiyaning ikkita afzal jihati bor. Birinchidan, u masala yechimini soddalashtiradi. Muhimi yana shundaki, abstraksiya tufayli dasturiy ta`minot komponentlaridan takroran foydalanish mumkin. Takroran qo`llanadigan komponentlarni yaratishda ular odatda g`oyat ixtisoslashadi. Ya`ni komponentlar biror bir ma`lum masala yechimiga Yo`naltirilgani, yana ular keraksiz o`zaro bog`liqlikda bo`lgani sababli dastur fragmentining boshqa biron o`rinda takroran qo`llanishi qiyinlashadi. Imkoni boricha bir qator masalalarni yechishga qaratilgan obyektlar yaratishga harakat qiling. Abstraksiya bitta masala yechimidan ushbu sohadagi boshqa masalalarni ham yechishda foydalanish imkonini beradi.
Quyidagi ikkita misolni ko`rib chiqaylik:
Birinchi misol: bank kassiriga navbatda turgan odamlarni tasavvur qiling. Kassir bo`shaganda, uning darchasiga navbatda turgan birinchi mijoz yaqinlashadi. Shunday qilib, navbatdagi hamma odam birin- ketin kassir darchasi tomon suriladi. Navbatda turganlar «birinchi kelganga birinchi bo`lib xizmat ko`rsatish» algoritmi bo`yicha surilib boradi.
Ikkinchi misol: gazakxonada gamburgerli konveyerni ko`rib chi­qaylik. Navbatdagi yangi gamburger konveyerga kelib tushganda, u gamburgerlar qatoridagi oxirgi gamburger yonidan joy oladi. Shuning uchun konveyerdan olingan gamburger u yerda boshqalaridan ko`proq vaqt turib qolgan bo`ladi. Restoranlar «birinchi kelganga birinchi bo`lib xizmat ko`rsatish» algoritmi bo`yicha ishlaydi.
Garchi bu misollar butkul turlicha bo`lsa-da, ularda qandaydir umumiy tamoyil qo`llangan bo`lib, undan boshqa vaziyatlarda ham foydalanish mumkin. Boshqacha qilib aytganda, siz abstraksiyaga kelasiz.
Bu misollarning har ikkalasida ham «birinchi kelganga birinchi bo`lib xizmat ko`rsatish» algoritmi qo`llangan. Bu o`rinda navbat elementi nimani bildirishi muhim emas. Haqiqatda ushbu element navbat oxiriga kelib qo`shilishi hamda navbatni uning boshiga yetganda tark etishigina muhimdir.
Abstraksiya yordamida bir marta navbatni yaratib, keyinchalik uni boshqa dasturlarni yozishda qo`llash mumkinki, bu dasturlarda elementlarga «birinchi kelganga birinchi bo`lib xizmat ko`rsatish» algoritmi bo`yicha ishlov beriladi.
Samarali abstraksiyani bajarish uchun bir nechta qoidalarni ifodalash mumkin:

  • Qandaydir aniq holatni emas, umumiy holatni olib qarang.

  • Turli masalalarga xos bo`lgan umumiy jihatni izlab toping. Shunchaki alohida hodisani emas, asosiy tamoyilni ko`ra bilishga harakat qiling.

  • Garchi abstraksiya g`oyat qimmatli bo`lsa-da, biroq eng yechimli masalani yodingizdan chiqarmang.

  • Abstraksiya hammavaqt ham ochiq-oydin emas. Masalani yechar ekansiz, siz birinchi, ikkinchi va, hatto, uchinchi marta ham abstraksiyani tanib ololmasligingiz mumkin.

  • Muvaffaqiyatsizlikka tayyor turing. Amalda har bir vaziyat uchun to`g`ri keladigan abstrakt dasturni yozish mumkin emas.

Abstraksiyani so`nggi maqsad sifatida emas, balki unga erishish yo`lidagi vosita sifatida olib qarash kerak. Muayyan hollarda abs­traksiyani qo`llash kerak emas. Agar evristik qoida mavjud bo`lib, unga ko`ra, siz biror bir masalani o`zaro o`xshash usullar bilan kamida uch marta yechgan bo`lsangiz, abstraksiyani faqat shunday masala­larga qo`llash tavsiya qilinadi.
Abstrakt komponentni takroran qo`llash osonroq, chunki u biror bir bitta o`ziga xos masalani yechishga emas, balki qator masalalarni yechishga Yo`naltirilgan. Biroq bu hol komponentdan shunchaki tak­roran foydalanishdan ko`ra ko`proq inkapsulatsiyalashga tegishli. Ichki detallarni yashirishga o`rganish g`oyat muhimdir. Ma`lumotlarning abstrakt turlarini qo`llash inkapsulatsiyalashni samarali qo`llashga imkon beradi.

Yüklə 41,12 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə