logo

Modulli dasturlashning kelib chiqish tarixi.

Yuklangan vaqt:

12.08.2023

Ko'chirishlar soni:

0

Hajmi:

564.486328125 KB
Mavzu:Modulli dasturlashning kelib chiqish tarixi.
Reja:
1.Kirish.
2.Dasturlash tarixining bosqichma-bossqich rivojlanishi.
3.Modullar va uning xususiyatlari.
4. Konseptual model haqida.
5.Xulosa 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. Dasturlash   —   predmet   va   texnikaning   nisbatan   yosh   va   tez   г ivojlanayotgan
sohasi. Mavjud dasturiy va texnik vositalarni real ishlab chiqish va tarmoqlashtirishni
olib borish tajribasi doimo qayta izlanishni talab etadi. Natijada yangi usullar, uslublar
va   texnologiyalar   paydo   bo‘ladi,   ular   o‘z   navbatida,   dasturiy   ta’minlashni   ishlab
chiqishning   yanada   zamonaviy   vositalari   uchun   asos   bo'lib   xizmat   qiladi.   Yangi
texnologiyalarni   yaratish   jarayonlarini   tekshirish   va   ularning   asosiy   yo‘nalishlarini
aniqlash,   bu   texnologiyalarni   dasturlashning   rivojlanish   darajasi   hamda   dasturchilar
ixtiyoridagi   dasturiy   va   apparat   vositalarining   xususiyatlari   bilan   solishtirish
maqsadga muvofiqdir.
XX   asrning   60-yillari   boshida   «dasturlash   inqirozi»   yuz   berdi.   U   operatsion
tizimlar   kabi   murakkab   dasturiy   ta’minotni   ishlab   chiqishga   uringan   firmalar
loyihalarni   tugallashning   barcha   muddatlaridan   kechikkan   edi.   Loyiha   joriy
etilishidan   oldinroq   eskirib   qolar,   uning   qiymati   ortib   borar   va,   natijada,   ko‘pgina
loyihalar shu tariqa tugallanmay qolib ketar edi.
Ikkinchi   bosqich   dasturlashga   tarkibiy   yondashish   (XX   asrning   60—70   -
yillari).   Dasturlashga   tarkibiy   yondashish   dasturiy   ta’minlashni   ishlab   chiqishning
barcha   bosqichlarining   bajarilishini   qamrab   oluvchi   tavsiya   etilayotgan   texnologik
usullar majmuasidan  iborat. Tarkibiy yondashish  asosida  uncha katta bo‘lmagan (40
—50   operatorgacha)   alohida   kichik   dasturlar   ko‘rinishida   keyingi   amalga   oshirish
maqsadida   murakkab   tizimlar   dekompozitsiyasi   (qismlarga   bo'laklash)   yotadi.
Dekompozitsiya boshqa tamoyillari (obyektli, mantiqiy va h.) ning paydo bo‘lishidan
keyin ushbu usul protsedurali dekompozitsiya deb ataladi.
Ilgariroq   foydalanilgan   dekompozitsiyaga   protsedurali   yondashishdan   farqli
ravishda   tarkibiy   yondashish   eng   sodda   tuzilishdagi   kichik   masalalar   iyerarxiyasi
ko‘rinishida   masalaning   taqdim   etilishini   talab   qilar   edi.   Loyihalashtirish,   shu   tariqa
«quyidan   yuqoriga»   amalga   oshirilib,   kichik   dasturlar   interfeyslarining   ishlab
chiqilishini ta’m inlagan holda umumiy g‘oyaning amalga oshirilishini ko‘zda tutgan
edi.   Bir   vaqtning   o‘zida   algoritmlar   konstruksiyasiga   cheklashlar   kiritilar,   ular
ta’rifning   formal   modellari,   shuningdek,   algoritmlarni   loyihalashtirishning   maxsus
usuli—qadama   -   qadam   detallashtirish   usuli   tavsiya   etilgan   edi.   Tarkibiy   dasturlash
tamoyillarini ta’minlash dasturlashning protsedurali tillari asosiga kiritilgan. Qoidaga
ko‘ra,  ular   boshqaruvni  uzatishning   asosiy  «tarkibiy» operatorlarini,  kichik  dasturlar
kiritilishi,   lokallashtirish   va   ma’lum   otlar   sohasining   «ko‘rinishliligi»ning
chegaralanishini ta’minlar edi. Bu guruhning eng ma’lum tillaridan PL/1, ALGOL-68,
Pascal,   С   ni   misol   qilib   ko‘rsatish   mumkin.   Tarkibiy   dasturlash   bilan   bir   vaqtda
boshqa   konsepsiyalarga   asoslangan   ko‘p   miqdordagi   tillar   paydo   boldi,   ammo
ularning   ko‘pchiligi   raqobatga   bardosh   bera   olmadi.   Qaysidir   tillar   unutildi,   boshqa
tillarning   g‘oyalaridan,   rivojlanayotgan   tillarning   keyingi   versiyalaridan   keyinchalik
foydalanildi. Ishlab   chiqilayotgan   dasturiy   ta’minot   murakkabligi   va   o‘lchamlarining   keyingi
o'sishi   ma’lum   otlar   tuzilishining   rivojlanishini   talab   qildi.   Buning   oqibatida   tillarda
ma’lum otlarning foydalanish turlarini belgilash imkoniyati paydo bo‘ldi. Ayni paytda
global   ma’lum   otlar   bilan   ishlashda   kelib  chiqadigan   xatolar   miqdorini   kam   aytirish
uchun   dasturning   global   ma’lumotlaridan   foydalanishni   chegaralashga   urinish
kuchaydi. Natijada modulli dasturlash texnologiyasi paydo bo‘lib, rivojlana boshladi.
Modulli   dasturlash   aynan   bir   xil   global   ma’lum   otlarni   alohida   modullarga   (kichik
dasturlar   kutubxonasi)   ajratilishini   ko‘zda   tutadi.   Masalan,   grafik   resurslar   moduli,
printerga   chiqarish   kichik   dasturlari   moduli   (1.5-rasm).   Ushbu   texnologiyadan
foydalanishda   modullar   o‘rtasidagi   aloqa   maxsus   interfeys   orqali   amalga   oshiriladi,
ayni vaqtda modulning amalga oshirilishidan (kichik dasturlar tanasi va ba’zi «ichki»
o‘zgaruvchan)   foydalanish   taqiqlangan.   Bu   texnologiyani   Pascal   va   С   (C   ++)
tillarining zamonaviy versiyalari, Ada va Modula tillari ta’minlaydi. Modulli   dasturlashdan   foydalanish   dasturiy   ta’minotning   bir   qancha
dasturchilar  tomonidan  ishlab chiqilishini  ancha  osonlashtirdi. Endilikda  ulardan har
biri   modullar   o’zaro   ta’sirini   maxsus   aytib   o‘tilgan   modullararo   interfeyslar   orqali
ta’minlab,   o‘z   modullarini   mustaqil   ishlab   chiqishi   mumkin   edi.   Bundan   tashqari,
modullardan   keyinchalik   o‘zgarishlarsiz   boshqa   ishlab   chiqishlarda   foydalanish
mumkin bo'lgan. Bu dasturchilarning mehnat unumdorligini oshiradi. Amaliyot shuni
ko‘rsatdiki, modulli dasturlash bilan birgalikda tarkibiy yondashish o‘lchami 100 000
operatordan oshmagan yetarli darajada ishonchli dasturlarni yaratish imkonini beradi.
Kichik   dasturni   chaqirishda   interfeysdagi   xato   faqat   dastur   bajarilgandagina
aniqlanishi   (modullarning   ajratilgan   kompilyatsiyasi   tufayli   bu   xatolarni   ilgariroq
aniqlashning   iloji   yo‘q)   modulli   dasturlashning   tor   joyi   hisoblanadi.   Odatda   dastur
o‘lchami kattalashganda modullararo interfeyslarning murakkabligi ortadi va qaysidir
daqiqadan   boshlab   dastur   alohida   qismlarining   o‘zaro   ta’sir   ko‘rsatishini   oldindan
bilishning   hech   ham   iloji   yo‘q.   Katta   ko‘lamdagi   dasturiy   ta’minotni   ishlab   chiqish
uchun obyektli yondashishdan foydalanish taklif etildi.
Uchinchi   bosqich   —   dasturlashga   obyektli   yondashuv   (XX   asrning   80-yillari
o‘rtasidan 90-yillar oxirigacha). Obyektga mo‘ljallangan dasturlash har biri muayyan
turdagi (klassdagi) nusxa bo‘lgan obyektlar majmuasi ko‘rinishida dasturning taqdim
etilishiga   asoslangan   murakkab   dasturiy   ta’minlashni   yaratish   texnologiyasi   sifatida
aniqlanadi,   bunda   klasslar   xususiyatlarni   meros   qilib   olish   bilan   birga   iyerarxiyani
hosil   qiladi.   Bunday   tizimdagi   dasturiy   obyektlarning   o‘zaro   harakati   xabarlarni
uzatish yo‘li orqali amalga oshiriladi (1.6-rasm). Dasturning obyektli tuzilishidan ilk
bor   XX   asrning   60-yillaridayoq   paydo   bo‘lgan   murakkab   tizimlarni   imitatsiyali
modellashtirish   tili   -   Simula   da   foydalanilgan.   Modellashtirish   tillari   uchun   tabiiy
hisoblangan dasturni taqdim etish usuli modellashtirishning boshqa ixtisoslashtirilgan
tili — Smalltalk tilida rivojlanishni davom ettirgan (XX asrning 70-yillari), keyin esa,
Pascal,   C++,   Modula,   Java   kabi   dasturlashning   universal   tillariga   ko‘chirilgan.
Modulli   dasturlashga   nisbatan   obyektga   mo'ljallangan   dasturlashning   asosiy   yutug‘i
dasturiy   ta’minotni   ishlab   chiqishni   ancha   yengillashtiruvchi   dasturiy   ta’minotning
«yanada   tabiiyroq»   bo'laklanishi   hisoblanadi.   Bu   ma’lumotlarni   yanada   to‘liqroq
lokallashtirish  va ularning ishlov  berish  kichik dasturlari   bilan integratsiyalashishiga
olib keladi. 0 ‘z navbatida, mazkur holat dasturning alohida qismlari (obyektlar)ning
mustaqil   ishlab   chiqilishini   olib   borish   imkonini   beradi.   Bundan   tashqari,   obyektli
yondashish   merosiylik,   polimorfizm,   kompozitsiyalash,   to‘ldirish   mexanizmlariga
asoslangan dasturlarni tashkil etishning yangi usullarini taklif etadi. Bu mexanizmlar
nisbatan   oddiy   obyektlardan   murakkab   obyektlarni   qurish   imkoniyatini   beradi.
Natijada kodlardan qayta foydalanish ko‘rsatkichi ancha oshadi va turli maqsadlarda Global muammolar Asosiy dastur
Ma’lumotlar Ma’lumotlarMa’lumotlar
motlarModul 1
n1
1
Lokal ma’lumotlar kichik dasturlar .. Ma’lumotlar Ma’lumotlarMa’lumotlar
motlarModul k
nk
1
Lokal ma’lumotlar kichik dasturlar …
1.5-rasm. Modullardan tashkil topgan dasturlar arxitekturasi. qocllash   uchun   sinflar   kutubxonasini   yaratish   imkoniyati   paydo   bo‘ladi.   Obyektli
yondashishga   asoslangan   dasturlash   texnologiyalarining   jadal   rivojlanishi   ko‘p
muammolarni hal etishga yordam berdi. 
Lokal ma’lumotlar qism dasturlar ..
.. Ma’lumotlar Ma’lumotlarMa’lumotlar
motlar
n1
1
Lokal ma’lumotlar qism dasturlar ..
Ma’lumotlar Ma’lumotlarMa’lumotlar
motlar
n1
1
Lokal ma’lumotlar qism dasturlar ..Obyekt 1
Obyekt LXabar
Xabar
1.6-rasm. Obyektga mo’ljallangan dasturlashdagi dasturlar arxitekturasi. Shu tariqa vizual dasturlashni ta’minlovchi muhitlar yaratildi. Masalan, Delphi,
C++, Builder, Visual C++ va h.k. Vizual muhitdan foydalanganda dasturchida maxsus
kutubxona   komponentlarini   qo‘shish   va   sozlash   vizual   vositalarini   qo‘llagan   holda
ba’zi qismlarni loyihalashtirish imkoniyati paydo bo‘ladi. Masalan, bo‘lajak mahsulot
interfeyslari   muvofiq   kodlar   kiritilgan   loyihalashtirish   natijasidir.   Obyektli
yondashishdan foydalanish ko‘p afzalliklarga ega, ammo uning Pascal  va C ++ kabi
dasturlashning   obyektli   mo‘ljallangan   tillarda   aniq   amalga   oshirilishi   sezilarli
kamchiliklarga ega: 
•   dasturlashning   hatto   bir   tili   doirasida   obyektlar   kompilyatsiyasining   ikkilik
natijalarini   joylashtirish   standartlari   mavjud   cmas:   C++   ning   turli   kompilyatorlari
orqali   olingan   obyektlarning   joylashtirilishi   muammosidir.   Bu   yuqori   darajadagi
dasturlash   bitta   tilining   hamda,   bitta   kompilyatorning   vositalari   va   imkoniyatlaridan
foydalangan   holda   dasturiy   ta’minotni   ishlab   chiqish   zaruratiga   olib   keladi,   demak,
klasslarning   foydalaniladigan   kutubxonalari   boshlang‘ich   kodlarining   bo‘linishini
talab qiladi; 
• dasturiy obyektlardan birining amalga oshirilishining o‘zgartirilishi, kamida, tegishli
modulning   qayta   kompilyatsiyalanishi   va   ushbu   obyektdan   foydalanuvchi   butun
dasturiy ta’minlashni qayta joylashtirish bilan bog‘liq.
Shu   tariqa,   dasturlashning   bu   tillaridan   foydalanishda   dasluriy   ta’minot
modullarining eksport qilinayotgan maydonlar v,i usullarning manzillari, shuningdek,
ma’lumotlarning   tarkibi   va   formatlariga   bog'liqligi   saqlanib   qoladi.   Bu   bog'liqlik
obyekliv.   Chunki,   modullar   bir-birlarining   resurslariga   murojaat   qilib   o‘zaro   ta’sir
ko‘rsatishlari   kerak.   Modullar   aloqasini   uzish   mumkin   emas,   ammo   ularning   o‘zaro
ta’sirini   standartlashtirishga   urinish   mumkin,   dasturlashga   komponentli   yondashish
ham shunga asoslangan.
To‘rtinchi   bosqich   —   komponentli   yondashuv   va   CASE   texnologiya   (XX
asrning   90-yillaridan   boshlab   to   hozirgi   paytgacha).   Komponentli   yondashish   —
standartlashtirilgan   ikkili   interfeyslar   orqali   o‘zaro   ta’sir   ko‘rsatuvchi   dasturiy
ta’minotning fizik jihatdan alohida mavjud bo'lgan qismlar  — dasturiy ta’minotning
alohida   komponentlaridan   qurilishini   ko‘zda   tutadi.   Oddiy   obyektlardan   farqli
ravishda   obyekt   komponentlarni   dinamik   chaqiriladigan   kutubxonalar   yoki
bajariladigan   fayllarga   yig'ish,   ikkili   ko‘rinishda   (boshlang‘ich   matnlarsiz)   tarqatish
va   muvofiq   texnologiyani   ta’minlovchi   dasturlashning   har   qanday   tilida   foydalanish
mumkin. Bugungi kunda obyektlar bozori  haqiqatga aylandi, chunki  Internetda ko‘p
miqdordagi   komponentlarni   taqdim   etuvchi   bog‘lamalar   mavjud,   jurnallar
komponentlar   reklamasi   bilan   to‘libtoshgan.   Bu   dasturchilarga   hech   boclmaganda
qisman   qayta   foydalanilgan   qismlardan   iborat   mahsulotlarni   yaratish,   ya’ni Ma’lumotlar Ma’lumotlarMa’lumotlar
motlarObyekt 2
n1
1 Ma’lumotlar Ma’lumotlarMa’lumotlar
motlarObyekt S
nk
1
Lokal ma’lumotlar qism dasturlar1.6-rasm. Obyektga mo’ljallangan dasturlashdagi dasturlar arxitekturasi. apparaturani   loyihalashtirish   sohasida   o‘zini   ijobiy   tomondan   ko'rsatgan
texnologiyadan foydalanish imkonini beradi. 
Modullar   va   ularning   xususiyatlari   .   Yetarlicha   murakkab   dasturiy   ta’minotni
loyihalashtirishda   uning   umumiy   tuzilmasi   belgilangandan   so‘ng,   loyihachi   fikriga
ko‘ra,   keyingi   dekompozitsiyaga   muhtoj   bo‘lmagan   elementlar   olingunga   qadar
tanlangan   yondashuvga   muvofiq   holda   komponentlar   dekompozitsiyasi   bajariladi.
Avval   eslatib   o‘tilganidek,   hozirgi   paytda   ishlab   chiqilayotgan   dasturiy   ta’minot
dekompozitsiyasining tegishli yondashuv bilan bog’liq ikki usuli qo‘llaniladi: 
• protsedurali (yoki tuzulmaviy-yondashuv nomi bo‘yicha); 
• obyektli. 
Eslatma.   Ko‘rsatilgan   dekompozitsiya   usullaridan   tashqari   dasturlash
nazariyasida dekompozitsiyasining boshqa usullari ham belgilanadi: mahsulot faktlari
va   qoidalariga   —   mantiqiy   dekompozitsiya   va   hokazo.   Mazkur   dekompozitsiya
usullari sun’iy intellekt tillarida qo'llaniladi, shu boisdan ular  ushbu darslikda ko‘rib
chiqilmaydi. 
Qaror  qabuli bilan bog‘liq funksiyalar  yuqori  darajadagi  tagdasturlar, bevosita
qayta   ishlash   esa   quyi   darajadagi   tagdasturlar   orqali'   ijobatlanadigan   tagdasturlar
iyerarxiyasi   protsedurali   dekompozitsiya   natijasi   hisoblanadi.   Bu   dasturlashga
tuzilmaviy yondashuvning boshqa tavsiyalari bilan birgalikda shakllantirilgan vertikal
boshqaruv   tamoyili   bilan   muvofiqlashadi.   U,   shuningdek,   har   qanday   tagdastur
o‘zining   chaqirgan  tagdastur   boshqaruvini   qaytarishini   talab   qilgan  holda   boshqaruv
berilishining ehtimolli variantlarini ham chegaralaydi.           Obyektli dekompozitsiya
natijasi obyektlar uyg‘unligi bo‘lib, tegishli maydonlar bilan ishlovchi ma’lumotlar va
usullar   uyg‘unligini   ifodalagan   holda   keyinroq   ayrim   maxsus   ishlab   chiqiluvchi
namunalar (sinflar) sifatida aniqlanadi. 
Shunday qilib,  har   qanday  dekompozitsiya  usulida  amalga  oshirish  jarayonida
modullarga   aylantiriladigan   kichik   dasturlarning   tegishli   ma’lumotlari   bilan   bog'liq
majmua vujudga keltiriladi. 
Modullar.   Avtonom   kompilyatsiyalanuvchi   dasturiy   birlik   modul   deyiladi.
«Modul»   atamasi   an’anaviy   ravishda   ikki   ma’noda   qo‘llaniladi.   Dastlab,   dasturlar
o‘lchami nisbatan katta bo'lmagan va barcha tagdasturlar alohida kompilyatsiyalangan
paytda   kichik   dastur,   ya’ni   murojaat   nom   bo‘yicha   bajariladigan   dastur   fragmentlari
bog‘liqligining   davomiyligi   modul   deb   tushuniladi.   Vaqt   o‘tib,   dasturlar   o‘lchami
ancha ortdi va resurslar: konstantlar, o‘zgaruvchilar, namunalar, sinflar va tagdasturlar
bayonlari   kutubxonasini   yaratish   imkoniyati   paydo   bo‘lgach,   «modul»   atamasi
dasturiy   resurslarning   avtonom   kompilyatsiyalanuvchi   majmui   ma’nosida   ham
qo‘llana boshlandi.   Modul   ma’lumotlarni   xotiraning   umumiy   sohalari   yoki   parametrlari   orqali
olishi   mumkin.   Dastavval   modullarga   (hali   tagdastur   sifatida   tushunilayotgan)
quyidagi talablar qo‘yilardi: 
• alohida kompilyatsiya; 
• bitta kirish va chiqish nuqtasi; 
• vertikal boshqaruv tamoyiliga mosligi; 
• boshqa modullarni chaqiruv imkoniyati; 
• katta bo£lmagan o‘lcham (50—60 til operatorigacha); 
• chaqiruv tarixiga bog‘liq bo'lmaslik; 
• bitta funksiyani bajarish. 
Bitta   kirish   nuqtasi,   bitta   chiqish   nuqtasi,   chaqiruv   tarixidan   mustaqillik   va
vertikal   boshqaruv   prinsipiga   muvofiqlik   talablarini   ng   boisi   shunda   ediki,   o‘sha
paytlarda   operativ   xotira   hajmiga   bo‘lgan   jiddiy   cheklovlar   tufayli   dasturchilar
kodlarning  maksimal   takrorlanuvchanligi   ehtimoli  mavjud  dasturlar   ishlab  chiqishga
majbur   edilar.   Natijada   bir   necha   kirish   va   chiqish   nuqtalari   mavjud   tagdasturlar
nafaqat oddiy hoi, balki dasturlashning yuqori toifasi sanalardi. Oqibati esa shu ediki,
dasturlarni   nafaqat   modifikatsiyalash,   balki   tushunish,   ba’zan   esa   shunchaki   to‘liq
sozlash   ham   juda   murakkab   bo‘lardi.   Vaqt   o‘tib,   tuzilmaviy   yondashuvning   asosiy
talablarini   dasturlash   tillari   quvvatlaydigan   va   modul   deganda   alohida
kompilyatsiyalanuvchi   resurslar   kutubxonasi   tushuniladigan   bo‘lgach,   modullar
mustaqilligi   asosiy   talabga   aylandi.   Amaliyot   ko‘rsatdiki,   modullar   mustaqilligi
darajasi qanchalik yuqori bo‘lsa, shunchalik ravishda: 
• alohida modulda va butun dasturda tartibni bilish hamda muvofiq ravishda uni
testlash, sozlash va modifikatsiyalash yengil bo‘ladi;
 • eski xatolarni tuzatishda yoki dasturlarga o‘zgarishlar kiritishda yangi xatolar
paydo   bo‘lishining   ehtimoli,   ya’ni   «to‘liqligi»   effekt   paydo   bo‘lishi   ehtimoli
kamayadi;
•   dasturchilar   guruhi   tomonidan   dasturiy   ta’minot   ishlab   chiqilishini
tashkillashtirish osonlashadi va uni kuzatish yengillashadi. 
Shunday   qilib,   modullar   qaramligini   kamaytirish   loyiha   texnologikligini
yaxshilaydi.   Modullar   (dasturlar,   kutubxonalar)   mustaqilligi   darajasini   ikki   mezon
bo‘yicha — ulashuv 2 va aloqadorlik bo'yicha baholanadi. Modullarni ulash. Ulash bu
modullarni   o‘zaro   bog‘liqligining   o'lchovi   bo‘lib,   modullar   bir-biridan   qanchalik
yaxshi   ajratilganligini   belgilaydi.   Modullar,   agar   ularning   har   biri   boshqasi   haqida
hech   qanday   axborotga   ega   bo‘lmasa,   mustaqildir.   Modul   boshqa   modullar   haqida
qancha   ko‘p   axborotni   saqlasa,   u   shunchalik   ko‘p   ular   bilan   ulashgan   bo‘ladi.
Modullar ulashuvining beshta tipi farqlanadi: 
• ma’lumotlar bo‘yicha; 
• namuna bo‘yicha;  • boshqaruv bo‘yicha;
 • ma’lumotlarning umumiy sohasi bo‘yicha; 
• borlig‘i bo'yicha. 
Ma’lumotlar   bo‘yicha   ulashuv   modullarning   skalyar   ifodalarda   taqdim   etilgan
ma’lumotlar   bilan   almashinishlarini   nazarda   tutadi.   Berilayotgan   parametrlarning
ko‘p   bo‘lmagan   miqdorida   ushbu   tip   dasturiy   ta’minotning   eng   yaxshi   texnologik
tavsiflarini ta’minlaydi. 
Masalan,   Max   funksiyasi   skalyar   tipdagi   parametrlar   orqali   ma’lumotlar
bo‘yicha ulashuvni nazarda tutadi:
Function Max (a,b: integer): integer; 
begin 
if a>b then Max: =a 
else Max: = b; 
end; 
Namuna   bo£yicha   ulashuv   modullarning   tuzilmalarga   birlashtirilgan
ma’lumotlar bilan almashinishlarini nazarda tutadi.
Mazkur tip ham yondosh bo‘lmagan tavsiflarni ta’minlaydi, biroq ular avvalgi
tipdagidan   ko‘ra   yomonroq,   zero   muayyan   berilayotgan   ma’lumotlar   tuzilmalarga
«yashirilgan»,   shu   boisdan   modullar   o'rtasidagi   aloqaning   shaffofligi»   kamayadi.
Bundan   tashqari,   berilayotgan   ma’lumotlar   tuzilmasini   o‘zgartirishda   undan
foydalanuvchi   barcha   modullarni   modifikatsiyalash   zarur.   Jumladan,   quyida   bayon
etilgan   MaxEl   funksiyasi   namuna   bo‘yicha   ulashuvni   nazarda   tutadi   (a   parantetr   —
ochiq massiv):
Function MaxEJ (a: array of integer): integer; 
Var i: world; 
begin 
Max El:—a[0] 
for i: 1 to High(a) do 
if a{-[i] > MaxEl then MaxEl:=a[i]; 
end;
Boshqaruv   bo'yicha   ulashuvda   bir   modul   boshqasiga   modulning   ichki
mantig‘ini   boshqarish   uchun   belgilangan   qandaydir   axborot   obyekt   (bayroq)
yuboradi. Bunday sozlashlar, shuningdek modullar o'zaro ta’sirining ko‘rgazmaliligini
pasaytiradi   va   shu   boisdan   avvalgi   aloqalar   tiplariga   qiyosan   ishlab   chiqilayotgan
dasturiy ta’minot texnologikligining yanada yomon tavsiflarini ta’minlaydi. Masalan,
MinMax funksiyasi boshqaruv bo‘yicha ulashuvni nazarda tutadi, zero flag parametri
ifodasi dastur mantig‘iga ta’sir ko‘rsatadi:  agar MinMax funksiyasi  true ga teng flag
parametri   ifodasini   olsa,   ikkitadan   maksimal   ifodani   qaytaradi,   agar   false   ni   olsa,
minimal ifodani qaytaradi: Function MinMax (a,b: integer; flag; boolean): integer; 
begin if (a>b) and (flag) then MinMax:=a
 else MinMax: = b; 
end; 
Ma’lumotlarning   umumiy   sohasi   bo‘yicha   ulashuv   modullarni   ulashda
ma’lumotlarning   umumiy   sohasi   bilan   ishlashlarini   nazarda   tutadi.   Ulashning   ushbu
tipidan foydalanish mumkin emas, zero: 
• mazkur ulashuv tipidan foydalanuvchi dasturlar dasturiy ta’minoti kuzatishda
tushunish uchun o‘ta murakkab;
  •   umumiy   ma’lumotlarning   o‘zgarishini   keltirib   chiqaradigan   bitta   modul
xatosi   boshqa   modulni   bajarishda   paydo   bo‘lishi   mumkin,   bu   esa   xatolarni   bartaraf
etishni jiddiy darajada murakkablashtiradi; 
•   umumiy   sohadagi   ma’lumotlarga   tayanishda   modullarning   muayyan
nomlaridan   foydalaniladi,   bu   esa   ishlab   chiqilayotgan   dasturiy   ta’minot
moslanuvchanligini kamaytiradi.
Masalan,   A   global   massivdan   foydalanuvchi   Max   A   funksiyasi   asosiy   dastur
bilan umumiy soha bo‘yicha ulashgan: 
Function Max A: integer;
 Var i: world; 
begin 
Max A: =a[Low(a)]; 
for i: = Low (a)+l to High (a) do 
if a [i] > Max A then Max A: = a [ij; 
end; 
Nazarda   tutish   lozimki,   harakati   chaqiruvlar   tarixiga   bogliq   «xotirali
tagdasturlar» umumiy soha bo'yicha ulashuvdan foydalanadi, bu esa umumiy holatda
ularning   ishini   oldindan   bilib   boclmaydigan   qilib   qo‘yadi.   С   hamda   C++   statik
o‘zgaruvchilar aynan shu variantdan foydalanishadi.
Mohiyatan   ulashuv   holatida   bir   modul   boshqasining   ichki   komponentlariga
murojaatga  ega  bo‘ladi  (boshqaruvni  ichkariga  beradi,  ichki   ma’lumotlarni, kodlarni
o‘zini   o‘qiydi   yoki   o‘zgartiradi),   bu   esa   blokli-iyerarxik   yondashuvga   tamomila
ziddir. Ushbu holatda alohida modul blok («qora quti») bo‘la olmaydi: uning borlig‘i
boshqa modulni ishlab chiqish jarayonida hisobga olinishi shart.
Protsedurali dasturlashning zamonaviy universal tillari, masalan Pascal, mazkur
tipdagi ulashuvni oshkora tarzda quvvatlamaydi, biroq quyi darajadagi tillar, masalan
Assembler   uchun   mazkur   tipdagi   ulashuv   mumkinligicha   qoladi.   2.1-jadvalda
ekspertlik   baholari   bo‘yicha   ulashuv   turli   tiplarning   tavsiflari   berilgan.   Ulashuvning
dastlabki   uch   tipiga   yo‘l   qo’yiladi,   chunki   qolganlaridan   foydalanish   texnologik
dasturlarning keskin yomonlashuviga olib keladi. Tiplar taavsiflari
Ulashuv tipi Ulashuv
ball Boshqa
midullar
xatolariga
barqarorlik Ko’rgazmalilik
(tushunarlilik) O’zgarish
imkoniyati Takroriy
foydalanish
ehtimoli
Ma’lumotlar
bo’yicha 1 Yaxshi* Yaxshi  Yaxshi  Kata 
Namuna
bo’yicha 3 O’rtacha  Yomon  Yomon  Yomon 
Boshqaruv
bo’yicha 4 O’rtacha  Yomon  Yomon  Kichik 
Umumiy   soha
bo’yicha 6 Yomon  Yomon  O’rtacha Kichik 
Borliq
bo’yicha 10 Yomon  Yomon  Yomon  Kichik 
Qoidaga ko‘ra, modullar o‘zaro bir necha usullar orqali ulashadi. Buni hisobga
olgan   holda   dasturiy   ta’minot   sifatini   yomon   tavsiflarga   ega   ulashuv   bilan   belgilash
qabul   qilingan.   Xususan,   ma’lum   otlar   bo‘yicha   ulashuvdan   va   boshqaruv   bo‘yicha
ulashuvdan   foydalanilgan   taqdirda   boshqaruv   bo‘yicha   ulashuv   belgilovchi
hisoblanadi. 
Ayrim  hollarda  modullar   ulashuvini   shart  bo‘lmagan  aloqalarni   olib  tashlagan
va   zarur   aloqalarni   tuzilm   alashtirgan   holda   kichraytirish   mumkin.   Obyektga
mo‘ljallangan   dasturlashga   misol   sifatida,   unda   bitta   miqdordagi   parametrlar   o'rniga
mazkur   usul   obyekt   maydonlari   joylashgan   soha   (tuzilma)   manzilini   nooshkora,
qo‘shish   param  etrlarni   oshkora  oladi. Natijada  modullar   namuna  bo‘yicha  ulashgan
bo‘lib qoladi. 
Modullar aloqadorligi. Aloqadorlik — bir modul ichidagi funksional va axborot
obyektlar   birikuvi   mustahkamligining   birligi.   Agar   ulashuv   modullar   bo‘linm   asi
sifatini   tavsiflasa,   aloqadorlik   bir   modul   amalga   oshiradigan   elementlar   o‘zaro
aloqasining   darajasini   tavsiflaydi.   Bitta   modul   kuchli   aloqador   elementlarni
joylashtirish   modullararo   aloqalarni   kichraytiradi,   shu   bilan   birga   ularning   o‘zaro
ta’sirini   tushunishni   ham   murakkablashtiradi.   Shuningdek,   zaif   bog‘langan
elementlarni birlashtirish ham modullar texnologikligini kam aytiradi, chunki bunday
elementlarni fikran boshqarish murakkab. 
Aloqadorlikning quyidagi xillari (daraja pasayishi tartibiga ko‘ra) farqlaniladi: 
• funksional;  2.1-jadval • ketma-ket; 
• axborot (kommunikativ); 
• protsedurali; 
• muvaqqat; 
• mantiqiy; 
• tasodifiy. 
Funksional aloqadorlikda modulning barcha obyektlari bitta funksiyani bajarish
uchun   belgilanadi   (2.1-rasm,   a):   bitta   funksiyani   bajarish   uchun   birlashtirilgan
operatsiyalarni yoki funksiyaga aloqador ma’lumotlar bo‘ladi. Elementlari funksional
aloqador   modul   aniq   belgilangan   maqsadga   ega,   uning   chiqaruvida   bitta   vazifa,
masalan   massiv   minimal   elementini   izlash   tagdasturi   bajariladi.   Bunday   modul
maksimal   aloqadorlikka   ega   bo‘ladi,   uning   yaxshi   texnologik   sifatlari   —   testlash,
modifikatsiyalash   va   kuzatish   oddiyligi   shuning   oqibati   hisoblanadi.   Tuzilmaviy
dekom  pozitsiyaning talablaridan biri  — «bitta  modul  — bitta funksiya»  talabi  ham
aynan   shu   bilan   aloqadordir.   Aynan   shu   tushunchalardan   kelib   chiqqan   holda
modullarresurslar   kutubxonasi   o‘rtasida   funksiyalarning   tuzil   malashmagan
maksimallikdan   qochish   lozim.  Masalan,   matn   muharririni   loyihalashda   tahrir   kirish
funksiyasi nazarda tutilsa, funksiyalar kutubxonasini bir modulda, bir qismini boshqa
modulda tashkillashtirish, modul tashkil etish afzal.
  2.1-rasm.   Modullar   aloqadorligi:   a   —   funksional;   b   —   ketma-ket;   d   -   axborot;   e   -
protsedurali; f - muvaqqat; g - mantiqiy  
Funksiyalarning   ketma-ket   aloqadorligida   bir   funksiyaning   chiqishi   boshqa
funksiya uchun boshlang‘ich ma’lumotlar bo‘lib xizmat qiladi (2.1-rasm, b). Odatda,
bunday modul bitta chiqish nuqtasiga ega bo‘ladi, ya’ni ikkita funksiyani bajaruvchi
bitta   tagdasturni   realizatsiya   qiladi.   Ketma-ket   funksiyalar   foydalaniladigan
ma’lumotlar   ketma-ket   aloqador   ham   hisoblanadi.   Funksiyalarning   ketma-ket
aloqadorligiga   ega   modulni   ham   ketma-ket,   ham   funksional   aloqadorlikka   ega   ikki
yoki undan ko‘proq modulga ajratish mumkin. Bunday modul bir necha funksiyalarni
bajaradi,   binobarin   uning   texnologikligi   yomon:   testlashni   tashkil   etish   murakkab,
modifikatsiyalashni bajarishda esa modul funksiyalarini fikran bo'lishga to‘g‘ri keladi.
Modullarni   rasmiylashtirish   qoidalari.   Har   bir   modul   minimum   quyidagilarni
ichiga olgan sarlavha bilan shaylantirilishi shart: 
• modul nomi; 
• uning vazifasining qisqacha bayoni; 
• o‘lchov birliklari ko‘rsatilgan holda kirish, chiqish parametrlarining qisqacha
bayoni; 
• foydalaniluvchi (chaqiriluvchi) modullar ro‘yxati; 
• algoritm (usul) yoki cheklovlar qisqacha bayoni; 
• dastur muallfi ism-sharifi; 
• identifikatsiyalovchi  axborot (versiya raqam  yoki  so‘nggi  to‘g‘rilash sanasi).
Masalan: 
Funksiya: Length_Path(n:word; L; array o f real): real; 
Maqsad: kesimlar umumlashma uzunligini belgilash. 
Boshlang'ich ma’lumotlar: 
T — kesmalar miqdori; 
D — kesmalar uzunliklari massivi (metrlarda).  
Natija: uzunlik (metrlarda) 
Chaqiriluvchi modullar: yo‘q 
Algoritm bayoni: 
• kesimlar jamg‘arish usuli bilan um um lashtiriladi, n>0; 
•   ma’naviy   qaram   ,   ya’ni   muayyan   mashina   tipiga   yo‘naltirilgan   va   skalyar
kodlar   optimallashtirishini   mashinaviy   buyruqlar   darajasida   bajariladi,   masalan,
ortiqcha   yuborishlarni   olib   tanlash,   yanada   samarali   buyruqlardan   foydalanish
hokazo; 
•   mashinaviy-mustaqil   vositalar   optim   allashtirishini   kirish   tili   darajasida
bajariladi,   masalan   sikldan   konstant   (sikl   indeksiga   bog‘liq   bo‘lmagan)   ifodalarning
hisoblanishlarini chiqarish va hokazo.  Tabiiyki,   kompilyator   ishiga   aralashish   mumkin   emas,   biroq   buyruqlar
darajasida dasturni optim allashtirishning ko‘plab imkoniyatlari mavjud. 
Konseptual   model   ta’rifiga   muvofiq   ravishda   predmetli   soha   tushunchalari,
ushbu   tushunchalarning   atributlari   va   ular   o‘rtasidagi   munosabatlar   bilan
operatsiyalarni   bajaradi.   Ishlab   chiqiluvchi   dasturiy   ta’minot   predmetli   sohasining
tushunchasiga   moddiy   predmetlar   ham,   predmetli   soha   mutaxassislari   qo‘llaydigan
abstraksiyalar ham to‘g‘ri kelishi mumkin. Modeldagi asosiy tushunchalarga muvofiq
ravishda   sinflar   qo‘yiladi.   Bunda   sinf   deyilganda   predmetli   sohaning   topshirilgan
obyektlari   guruhiga   xos   umumiy   alomatlar   jamlanmasi   tushuniladi.   Mazkur   ta’rifga
muvofiq sinflar diagrammasida har bir sinfga umumiy alomatlarni sinf qayd etadigan
obyektlar   guruhi   muvofiq   keladi.   Xususan,   Talaba   sinf!   oliy   o'quv   yurtlarida   tahsil
olayotgan   odamlar   guruhining   umumiy   alomatlarini   birlashtiradi.   Sinf   nusxasi   yoki
obyekt  (masalan,  1.1.  Ivanov)   o‘z  sinfining umumiy alomatlariga  muqarrar  ravishda
ega  va  sinfda  qayd   etilmagan   xos  alomatlariga  ega  bo‘lishi  mumkin.  Jumladan,   1.1.
Ivanov   talaba   bo‘lish   bilan   birga   yana   sportchi,   musiqachi   va   h.k.   bo‘lishi   mumkin.
Qat’iy   aytganda,   talabani   identifikatsiyalovchi   nom   ham   shunday   xos   alomat   bo‘la
oladi.   Sinf   diagrammalar   ichida   sinf   nomi   ko‘rsatilgan   to‘g‘riburchak   tarzida
tasvirlanadi   (6.3,   a-rasm).   Zaruratga   ko‘ra   sinf   tavsifnomasini,   masalan   atributlarni
shartli   ifodalarning   maxsus   shu’balaridan   foydalangan   holda   ko‘rsatishga   ruxsat
etiladi (6.3, b-rasm). Atributlar sifatida obyektlarning hal etilayotgan masala nuqtayi
nazaridan ayrim jiddiy tavsiflari, masalan identifikatsiyalovchi birliklari (ism, raqam)
taqdim etiladi. Atribut muayyan obyekt uchun doimo belgilangan ifodaga ega bo‘ladi.
Atributlarni   sinflar   diagrammasida,   odatda   atributlar   shu’basida   ko‘rsatiladi.   Sinflar
munosabati   deyilganda   statik,   ya’ni   sinflararo   vaqtga   bog‘liq   bo‘lmagan   ikki   asosiy
turi   farqlaniladi:   assotsiatsiya   va   umumlashma.   Assotsiatsiya   munosabati   sinflar
nusxalari yoki obyektlar o‘rtasida aloqa mavjudligini anglatadi, masalan Talaba sinfi
Institut sinfi bilan assotsiatsiyalanadi. Assotsiatsiya nomga ega bo‘lishi ham mumkin,
m   asalan   Tahsil   oladi.   Assotsiatsiya   nomi   bilan   bir   qatorda   odatda   nom   o‘qilishi
yo'nalishini   ko‘rsatuvchi   strelka   qo‘yiladi   («Talaba   institutda   tahsil   oladi»,   aksincha
emas).
Sinf nomi
 a 
6.3-rasm.   Sinflarning   konseptual   diagrammasida   sinf   ifodalanishi:   a   —
tavsifnomalar aniqlashtirilishsiz; b — atributlar aniqlashtirilishi bilan birga.  bSinf nomi
Atributlar Sinflar   nusxalari   o‘rtasidagi   aloqa   tegishli   obyektlar   bir-biriga   munosabat
bo‘yicha o‘ynaydigan ayrim rollarni e’tiborda tutadi. Rol assotsiatsiya yo'nalishi bilan
bog'liq.   Xususan,   talabalarga   nisbatan   institut   ularning   tahsil   olishini   amalga
oshiruvchi   tashkilot,   ya’ni   institut   rolini   o'qish   joyi   deb   nomlash   mumkin.   Institut
uchun   talaba   institut   tahsil   faoliyatining   obyekti,   ya’ni   tahsil   oluvchi.   Agar   rol   xos
nomiga ega bo‘lmasa, uning nomi munosabat bo‘yicha mazkur rol belgilanadigan sinf
nomi   bilan   to‘g‘ri   keladi   deb   hisoblashi   mumkin.   Ko‘rilayotgan   misol   uchun   bu
tegishli   ravishda   Talaba   ham   da   Institut   rollari   (6.4,   a-rasm),   biroq   rolni   ravshan
ko'rsatish ham mumkin (6.4, b-rasm). Rol, shuningdek har bir tomondan bir aloqada
qancha   obyekt   qatnashishi   mumkinligini   ko‘rsatuvchi   ko‘plik   tavsifga   ham   ega.
Ko‘plikni quyidagicha ko‘rsatishga ruxsat etiladi: 
* — 0 dan cheksizlikkacha;
<yaxlit>..* — topshirilgan miqdordan cheksizlikkacha; 
<yaxlit>— obyektlarning aniq belgilangan miqdori; 
<yaxlit1>,<yaxlit2> — obyektlar aniq m iqdorining bir necha variantlari; 
<yaxlit1>,.<yaxlit2>— obyektlar diapazonlari. 
Nazariy  nuqtayi   nazardan  atribut   ham   nusxalari   ko'rilayotgan  sinf   bilan  qat’iy
assotsiatsiyalanuvchi sinfdir. Konseptual modelda tegishli munosabatlarni aks ettirish
uchun   assotsiatsiyalar   ham   qo'llanishi   mumkin.   Masalan,   Talaba   ham   da   Nom   ikki
tushunchasining munosabatini tegishli sinflarning assotsiatsiyalari tarzida ham Talaba
sinfiga Nom atributi muvofiqlikda qo‘yiladigan variantda ham taqdim etish mumkin. 
6.4-rasm. Assotsiatsiyalar  ifodalanishi:  a — assotsiatsiyasi  nomi va uning yo‘nalishi
ko‘rsatilishi   bilan;   b   —   roliar   nomlari   ko£rsatilishi   bilan;   d   -   ko‘plikni   ko‘rsatish
bilan. Institut
Talaba Institut
Talaba Institut
TalabaTahsil 
oladi Tahsil 
oladi O’qish
joyi
120001  Ortiqcha g‘ovlardan saqlanishi uchun oddiy qoidaga rioya qilish tavsiya etiladi:
agar X ayrim obyekti real dunyoda raqam yoki matn bo’lmasa, demak u tushunchadir.
Aks holda esa bu atribut.  Xulosa   qilib   aytadigan   bo’lsak   biz   Obyektga   yo’naltirilgan   dasturlash   mavzusini
o’rganish   davomida   muhim   eng   asosiy   ma’lumotlarga   ega   bo’ldik.Obyektga
yo’naltirilgan   dasturlashning   tarixiga   nazar   soladigan   bo’lsak   1970   yillar   oxirida
ko plab   loyihalar   S   strukturaviy   dasturlash   tili   yordamida   qayta   ishlash   uchun   osonʻ
bo lgan   eng   yuqori   hajmga   erishgan.   Endi   bularga   yangicha   munosabat   talab   qilina
ʻ
boshlandi   va   ushbu   muammoni   hal   etish   uchun   dastur   tuzuvchiga   katta   hajmdagi
dasturlar   bilan   ishlash   imkonini   beruvchi   ob ektga   yo naltirilgan   dasturlash   (OYD)	
ʼ ʻ
yaratildi. Hamonki, o sha vaqtda S eng ommabop til bo lishiga qaramasdan OYD ni	
ʻ ʻ
qo llab-quvvatlamadi,   uning   ob ektga   yo naltirilgan   (keyinchalik   C++   deb   atalgan)	
ʻ ʼ ʻ
versiyasini   yaratish   zarurati   tug ildi.   Bu   versiya   o sha   Bell   Laboratories	
ʻ ʻ
kompaniyasining   xodimi   Brian   Straustrup   tomonidan   1979   yil   boshida   ishlab
chiqilgan.  Dastlab   yangi   til  „C  sinflar   bilan“  degan  nom  oldi,  lekin  1983  yilda  C++
deb   qayta   nomlangan.   U   o zida   C   tilini   to la   qamrab   oladi   (ya ni,   C   C++   uchun	
ʻ ʻ ʼ
poydevor   bo lib   xizmat   qiladi)   va   ob ektga   yo naltirilgan   dasturlashni   qo llab-	
ʻ ʼ ʻ ʻ
quvvatlash uchun mo ljallangan yangi imkoniyatlarni namoyon qiladi. Aslida C++ C	
ʻ
tilining   ob ektga   yo naltirilgan   versiyasi   hisoblanadi   shuning   uchun   C   ni   biluvchi	
ʼ ʻ
dastur tuzuvchi uchun C++ da dasturlashga o tishda yangi tilni emas, balki faqatgina	
ʻ
OYD   ning   yangi   konsepsiyasini   o rganish   kifoya   qiladi.   C++   tili   uzoq   vaqt	
ʻ
mobaynida sifatga etibor bermay, faqat miqdor oshirish, hajmni kengaytirish jihatidan
rivojlandi   va   soya   ostida   qolib   ketdi.   1990   yillar   boshida   u   ommaviy   ravishda
qo llanila   boshlandi   va   katta   yutuqlarga   erishdi,   o n   yillikning   oxirida   esa   dasturiy	
ʻ ʻ
ta minotni   qayta   ishlashda   eng   keng   foydalaniladigan   va   bugungi   kunda   ham
ʼ
peshqadamlik   qilayotgan   tilga   aylandi.   Shuni   anglash   muhimki,   C++   ni   ishlab
chiqilishi   yangi   dasturlash   tilini   yaratishga   intilish   hisoblanmaydi,   balki   faqatgina
etarli   darajada   muvaffaqiyatli   tilni   takomillashtirayapti   va   to ldirayapti.   Bunday	
ʻ
qarash,   hozirda   ham   kompyuter   tillarini   rivojlantirishning   yangi   yo nalishlarida	
ʻ
qo llanilayapti.	
ʻ Foydalanilgan adabiyotlar va saytlar.
1.Obyektga mo’ljallangan dasturlash (SH.A.Nazirov, R.V.Qobulov)
2.Dasturlash texnologiyasi (SH.A.Nazirov, G.S.Ivanova, S.M.Gaynazarov)
3.   https://telegra.ph/Obyektga-mojalangan-dasturlash-tarixi-08-23
4.   https://codelabs.rocks/blog/detailed-guide-for-modular-programming-
concept
5.   https://www.geeksforgeeks.org/modular-approach-in-programming

Mavzu:Modulli dasturlashning kelib chiqish tarixi. Reja: 1.Kirish. 2.Dasturlash tarixining bosqichma-bossqich rivojlanishi. 3.Modullar va uning xususiyatlari. 4. Konseptual model haqida. 5.Xulosa

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.

Dasturlash — predmet va texnikaning nisbatan yosh va tez г ivojlanayotgan sohasi. Mavjud dasturiy va texnik vositalarni real ishlab chiqish va tarmoqlashtirishni olib borish tajribasi doimo qayta izlanishni talab etadi. Natijada yangi usullar, uslublar va texnologiyalar paydo bo‘ladi, ular o‘z navbatida, dasturiy ta’minlashni ishlab chiqishning yanada zamonaviy vositalari uchun asos bo'lib xizmat qiladi. Yangi texnologiyalarni yaratish jarayonlarini tekshirish va ularning asosiy yo‘nalishlarini aniqlash, bu texnologiyalarni dasturlashning rivojlanish darajasi hamda dasturchilar ixtiyoridagi dasturiy va apparat vositalarining xususiyatlari bilan solishtirish maqsadga muvofiqdir. XX asrning 60-yillari boshida «dasturlash inqirozi» yuz berdi. U operatsion tizimlar kabi murakkab dasturiy ta’minotni ishlab chiqishga uringan firmalar loyihalarni tugallashning barcha muddatlaridan kechikkan edi. Loyiha joriy etilishidan oldinroq eskirib qolar, uning qiymati ortib borar va, natijada, ko‘pgina loyihalar shu tariqa tugallanmay qolib ketar edi. Ikkinchi bosqich dasturlashga tarkibiy yondashish (XX asrning 60—70 - yillari). Dasturlashga tarkibiy yondashish dasturiy ta’minlashni ishlab chiqishning barcha bosqichlarining bajarilishini qamrab oluvchi tavsiya etilayotgan texnologik usullar majmuasidan iborat. Tarkibiy yondashish asosida uncha katta bo‘lmagan (40 —50 operatorgacha) alohida kichik dasturlar ko‘rinishida keyingi amalga oshirish maqsadida murakkab tizimlar dekompozitsiyasi (qismlarga bo'laklash) yotadi. Dekompozitsiya boshqa tamoyillari (obyektli, mantiqiy va h.) ning paydo bo‘lishidan keyin ushbu usul protsedurali dekompozitsiya deb ataladi. Ilgariroq foydalanilgan dekompozitsiyaga protsedurali yondashishdan farqli ravishda tarkibiy yondashish eng sodda tuzilishdagi kichik masalalar iyerarxiyasi ko‘rinishida masalaning taqdim etilishini talab qilar edi. Loyihalashtirish, shu tariqa «quyidan yuqoriga» amalga oshirilib, kichik dasturlar interfeyslarining ishlab chiqilishini ta’m inlagan holda umumiy g‘oyaning amalga oshirilishini ko‘zda tutgan edi. Bir vaqtning o‘zida algoritmlar konstruksiyasiga cheklashlar kiritilar, ular ta’rifning formal modellari, shuningdek, algoritmlarni loyihalashtirishning maxsus usuli—qadama - qadam detallashtirish usuli tavsiya etilgan edi. Tarkibiy dasturlash tamoyillarini ta’minlash dasturlashning protsedurali tillari asosiga kiritilgan. Qoidaga ko‘ra, ular boshqaruvni uzatishning asosiy «tarkibiy» operatorlarini, kichik dasturlar kiritilishi, lokallashtirish va ma’lum otlar sohasining «ko‘rinishliligi»ning chegaralanishini ta’minlar edi. Bu guruhning eng ma’lum tillaridan PL/1, ALGOL-68, Pascal, С ni misol qilib ko‘rsatish mumkin. Tarkibiy dasturlash bilan bir vaqtda boshqa konsepsiyalarga asoslangan ko‘p miqdordagi tillar paydo boldi, ammo ularning ko‘pchiligi raqobatga bardosh bera olmadi. Qaysidir tillar unutildi, boshqa tillarning g‘oyalaridan, rivojlanayotgan tillarning keyingi versiyalaridan keyinchalik foydalanildi.

Ishlab chiqilayotgan dasturiy ta’minot murakkabligi va o‘lchamlarining keyingi o'sishi ma’lum otlar tuzilishining rivojlanishini talab qildi. Buning oqibatida tillarda ma’lum otlarning foydalanish turlarini belgilash imkoniyati paydo bo‘ldi. Ayni paytda global ma’lum otlar bilan ishlashda kelib chiqadigan xatolar miqdorini kam aytirish uchun dasturning global ma’lumotlaridan foydalanishni chegaralashga urinish kuchaydi. Natijada modulli dasturlash texnologiyasi paydo bo‘lib, rivojlana boshladi. Modulli dasturlash aynan bir xil global ma’lum otlarni alohida modullarga (kichik dasturlar kutubxonasi) ajratilishini ko‘zda tutadi. Masalan, grafik resurslar moduli, printerga chiqarish kichik dasturlari moduli (1.5-rasm). Ushbu texnologiyadan foydalanishda modullar o‘rtasidagi aloqa maxsus interfeys orqali amalga oshiriladi, ayni vaqtda modulning amalga oshirilishidan (kichik dasturlar tanasi va ba’zi «ichki» o‘zgaruvchan) foydalanish taqiqlangan. Bu texnologiyani Pascal va С (C ++) tillarining zamonaviy versiyalari, Ada va Modula tillari ta’minlaydi.

Modulli dasturlashdan foydalanish dasturiy ta’minotning bir qancha dasturchilar tomonidan ishlab chiqilishini ancha osonlashtirdi. Endilikda ulardan har biri modullar o’zaro ta’sirini maxsus aytib o‘tilgan modullararo interfeyslar orqali ta’minlab, o‘z modullarini mustaqil ishlab chiqishi mumkin edi. Bundan tashqari, modullardan keyinchalik o‘zgarishlarsiz boshqa ishlab chiqishlarda foydalanish mumkin bo'lgan. Bu dasturchilarning mehnat unumdorligini oshiradi. Amaliyot shuni ko‘rsatdiki, modulli dasturlash bilan birgalikda tarkibiy yondashish o‘lchami 100 000 operatordan oshmagan yetarli darajada ishonchli dasturlarni yaratish imkonini beradi. Kichik dasturni chaqirishda interfeysdagi xato faqat dastur bajarilgandagina aniqlanishi (modullarning ajratilgan kompilyatsiyasi tufayli bu xatolarni ilgariroq aniqlashning iloji yo‘q) modulli dasturlashning tor joyi hisoblanadi. Odatda dastur o‘lchami kattalashganda modullararo interfeyslarning murakkabligi ortadi va qaysidir daqiqadan boshlab dastur alohida qismlarining o‘zaro ta’sir ko‘rsatishini oldindan bilishning hech ham iloji yo‘q. Katta ko‘lamdagi dasturiy ta’minotni ishlab chiqish uchun obyektli yondashishdan foydalanish taklif etildi. Uchinchi bosqich — dasturlashga obyektli yondashuv (XX asrning 80-yillari o‘rtasidan 90-yillar oxirigacha). Obyektga mo‘ljallangan dasturlash har biri muayyan turdagi (klassdagi) nusxa bo‘lgan obyektlar majmuasi ko‘rinishida dasturning taqdim etilishiga asoslangan murakkab dasturiy ta’minlashni yaratish texnologiyasi sifatida aniqlanadi, bunda klasslar xususiyatlarni meros qilib olish bilan birga iyerarxiyani hosil qiladi. Bunday tizimdagi dasturiy obyektlarning o‘zaro harakati xabarlarni uzatish yo‘li orqali amalga oshiriladi (1.6-rasm). Dasturning obyektli tuzilishidan ilk bor XX asrning 60-yillaridayoq paydo bo‘lgan murakkab tizimlarni imitatsiyali modellashtirish tili - Simula da foydalanilgan. Modellashtirish tillari uchun tabiiy hisoblangan dasturni taqdim etish usuli modellashtirishning boshqa ixtisoslashtirilgan tili — Smalltalk tilida rivojlanishni davom ettirgan (XX asrning 70-yillari), keyin esa, Pascal, C++, Modula, Java kabi dasturlashning universal tillariga ko‘chirilgan. Modulli dasturlashga nisbatan obyektga mo'ljallangan dasturlashning asosiy yutug‘i dasturiy ta’minotni ishlab chiqishni ancha yengillashtiruvchi dasturiy ta’minotning «yanada tabiiyroq» bo'laklanishi hisoblanadi. Bu ma’lumotlarni yanada to‘liqroq lokallashtirish va ularning ishlov berish kichik dasturlari bilan integratsiyalashishiga olib keladi. 0 ‘z navbatida, mazkur holat dasturning alohida qismlari (obyektlar)ning mustaqil ishlab chiqilishini olib borish imkonini beradi. Bundan tashqari, obyektli yondashish merosiylik, polimorfizm, kompozitsiyalash, to‘ldirish mexanizmlariga asoslangan dasturlarni tashkil etishning yangi usullarini taklif etadi. Bu mexanizmlar nisbatan oddiy obyektlardan murakkab obyektlarni qurish imkoniyatini beradi. Natijada kodlardan qayta foydalanish ko‘rsatkichi ancha oshadi va turli maqsadlarda Global muammolar Asosiy dastur Ma’lumotlar Ma’lumotlarMa’lumotlar motlarModul 1 n1 1 Lokal ma’lumotlar kichik dasturlar .. Ma’lumotlar Ma’lumotlarMa’lumotlar motlarModul k nk 1 Lokal ma’lumotlar kichik dasturlar … 1.5-rasm. Modullardan tashkil topgan dasturlar arxitekturasi.