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



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


3-Ma`ruza: Obyektga yo`naltirilgan dasturlash tillari


Reja:

  1. Obyektga Yo`naltirilgan yondashuv tarixi

  2. Obyektga Yo`naltirilgan yondashuvning afzalliklari va maqsadlari

  3. Obyektga Yo`naltirilgan yondashuvning uch tamoyili

Obyektga Yo`naltirilgan yondashuv (OYD) bir kunda o`ylab topilgan emas. Uning paydo bo`lishi dasturiy ta`minotning tabiiy rivojidagi navbatdagi pog`ona, xolos. Vaqt o`tishi bilan qanday uslublar ishlash uchun qulay, qaysinisi noqulay ekanini aniqlash oson bo`lib bordi. OYD eng muvaffaqiyatli, vaqt sinovidan o`tgan uslublarni o`zida mujassam etadi.


Dastlab dasturlash anchayin boshqotirma ixtiro bo`lib, u dasturchilarga dasturlarni kommutatsiya bloki orqali kompyuterning asosiy xotirasiga to`g`ridan-to`g`ri kiritish imkonini berdi. Dasturlar mashina tillarida ikkilik tasavvurda yozilar edi. Dasturlarni mashina tilida yozishda tez-tez xatolarga yo`l qo`yilar, kodni kuzatib borish amalda deyarli mumkin emas edi. Bundan tashqari, mashina kodlaridagi dastur tushunish uchun g`oyat murakkab edi.
Vaqt o`tishi bilan kompyuterlar tobora kengroq qo`llana boshlandi hamda yuqoriroq darajadagi protsedura tillari paydo bo`ldi. Bularning dastlabkisi FORTRAN tili edi. Biroq obyektga Yo`naltirilgan yondashuv rivojiga asosiy ta`sir keyinroq paydo bo`lgan. Protsedura tillari dasturchiga axborotga ishlov berish dasturini pastroq darajadagi bir nechta protseduraga bo`lib tashlash imkonini beradi. Pastroq darajadagi bunday protseduralar dasturning umumiy tuzilmasini bel- gilab beradi. Ushbu protseduralarga izchil murojaatlar protsedura- lardan tashkil topgan dasturlarning bajarilishini boshqaradi.
Dasturlashning bu yangi paradigmasi mashina tilida dasturlash paradigmasiga nisbatan ancha ilg`or bo`lib, unga tuzilmalashtirish- ning asosiy vositasi bo`lgan protseduralar qo`shilgan edi. Maydaroq funksiyalarni nafaqat tushunish, balki sozlash ham osonroq kechadi. Biroq, boshqa tomondan, protsedurali dasturlash koddan takroran foydalanish imkonini cheklab qo`yadi. Buning ustiga dasturchilar tez-tez «makaron» dasturlar ham yozib turishganki, bu dasturlarni bajarish likopdagi spagetti uyumini ajratishga o`xshab ketar edi. Va, nihoyat, shu narsa aniq bo`ldiki, protsedurali dasturlash usullari bilan dasturlarni ishlab chiqishda diqqatni ma`lumotlarga qaratishning o`zi muammolarni keltirib chiqarar ekan. Chunki ma`lumotlar va protsedura ajralgan, ma`lumotlar inkapsulatsiyalanmagan. Bu nimaga olib keladi? Bu har bir protsedura ma`lumotlarni nima qilish kerakligini va ular qayerda joylashganini bilmog`i lozim bo`ladi. Agar protsedura o`zini yomon tutsa-yu, ma`lumotlar ustidan noto`g`ri amallarni bajarsa, u ma`lumotlarni buzib qo`yishi mumkin. Har bir protsedura ma`lumotlarga kirish usullarini dasturlashi lozim bo`lganligi tufayli, ma`lumotlar taqdimotining o`zgarishi dasturning ushbu kirish amalga oshirilayotgan barcha o`rinlarining o`zgarishiga olib kelar edi. Shunday qilib, hatto eng kichik to`g`rilash ham butun dasturda qator o`zgarish- lar sodir bo`lishiga olib kelar edi.
Modulli dasturlashda, masalan, Modula 2 kabi tilda protsedurali dasturlashda topilgan ayrim kamchiliklarni bartaraf etishga urinib ko`rildi. Modulli dasturlash dasturni bir necha tarkibiy bo`laklarga, yoki, boshqacha qilib aytganda, modullarga bo`lib tashlaydi. Agar protsedurali dasturlash ma`lumotlar va protseduralarni bo`lib tashlasa, modulli dasturlash, undan farqli o`laroq, ularni birlashtiradi. Modul ma`lumotlarning o`zidan hamda ma`lumotlarga ishlov beradigan protseduralardan iborat. Dasturning boshqa qismlariga moduldan foydalanish kerak bo`lib qolsa, ular modul interfeysiga murojaat etib qo`ya qoladi. Modullar barcha ichki axborotni dasturning boshqa qismlarida yashiradi.
Biroq modulli dasturlash ham kamchiliklardan xoli emas. Modullar kengaymas bo`ladi, bu degani kodga bevosita kirishsiz hamda uni to`g`ridan-to`g`ri o`zgartirmay turib modulni qadamma-qadam o`zgartirish mumkin emas. Bundan tashqari, bitta modulni ishlab chiqishda, uning funksiyalarini boshqasiga o`tkazmay (delegat qilmay) turib boshqasidan foydalanib
bo`lmaydi. Yana garchi modulda turni belgilab bo`lsa-da, bir modul boshqasida belgilangan turdan foydalana olmaydi.
Modulli va protsedurali dasturlash tillarida tuzilmalashtirilgan va tuzilmalashtirilmagan ma`lumotlar o`z «tur»iga ega. Biroq turni kengaytirish usuli, agar «agregatlash» deb ataluvchi usul yordamida boshqa turlarni yaratishni hisobga olmaganda, mavjud emas.
Va, nihoyat, modulli dasturlash — bu yana protseduraga Yo`naltirilgan gibridli sxema bo`lib, unga amal qilishda dastur bir necha protseduralarga bo`linadi. Biroq endilikda protseduralar ishlov berilmagan ma`lumotlar ustida amallarni bajarmaydi, balki modullarni boshqaradi.
Obyektga Yo`naltirilgan dasturlash (OYD) modulli dasturlashdan keyingi mantiqiy pog`onani egallaydi, u modulga nasldan naslga o`tishni va polimorfizmni qo`shadi. Dasturchi OYD dan foydalanar ekan, dasturni bir qator oliy darajali obyektlarga bo`lish yo`li bilan tizimlashtiradi. Har bir obyekt hal qilinayotgan muammoning ma`- lum bir tomonini modellashtiradi. OYD endilikda dasturni bajarish jarayonini boshqarish uchun dasturchi diqqatini protseduralarni ketma-ketlikda chaqirib olish ro`yxatini tuzib o`tirishga qaratmaydi. Buning o`rniga obyektlar o`zaro aloqada bo`ladi. OYD yordamida ishlab chiqilgan dastur hal qilinayotgan muammoning amaldagi modeli bo`lib xizmat qiladi.
Dasturga obyektlar atamalari bilan ta`rif berish dasturiy ta`minotni ishlab chiqishning eng tushunarli usulidir. Obyektlar hamma narsani obyekt nima qilayotgani nuqtayi nazaridan idrok etishga, ya`ni uning xatti-harakatlarini xayolan modellashtirishga majbur qiladi. Shu tufayli obyektga yondashishda u dasturning bajarilishi jarayonida qanday ishlatiladi degan nuqtayi nazardan biroz e`tiborni chalg`itishi mumkin. Shunday qilib, dasturni yozish jarayonida haqiqiy dunyoning tabiiy atamalaridan foydalanish mumkin. Dasturni alohida protseduralar va ma`lumotlar shaklida (kompyuter dunyosi atamalarida) qurish o`rniga obyektlardan iborat dastur qurish mumkin. Obyektlar otlar, fe`llar va sifatlar yordamida haqiqiy dunyoni dasturda modellashti­rishga imkon beradi. Joriy qilish (realizatsiya) xatti-harakatlar qanday bajarilayotganini belgilaydi. Dasturlash atamalarida joriy qilish — bu dasturiy kod.
Yechilayotgan masala atamalari bilan fikrlab, joriy qilishning mayda-chuyda detallarida o`ralashib qolish xavfidan qochish mumkin. Albatta, ayrim oliy darajadagi obyektlar kompyuter bilan aloqa qilishda past darajadagi, mashinaga Yo`naltirilgan usullardan foydalanishi lozim. Biroq obyekt bu aloqani tizimning boshqa qismlaridan izolatsiya qiladi.
Obyekt dastur konstruksiyasi bo`lib, unda holat va xatti-harakat inkapsulatsiyalangan bo`ladi. Obyekt holati bu ichki obyekt o`zgaruv- chanlari qiymatlarining yig`indisidir.
Ichki o`zgaruvchan deb obyekt ichida saqlanadigan qiymatga aytiladi. Mohiyat-e`tibori bilan obyekt bu sinfning ekzemplyari (nusxala- ridan biri)dir.
OYD, haqiqiy dunyo kabi, obyektlardan tashkil topadi. Obyektga Yo`naltirilgan sof dasturlash tilida eng dastlabki, bazaviy, butun, mantiqiy turlardan tortib, to sinflarning murakkabroq nusxalarigacha, barchasi obyekt hisoblanadi. Biroq obyektga Yo`naltirilgan tillarning hammasi ham bu darajada chuqurlashib ketmagan. Ayrim tillarda (masalan, Java kabi) int va float ga o`xshash oddiy primitivlar obyekt sifatida olib qaralmaydi.
OYD obyektlari, haqiqiy olam obyektlari kabi, o`z xususiyatlari va xatti-harakatlari bo`yicha tasniflanadi.
Biologiyada itlar, mushuklar, fillar va odamlar sutemizuvchilar sinfiga kiradi. Bu turli xildagi jonivorlarni umumiy xususiyatlar birlashtirib turadi. Xuddi shuningdek, dasturiy ta`minot olamida ham obyektlar bitta yoki bir nechta sinflarga mansub bo`ladi.
Bitta sinfga mansub obyektlarga umumiy xususiyatlar xos bo`ladi. Boshqacha qilib aytganda, sinf obyektni tavsiflaydigan xususiyatlar va xulq-atvorlarni, shuningdek, bu eng muhimi, obyekt javob beradigan xabarlarni belgilab beradi. Biror bir obyekt boshqa obyektning xulq-atvoriga ta`sir ko`rsatgan vaqtda u bu ta`sirni bevosita ko`rsatmaydi, balki undan qandaydir bir qo`shimcha axborotdan foydalangan holda o`zini o`zi o`zgartirishni iltimos qiladi. Odatda bu «xabarni jo`natish» deb ataladi.
Sinf umumiy xususiyatlar va xulq-atvorga ega bo`lgan obyektlarni birlashtiradi. Bitta sinfga mansub obyektlar bir xil xususiyatlarga ega bo`lib, bir xil xatti-harakat namoyon etadi.
Sinflar shablon (qolip)ga o`xshaydi: ular obyektlarning ekzem- plyarlari (nusxalari)ni tayyorlash uchun qo`llanadi.
Belgilar — sinfning tashqaridan ko`rinib turgan xususiyatlari.
Obyekt ichki o`zgaruvchiga bevosita kirishni taqdim etganda yoki usul yordamida qiymatni qaytargandagina o`z belgilarini namoyon qilishi mumkin.
Xulq-atvor — xabarga yoki holatning o`zgarishiga javoban obyekt tomonidan bajariladigan xatti-harakatlar. U obyekt nima qilayotganini bildiradi.
Bir obyekt ikkinchi obyekt ustida xatti-harakatlar bajarib, uning xulq-atvoriga ta`sir ko`rsatishi mumkin. «Xatti-harakat» atamasi o`rniga «usulni chaqirish», «funksiyani chaqirish» yoki «xabarni uzatish» atamalari qo`llanadi. Muhimi, bu atamalarning qaysi biri qo`llanayotganida emas, albatta, muhimi, bu xatti-harakatlar obyekt xulq-atvorini namoyon qilishga da`vat etishidadir.
Obyektlar o`rtasidagi aloqa obyektga Yo`naltirilgan dasturlashning muhim tarkibiy qismidir. Obyektlar o`zaro aloqasining ikkita asosiy usuli mavjud: Birinchi usul: obyektlar biri ikkinchisidan mustaqil ravishda mavjud bo`ladi. Agar alohida obyektlarga o`zaro aloqa kerak bo`lib qolsa, ular bir-birlariga xabar jo`natadi.
Obyektlar bir-birlari bilan xabarlar yordamida aloqa qiladi. Xabar olgan obyekt ma`lum xatti-harakatlarni bajaradi.
Xabar uzatish bu obyekt holatini o`zgartirish maqsadida uslubni chaqirib olish yoki xulq-atvor modellaridan birini qo`llashning o`zginasidir.
Ikkinchi usul: obyekt tarkibida boshqa obyektlar bo`lishi mumkin. Xuddi OYD da bo`lganidek, obyektlar ham, o`z navbatida, agre- gatsiya yordamida boshqa obyektlardan jamlanishi mumkin. Ushbu obyektlarning har bittasida uslub va belgilarga ega bo`lgan interfeys mavjud bo`ladi.
Xabar — obyektga Yo`naltirilgan yondashuvning muhim tushunchasi. Xabarlar mexanizmi tufayli obyektlar o`z mustaqilligini saqlab qolishi mumkin. Boshqa biron obyektga xabar jo`natayotgan obyekt uchun xabar olgan obyekt talabdagi xatti-harakatni qanday bajarishi unchalik muhim emas. Unga xatti-harakat bajarilganligining o`zi muhimdir.

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ə