Obyektga mo’ljallangan dasturlash tarixi

 Obyektga mo’ljallangan yondoshuv (OMYo) bir kunda o’ylab topilgan emas. Uning paydo bo’lishi dasturiy ta’minotning tabiiy rivojidagi navbatdagi pog’ona xolos. Vaqt o’tishi bilan qaysi uslublar ishlash uchun qulay-u, kaysinisi noqulay ekanini aniqlash oson bo’lib bordi. OMYo eng muvaffaqiyatli, vaqt sinovidan o’tgan uslublarni o’zida samarali mujassam etadi.

Dastlab dasturlash anchayin boshqotirma ixtiro bo’lib, u dasturchilarga dasturlarni kommutasiya bloki orqali kompyuterning asosiy xotirasiga to’g’ridan-to’g’ri kiritish imkonini berdi. Dasturlar mashina tillarida ikkilik kurinishda yozilar edi. Dasturlarni mashina tilida yozishda tez-tez xatolarga yo’l qo’yilar edi, eng ustiga ularni tuzilmalashtirish imkoni bo’lmagani tufayli, kodni kuzatib borish amalda deyarli mumkin bo’lmagan hol edi. Bundan tashqari, mashina kodlaridagi dastur tushunish uchun g’oyat murakkab edi.

Vaqt o’tishi bilan kompyuterlar tobora kengroq qo’llana boshladi hamda yuqoriroq darajadagi prosedura tillari paydo bo’ldi. Bularning dastlabkisi FORTRAN tili edi. Biroq obyektga mo’ljallangan yondoshuv rivojiga asosiy ta’sirni keyinroq paydo bo’lgan, masalan, ALGOL kabi prosedura tillari ko’rsatdi. Prosedura tillari dasturchiga axborotga ishlov berish dasturini pastroq darajadagi bir nechta proseduraga bo’lib tashlash imkonini beradi. Pastroq darajadagi bunday proseduralar dasturning umumiy tuzilmasini belgilab beradi. Ushbu proseduralarga izchil murojaatlar proseduralardan tashkil topgan dasturlarning bajarilishini boshqaradi.

Dasturlashning bu yangi paradigmasi mashina tilida dasturlash paradigmasiga nisbatan ancha ilg’or bo’lib, unga tuzilmalashtirishning asosiy vositasi bo’lgan proseduralar qo’shilgan edi, Maydaroq funksiyalarni nafaqat tushunish, balki sozlash ham osonroq kechadi. Biroq, boshqa tomondan, prosedurali dasturlash koddan takroran foydalanish imkonini cheklab qo’yyadi. 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, prosedurali dasturlash usullari bilan dasturlarni ishlab chiqishda diqqatni ma’lumotlarga qaratishning o’zi muammolarni keltirib chiqarar ekan. Chunki ma’lumotlar va prosedura ajralgan, ma’lumotlar inkapsullanmagan. Bu nimaga olib keladi? Shunga olib keladiki, har bir prosedura ma’lumotlarni nima qilish kerakligini va ular qayerda joylashganini bilmog’i lozim bo’ladi. Agar prosedura o’zini yomon tusa-yu, ma’lumotlar ustidan noto’g’ri amallarni bajarsa, u ma’lumotlarni buzib qo’yishi mumkin. Har bir prosedura 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, xatto eng kichik to’g’rilash ham butun dasturda qator o’zgarishlar sodir bo’lishiga olib kelar edi.

Modulli dasturlashda, masalan, Modula2 kabi tilda prosedurali dasturlashda topilgan ayrim kamchiliklarni bartaraf etishga urinib ko’rildi. Modulli dasturlash dasturni bir necha tarkibiy bo’laklarga, yoki, boshqacha qilib aytganda, modullarga bo’lib tashdlaydi. Agar prosedurali dasturlash ma’lumotlar va prosedsralarni bo’lib tashlasa, modulli dasturlash, undan farqli o’laroq, ularni birlashtiradi. Modul ma’lumotlarning o’zidan hamda ma’lumotlarga ishlov beradigan proseduralardan iborat. Dasturning boshqa qismlariga moduldan foydalanish kerak bo’lib qolsa, ular modul interfeysiga murojaat etib qo’yaqoladi. Modullar barcha ichki axborotni dasturning boshqa qismlarida yashiradi.

Biroq modulli dasturlash ham kamchiliklardan holi emas. Modullar kengaymas bo’ladi, bu degani kodga bevosita kirishsiz hamda uni to’g’ridan-to’g’ri o’zgartirmay turib modulni qadamma-qadam uzgartirish 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 prosedurali 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 proseduraga mo’ljallangan gibridli sxema bo’lib, unga amal qilishda dastur bir necha proseduralarga bo’linadi. Biroq endilikda proseduralar ishlov berilmagan ma’lumotlar ustida amallarni bajarmaydi, balki modullarni boshqaradi.

Obyektga mo’ljallangan dasturlash (OMD) modulli dasturlashdan keyingi mantiqiy pog’onani egallaydi, u modulga nasldan-naslga o’tishni va polimorfizmni qo’shadi. OMD dan foydalanr ekan, dasturchi dasturni bir qator oliy darajali obyektlarga bo’lish yo’li bilan tizimlashtiradi. Har bir obyekt hal qilinayotgan muammoning  ma’lum bir tomonini modellashtiradi. OMD endilikda dasturni bajarish jarayonini boshqarish uchun dasturchi diqqatini proseduralarni ketma-ketlikda chaqirib olish ro’yxatini tuzib o’tirishga qaratmaydi. Buning o’rniga obyektlar o’zaro aloqada bo’ladi. OMYo 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 nuqtai nazaridan idrok etishga, ya’ni uning hatti-xarakatlarini hayolan modellashtirishga majbur qiladi. Shu tufayli obyektga yondoshishda u dasturning bajarilishi jarayonida qanday ishlatiladi degan nuqtai nazardan biroz e’tiborni chalg’itish mumkin. Shunday qilib, dasturni yozish jarayonida haqiqiy dunyoning tabiiy atamalaridan foydalanish mumkin. Dasturni alohida proseduralar va ma’lumotlar shaklida (kompyuter dunyosi atamalarida) qurish o’rniga, obyektlardan iborat dastur qurish mumkin. Obyektlar otlar, fe’llar va sifatlar yorlamida haqiqiy dunyoni dasturda modellashtirishga imkon beradi. Joriy qilish (realizasiya) hatti-xarakatlar qanday bajarilayotganini belgilaydi. Dasturlash atamalarida joriy qilish – bu dasturiy kod.

Yechilayotgan masala atamalari bilan fikrlab, joriy qilishning mayda-chuyda detallarida o’ralashib qolish havfidan qochish mumkin. Albatta, ayrim oliy darajadagi obyektlar kompyuter bilan aloqa qilishda past darajadagi, mashinaga mo’ljallangan usullardan foydalanishi lozim. Biroq obyekt bu aloqani tizimning boshqa qismlaridan izolyasiya qiladi.

Obyekt dastur konsturksiyasi bo’lib, unda holat va hatti-xarakat inkapsulalangan bo’ladi. Obyekt holati bu ichki obyekt o’zgaruvchanlari qiymatlarining yig’indisidir.

Ichki o’zgaruvchan deb obyekt ichida saqlanadigan qiymatga aytiladi.

Mohiyat e’tibori bilan, obyekt bu sinfning ekzemplyari (nushalaridan biri)dir.

OMD, haqiqiy dunyo kabi, obyektlardan tashkil topadi. Obyektga mo’ljallangan sof dasturlash tilida, eng dastlabki, bazaviy, butun, mantiqiy turlardan tortib, to sinflarning murakkabroq nushalarigacha, barchasi obyekt hisoblanadi. Biroq obyektga mo’ljallangan tillarning hammasi ham bu darajada chuqurlashib ketmagan. Ayrim tillarda (masalan, Java kabi) int va float ga o’xshash oddiy primitivlar obyekt sifatida olib qaralmaydi.

OMD obyektlari, haqiqiy olam obyektlari kabi, o’z xususiyatlari va xatti-harakatlari bo’yicha tasniflanadi.

Biologiyada itlar, mushuklar, fillar va odamlar sut emizuvchilarga kiradi. Bu turli xildagi jonivorlarni umumiy xususiyatlar birlashtirib turadi. Xuddi shunday, 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, va bu eng muhimidir, obyekt javob beradigan xabarlarni belgilab beradi. Biron 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 ekzemplyarlari (nushalari)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 tomnidan 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 chaqiirish», «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’rtasida aloqa obyektga mo’ljallangan dasturlashning muhim tarkibiy qismidir. Obyektlar o’zaro aloqasining ikkita asosiy usuli mavjuddir.

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 OMD da bo’lganidek, dastur obyektlardan tashkil topganidek, obyektlar ham, o’z navbatida, agregasiya yordamida boshqa obyektlardan jamlanishi mumkin. Ushbu obyektlarning har bittasida uslub va belgilarga ega bo’lgan interfeys mavjud bo’ladi.

Xabar – obyektga mo’ljallangan yondoshuvning muhim tushinchasi. 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.

News Reporter

Leave a Reply

Your email address will not be published. Required fields are marked *