logo

OBYEKTGA YOʻNALTIRILGAN DASTURLASH TARIXI VA QOʻLLANISH SOHASI

Загружено в:

19.11.2024

Скачано:

0

Размер:

102.060546875 KB
MAVZU:   OBYEKTGA YO NALTIRILGAN DASTURLASH ʻ
TARIXI VA QO LLANISH SOHASI	
ʻ
  
MUNDARIJA:
KIRISH
I BOB. OBYEKTGA YO’NALTIRILGAN DASTURLASH
1.1. Oyd asosiy tushunchasi
1. 2. Oyd qo’llash sohalari
II. OYD TARIXI VA RIVOJLANISHI
2.1.  2.1. OYD rivojlanish tarixi.
2.2. Yangi versiyalarning davriy chiqarilishi. 
XULOSA
FOYDALANILGAN ADABIYOTLAR RO’YXATI
1 KIRISH
Obyekt   nima?   Obyekt   Obyektga   yo'naltirilgan   dasturlash(OYD)
texnologiyasining   eng   asosiy   kalit   tushunchasidir.   Atrofga   qarang,   haqiqiy
hayotdagi bir necha obyektlarni ko'rishingiz mumkin: stol, uy, it, mushuk, televizor
va   h.k.   Ularning   barchasining   albatta   hususiyatlari   va   bajaradigan   vazifalari
(funktsiyalari)   bor.   Masalan,   Mushuk   hususiyatlari:   rangi,   qorni   to'qligi,   yoshi,
jinsi;   funktsiyalari:   ovqat   yeyishi,   myovlashi,   yurishi,   sichqon   tutishi.   Mashina,
hususiyatlari:   tezligi,   rangi,   nomi,   narxi;   funktsiyalari:   yurishi,   to'xtashi,   oyna
artgichlarining   ishlashi,   eshiklarning   ochilib   yopilishi   v.h.k.   Bu   kabi   hayotiy
misollarning   hususiyatlari   va   funktsiyalarini   aniqlash   OYD   nuqtai   nazaridan
fikrlashning eng zo'r ko'rinishidir.   Bir daqiqaga to'xtang va hozirda atrofingizdagi
biror   narsalarni   analiz   qiling.   Har   bir   obyekt   uchun   o'zingizdan   so'rang:   "Bu
obyektning   qanday   hususiyatlari   bor?"   ,   "Qanday   vazifalarni   bajaradi?"   kabi.   Va
kuzatish   natijalaringizni   yozib   oling,   sezgan   bo'lsangiz   tuziladigan   ro'yxat
obyektning   murakkabligiga   qarab   ko'payib   boradi.   Kompyuter   indikatorining   2
ta   hususiyati   bor   o'chiq   va   yoniq;   funktsiyalari   esa   yonish   va   o'chish.   Bu   barcha
kuzatishlar OYD dunyosiga o'tkazish mumkin.
2 Dasturlashdagi   obyekt.   Dasturlashdagi
obyekt(bundan   keyin   oddiygina   obyekt   deb
ketiladi)   ham   haqiqiy   hayotdagi   obyektlarga
o'xshash:   Ular   ham   qandaydir   hususiyatlar   va
bajaradigan   funktsiyalardan   iborat   bo'ladi.
Obyektning   hususiyatlari   har   xil
dasturiy   o'zgaruvchilardan   iborat   bo'ladi   va
ularning   o'zgartirish   uchun
qandaydir   funktsiyalar   bajariladi.
Bunday   funktsiyalar   bilan   o'zgaruvchilarning
holatini berkitish mumkin ya'ni  aynan o'sha o'zgaruvchini  tashqaridan o'zgartirish
uchun   albatta   maxsus   funktsiyadan   foydalanish   kerak   bo'ladi.   Bu   jarayon
" Enkapsulatsiya "   deb   atalib,   OYDning   eng   muxim   tushunchalaradian   biridir.
Hech e'tibor berganmisiz dorilarda ham shu termin ishalitladi ya'ni kapsula(ustidan
maxsus modda bilan o'ralgan dorilar), buni misolni   Enkapsulatsiya   jarayoni  esda
yaxshi qolishi va tushunarli bo'lishi uchun keltirdim.   Mashinani tasavvur qiling,
Uni   dasturlash   obyekit   sifatida   modellashtiramiz:   Uning   o'zgaruvchilari(   hozirgi
tezligi,   qolgan   benzini,   va   h.k)   va   uning   funktsiyalari(to'xtatish,   tezlikni   oshirish,
rulni   burish,   va   h.k.).   Bu   yerda   uning   bakidagi   benzini   yurishi   tufayli   kamayib
boradi demak uning qiymatining o'zgarishi 0dan bakning sig'imigacha bo'ladi, yoki
uning   tezligi   ham   shu   kabi   aynan   qaysidir   funktsiyalarning   amalga   oshirilishi
orqali   u   ham   0   dan   maksimal   tezligigacha   o'zgarishi   mumkin.   Bulardan   tashqari
mashinaning   ba'zi   hususiyatlari   borki   ular   o'zgarmasligi   mumkin,   masalan,   rangi.
Demak, ko'rinib turiptiki mashina ham o'z navbatida bir necha mayda obyeklardan
iborat   bo'ladi.   Va   albatta   ularni   kodda   yozganda   ham   alohida   obyekt   sifatida
ifodalash kerak bu orqali nimalarga erishish mumkin:
1. Qismlilik:  Har  bir  obyektga tegishli  bo'lgan kodlar  alohida-alohida,  boshqa
obyeklarga   bog'liq   bo'lmagan   holda   boshqarish   imkoniyatiga   ega   bo'lamiz.   Bu
hammasi   emas,   tasavvur   qiling   mashina   obyektini   ifodalovchi   kodni   bo'lmasdan
3 faqat   bitta   faylda   ifodaladik;   bu   esa   murakkabligiga   qarab   yuzlab   hatto   minglab
qatorli   kod   bo'lishi   mumkin.   Undan   biror   narsani   topib-o'zgartrish   ancha
mashaqqat bo'ladi.
2. Qayta   foydalanish:   Yana   boshqa   plyus   tarafi   biz   bo'laklagan   mashinaning
detallarini boshqa obyektlarda ham ishlatishimiz mumkin. Masalan, 2 xil mashina
ularning   shunday   qismlari   borki   aynan   bir   xil,   ana   o'shalar   uchun   ikki   marta
alohida kod yozmasdan, bitta yozganimizni qayta ishlatishimiz mumkin.
3. Uzib-ulanuvchanligi:   buni   tushunish   uchun   yuqoridagi   misoldan
foydlanamiz, aytaylik, mashinaning biror qismi ishlamayapti, xo'sh nima qilinadi?
yoki   ishlab   turgan   boshqasiga   almashtiramiz,   yoki   tuzatamiz.   Mashinaning   biror
bolti   buzilsa   uni   boshqa   ishlab   turgani   bilan   almashtirasiz   yoki   tuzatamiz   lekin
mashinani almashtirmaymiz.
4 I BOB. OBYEKTGA YO’NALTIRILGAN DASTURLASH
1.1. Oyd asosiy tushunchasi
Obyektga yo’naltirilgan dasturlash – bu funksiyalar yoki mantiq emas, balki
obyektlar     va   ma’lumotlar   o’rtasida   o’zaro   aloqa   qiluvchi   patternlar   to’plamidir.
Boshqacha   qilib   aytganda,   ma’lumotlar   hamda   mantiq   obyektlarga   kiritilgan   va
obyektga   yo’naltirilgan   dasturlash   katta   dasturlarni   kichikroq,   shuningdek,   qayta
foydalanish   mumkin   bo’lgan   qismlarga   ajratishga   yordam   beradi.   Obyektga
yo’naltirilgan   dasturlash   tillariga   C#,   Java,   Python,   C++,   Visual   Basic.Net   va
JavaScript   kiradi.   Apple   asoschisi   Stiv   obyektga   yo’naltirilgan   dasturlash   haqida
quyidagicha tushuntiradi.
Nima Uchun Bizga Obyektga Yo’naltirilgan Dasturlash Kerak?
Obyektga   yo’naltirilgan   dasturlash   fikrlash   jarayoniga   va   ularni
manipulyatsiya   qilish   uchun   zarur   bo’lgan   mantiqqa   emas,   balki   ishlab
chiaruvchining   manipulyatsiya   qilmoqchi   bo’lgan   narsani   amalga   oshirishiga
qaratilgan bo’ladi.
Obyektga Yo’naltirilgan Dasturlashning Afzalliklari
 Masshtabli va yangilanishi mumkin – barcha ma’lumotlarni bir joyda
saqlash mumkin.
 Xavfsizlik – inkapsulyatsiya va abstraktsiya yordamida murakkab kod
yashiringan   bo’ladi,   texnik   xizmat   ko’rsatish   osonroq   va   protokollar
himoyalangan.
 Samaradorlik — kodni saqlash va qayta foydalanishni osonlashtiradi.
 Modullilik – inkapsulyatsiya obyektlarni avtomatik ravishda saqlashga
imkon beradi hamda hamkorlik va muammolarni bartaraf etish uchun aniq modulli
tuzilmani ta’minlaydi.
 Qayta   foydalanish   imkoniyati   –   komponentlar   qayta   ishlatilishi
mumkin, bir xil kod bir necha marta moslashtirilishi va o’zgartirilishi mumkin.
5 Obyektga Yo’naltirilgan Dasturlashning Asosiy Tamoyillari
Abstraktsiya :   Siz   velosiped   haydashni   bilasizmi?   Buni   qanday   qilasiz?   Bu
juda   oddiy   jarayon.   Siz   shunchaki   pedalni   aylantirishni   boshlaysiz   va   velosiped
ishga   tushadi.   Agar   tezroq   haydashni   istasangiz,   oyoqlaringiz   harakatini
tezlashtirasiz.   Mabodo   to’xtashni   yoki   tezlikni   pasaytirishni   xohlasangiz   pedalni
orqaga   burasiz.   Faqat   shu   ko’nikmalar   orqali   siz   velosiped   haydashni   bemalol
uddalaysiz. Demak, velosiped haydash uchun uning barcha qismlarining nomlarini
bilishingiz  kerakmi?  Yo’q,  siz  texnik  bilimsiz  velosipedni  haydashingiz   mumkin.
Bu aynan – Abstraktsiya, ya’ni oddiygina muhim tafsilotlarni aytib berish va orqa
fon   tafsilotlarini   yashirish   jarayonidir.   Obyektlar   faqat   boshqa   obyektlardan
foydalanish   uchun   tegishli   bo’lgan   ichki   mexanizmlarni   ochib   beradi,   keraksiz
kodlarni esa yashiradi.
  Inkapsulyatsiya :   Hech   qattiq   shamollaganmisiz?   Sizning   shifokoringiz
tabletka   tiniq,   ammo   ichidagi   mayda   granulalarni   ko’rishingiz   mumkin   bo’lgan
dori-darmonlarni   buyurganmi?   Bu   inkapsulyatsiyadir.   Ushbu   tamoyil   barcha
muhim   ma’lumotlar   obyekt   ichida   joylashganligini   va   faqat   tanlangan
ma’lumotlarning ochiqligini bildiradi. Inkapsulyatsiyada ma’lumotlar uning ichida
saqlanadi.   Kapsulaning   afzalligi   shundaki,   u   ichidagi   tarkibni   har   qanday   tashqi
noto’g’ri   foydalanish   va   shikastlanishdan   saqlaydi.   Inkapsulyatsiya   –   bu
ma’lumotlarni   manipulyatsiya   qiluvchi   va   ularni   tashqi   aralashuvlardan   himoya
qiluvchi ma’lumotlar hamda funksiyalarni bir-biriga bog’lash jarayonidir.
Polimorfizm :   Bu   xabarni   bir   nechta   shakllarda   ko’rsatish   qobiliyati.
Oilangizdagi   rolingiz   haqida   o’ylab   ko’ring.   Siz   qiz,   ona,   rafiq   yoki
xolavachchamisiz?   Vaziyatga   qarab,   siz   bir   vaqtning   o’zida   turli   rollardasiz.   Bu
polimorfizm,   obyektning   ko’p   shakllarni   olish   qobiliyati.   Obyektlar   xatti-
harakatlarni   almashish   uchun   mo’ljallangan   bo’ladi   va   ular   bir   nechta   shakllarni
olishlari mumkin, shuning uchun kodni takrorlash zaruratini kamaytiradi. Agar siz
ushbu so’zni ajratsangiz, ushbu ma’nolarni bildiradi: poli: ko’p, morfizm: shakllar.
Meros   –   obyektga   yo’naltirilgan   dasturlash   tillarining   asosiy
tushunchalaridan   biridir.   Meros   –   dasturchilar   ishini   optimallashtirish   uchun
6 mo’ljallangan   hisoblanadi.   Ushbu   optimallashtirishda   merosning   roli   dasturiy
ta’minot muhandislariga sinflar ierarxiyasini yaratishga imkon berishdir.
Ilgari sizga dori yozib bergan shifokorni eslaysizmi? Biroq siz ularni qabul
qilgach   ham   yaxshilanmadingiz,   shuning   uchun   shifokoringiz   kasalligingiz
bo’yicha   boshqa   mutaxassisga   murojaat   qilishingiz   kerakligini   aytadi.   Odatda
barcha   shifokorlar   bir   xil   tayyorgarlikdan   o’tadi,   keyin   ular   o’zlarining
ixtisoslashtirilgan ta’lim yo’nalishlariga ajraladilar. Barchasi shifokorlar, lekin turli
darajadagi ta’limni olishadi. Meros – bu bir sinfning boshqa sinf bilan bog’lanish
qobiliyati, xuddi odamlar bir-biriga bog’langan bo’lishidek.
Nima Uchun Obyektga Yo’naltirilgan Dasturlash Muhim?
Masshtablilik,   unumdorlik,   qayta   foydalanish   mumkinligi,   axborotni
himoyalash   va   boshqalar   obyektga   yo’naltirilgan   dasturlashning     afzalliklari
hisoblanadi.   Quyidagi   rasmlardagi   elementlardan   qaysi   birini   qurish,   o‘zgartirish
va yaratish osonroq?
Obyektga Yo’naltirilgan Dasturlashni Qanday O’rganish Mumkin?
Shunday qilib, obyektga yo’naltirilgan dasturlash – bu tashkil etish va vaqtni
tejashdir.   Obyektga   yo’naltirilgan   dasturlash   yordamida   siz   yirik   dasturlarni   juda
kichikroq   kod   bo’laklariga   bo’lishingiz   mumkin   va   uzoq   muddatga   vaqtni   tejash
uchun kod bo’limlarini qayta ishlatishingiz ham mumkin. Obyektga yo’naltirilgan
dasturlash   sizning   kompyuteringiz   uchun   ancha   foydali   vositadir   va   undan
foydalanish   sizga   yuqorida   sanab   o’tilgan   ko’p   jihatlar   sababli   samarali   bo’lishi
mumkin.
1.2. Oyd qo’llash sohalari
Obyektga   yo'naltirilgan   dasturlash   (OYD)   -   bu   dasturlashga   yangi   bir
yondashuvdir.   Hisoblash   texnikasining   rivojlanishi   va   yechilayotgan   masalalarni
tobora murakkablashuvi  dasturlashning turli modellarini (paradigmalarini) yuzaga
7 kelishiga   sabab   bo'lmoqda.   Birinchi   kompilyatorlarda   (masalan,   FORTRAN   tili)
dasturlashning   funksiyalardan   foydalanishga   asoslangan   prosedura   modelini
qo'llab   quvvatlagan.   Bu   model   yordamida   dastur   tuzuvchi   bir   nechta   ming   satrli
dasturlarni yozishi  mumkin edi. Rivojlanishning keyingi  bosqichida dasturlarning
strukturali   modeli   paydo   bo'ldi   va   ALGOL,   Pascal   va   C   tillari   kompilyatorlarida
o'z   aksini   topdi.   Strukturali   dasturlashning   mohiyati   -   dasturni   o'zaro   bog'langan
proseduralar   (bloklar)   va   ular   qayta   ishlaydigan   berilganlarning   majmuasi   deb
qarashdan   iborat.   Ushbu   model   dastur   bloklari   keng   qo'llashga,   GOTO
operatoridan imkon qadar kam foydalanishga tayangan va unda dastur tuzuvchi o'n
ming   satrdan   ortiq   dasturlarni   yarata   olgan.   Yaratilgan   dasturni   prosedurali
modelga nisbatan sozlash va nazorat qilish oson kechgan.
Murakkab masalalarni  yechish uchun dasturlashning yangi uslubiga zarurat
paydo bo'ldiki,
u   OYD   modelida   amalga   oshirildi.   OYD   modeli   bir   nechta   tayanch
konsepsiyalarga   asoslanadi.   Berilganlarni   abstraksiyalash   -   berilganlarni   yangi
turini   yaratish   imkoniyati   bo'lib,   bu   turlar   bilan   xuddi   berilganlarning   tayanch
turlari   bilan   ishlagandek   ishlash   mumkin.   Odatda   yangi   turlarni   berilganlarning
abstrakt   turi   deyiladi,   garchi   ularni   soddaroq   qilib   "foydalanuvchi   tomonidan
aniqlangan tur" deb atash mumkin.
Inkapsulyasiya  - bu berilganlar va ulami qayta ishlovchi  kodni  birlashtirish
mexanizmidir.   Inkapsulyasiya   berilganlar   va   kodni   tashqi   ta'sirdan   saqlash
imkonini beradi.
Obyektga yo'naltirilgan dasturlash tushunchasi
Yuqoridagi   ikkita   konsepsiyani   amalga   oshirish   uchun   C++   tilida   sinflar
ishlatiladi.   Sinf   termini   bilan   Obyektlar   turi   aniqlanadi.   Sinfning   har   bir   vakili
(nusxasi)   Obyekt   deb   nomlanadi.   Har   bir   Obyekt   o'zining   alohida   holatiga   ega
bo'ladi.   Obyekt   holati   uning   berilganlar-a'zolarning   ayni   paytdagi   qiymati   bilan
8 aniqlanadi.   Sinf   vazifasi   uning   funksiya-a'zolarining   sinf   Obyektlari   ustida
bajaradigan amallar imkoniyati bilan aniqlanadi.
Berilgan   sinf   Obyektini   yaratish   konstruktor   deb   nomlanuvchi   maxsus
funksiya-a'zo   tomonidan,   o'chirish   esa   destruktor   deb   nomlanuvchi   maxsus
funksiyaa'zo orqali amalga oshiriladi.
Sinfichki   berilganlarini   murojaatni   cheklab   qo'yishi   mumkin.   Cheklov
berilganlarni ochiq
(public),   yopiq   (private)   va   himoyalangan   (protected)   deb   aniqlash   bilan
tayinlanadi.   Sinf,   shu   turdagi   Obyektning   tashqi   dunyo   bilan   o'zaro   bog'lanishi
uchun   qat'iy   muloqot   shartlarini   aniqlaydi.   Yopiq   berilganlarga   yoki   kodga   faqat
shu Obyekt ichida murojaat qilish mumkin. Boshqa tomondan, ochiq berilganlarga
va   kodlarga,   garchi   ular   Obyekt   ichida   aniqlangan   bo'lsa   ham,   dasturning
ixtiyoriyjoyidan   murojaat   qilish   mumkin   va   ular   Obyektni   tashqi   olam   bilan
muloqotni   yaratishga   xizmat   qiladi.   Yaratilgan   Obyektlarni,   ularni   funksiya
a'zolariga  oddiygina  murojaat  orqali  amalga  oshiriluvchi   xabarlar   (yoki   so'rovlar)
yordamida   boshqarish   mumkin.   Keyinchalik   Windows   xabarlari   bilan
adashtirmaslik uchun so'rov termini ishlatiladi.
Vorislik   -  bu  shunday   jarayonki,  unda  bir  Obyekt   boshqusining  xossalarini
o'zlashtirishi
mumkin   bo'ladi.   Vorislik   orqali   mavjud   sinflar   asosida   hosilaviy   sinflami
qurish   mumkin   bo'ladi.   Hosilaviy   sinf   (sinf-avlod)   o'zining   ona   sinfidan   (sinf-
ajdod) berilganlar va funksiyalarni vorislik bo'yicha oladi, hamda ular satriga faqat
o'ziga   xos   bo'lgan   qirralarni   amalga   oshirishga   imkon   beruvchi   berilgan   va
funksiyalarni   qo'shadi.   Ajdod   sinfdagi   himoyalangan   berilgan-a'zolarga   va
funksiya-a'zolarga ajdod  sinfda  murojaat   qilish  mumkin  bo'ladi.  Bundan  tashqari,
hosilaviy   sinfda  ona   sinf   funksiyalari   qayta   aniqlanishi   mumkin.   Demak,   vorislik
asosida   bir-biri   bilan   "ona-bola"   munosabatidagi   sinflar   shajarasini   yaratish
mumkin.   Tayanch   sinftermini   sinflar   shajarasidagi   ona   sinfsinonimi   sifatida
9 ishlatiladi. Agar Obyekt o'z atributlarini (berilganlar-a'zolar va funksiyalar a'zolar)
faqat   bitta   ona   sinfdan   vorislik   bilan   olsa,   vakka   (yoki   oddiy)   vorislik   deyiladi.
Agar   Obyekt   o'z   atributlarini   bir   nechta   ona   sinflardan   olsa,   to'plamli   vorislik
deyiladi.
Polimorfizm   -   bu   kodning,   bajarilish   paytidan   yuzaga   keladigan   holatga
bog'liq   ravishda   o'zini   turlicha   amal   qilish   xususiyatidir.   Polimorfizm   -   bu   faqat
Obyektlar   xususiyati   bo'lmasdan,   balki   funksiyalar-a'zolar   xususiyatidir   va   ular
xususan,   bitta   nomdagi   funksiya-a'zoni,   har   xil   turdagi   argumentlarga   ega   va
bajaridagan amali unga uzatiladigan argumentlar turiga bog'liq bo'lgan funksiyalar
uchun   (o'mida)   foydalanish   imkoniyatida   namoyon   bo'ladi.   Bu   holatga
funksiyalarni   qayta   yuklash   deyiladi.   Polimorfizm   amallarga   ham   qo'llanishi
mumkin,   ya'ni   amal   mazmuni   (natijasi)   operand   (berilgan)   turiga   bog'liq   bo'ladi.
Polimorfizmning bunday turiga amallarni qayta yuklash dcyiladi.
Polimortizmning   yana   bir   ta'rifi   quyidagicha:   polimorfizm   -   bu   tayanch
sinfga   ko'rsatgichlaring   (murojaatlamning),   ulamni   virtual   funksiyalami
chaqirishdagi   turli   shakl   (qiymatlarni)   qabul   qilish   imkoniyatidir.   C++   tilining
bunday   imkoniyati   kechiktirilgan   bog'lanish   natijasidir.   Kechiktirilgan
bog'lanishda   chaqiriladigan   funksiya-a'zolar   adreslari   dastur   bajarilishi   jarayonida
dinamik   ravishda   aniqlanadi.   An'anaviy   dasturlash   tillarida   esa   bu   adreslar   statik
bo'lib,   ular   kompilyasiya   paytida   aniqlanadi   (oldindan   bog'lanish).   Kechiktirilgan
bog'lanish faqat virtual funksiyalar uchun o'rinli.
Dasturda   ishlatiladigan   har   bir   o'zgaruvchi   o'z   toifasiga   ega   va   u
quyidagilami aniqlaydi:
1. Xotindagi o'lchovimi;
2. Unda saqlannyotgan ma'lumotlarni;
3. Uning yordamida bajarilishi mumkin bulgan amallami.
C+  tilida  dasturchi   o'ziga  kerakli   ixtiyoriy  toifani   hosil   qilishi  mumkin. Bu
yangi   toifa   ichki   toifalarning   xossalari   va   ularning   funksional   imkoniyatlarini
10 o'zida   ifodalaydi.   Yangi   toifa   sinfni   e'lon   qilish   orqali   tuziladi.   Sinf   bu   -   bir-biri
bilan funksional bog'angan o'zgaruvchilar va usullar (funksiyalar) to'plamidir.
Masalan:  Mushuk nomli sinf tuzmoqchimiz. Bu yerda uning yashi, og'irligi
kabi
o'zgaruvchilar va miyovlash, sichqon tutish kabi funksiyalardan ishdatiladi.
Yoki Mashina sinfi g'ildirak, eshik, o'rindiq, oyna kabi o'zgaruvchilar va xaydash,
to'xtatish kabi funksiyalardan iborat.
Sinfdagi   o'zganavchilar   -   sinfa'zolari   yoki   sinf   xossalari   deyiladi.   Sinfdagi
funksiyalar odatda o'zgaruvchilar ustida biror bir amal bajaradi. Ulami sinfusullari
(metodlari) deb ham ataladi.
Sinfni   e'lon   qilish   uchun   class   so'zi   ,   )   ichida   esa   shu   sinfning   a'zolari   va
usallari keltiriladi. Masalan:
class non
int ogirlik ;
int baho ;
void yasash ():
void yopish ( );
void eyish ( );
Sinfni   e'lon   qilishda   xotira   ajratilmaydi.   Sinf   e'lon   qilinganda   kompilyator
faqat   shunday   (non)   sinf   borligini,   hamda   unda   qanday   qiymatlar   (ogirlik,   baho)
saqlanishi mumkinligini, ular yordamida qanday amallami (yasash, yopish, yeyish)
bajarish   mumkinligi   haqida   xabar   beradi.   Bu   sinfObyekti   hammasi   bo'lib   4   bayt
joy egallaydi (2 ta int). Obyekt sinfning biror bir nusxasi hisoblanadi.
C++   tilida   toifalarga   qiymat   o'zlashtirilmaydi,   balki   o'zgaravchiga
o'zlashtiriladi.   Shuning   uchun   to'g'ridan-to'g'ri   int   =   55   deb   yozib   bo'lmaganidek
non.baho=1200   deb   ham   bo'lmaydi.   O'zlashtirishda   xatolikka   yo'l   qo'ymaslik
11 uchun   oldin   non   sinfiga   tegishli   patir   Obyektini   bosil   qilamiz   keyin   esa   unga
kerakli qiymatlami beramiz. Masalan:
int a: // butun toifali a o'zgaruvchisi, Obyekti
non patir; //
Endi non sinfining real Obyekti aniqlanganidan so'ng uning
a'zolariga murojaat
patir. baho = 1200;
patir.ogirlik - 500;
patir.yasash () ;
Sinfni e'lon qilishda quyidagilardan foydalaniladi:
public - ochiq
private - yopiq
Sinfning barcha usul vaa'zolari boshlang'ich bolda avtomatik ravishda yopiq
bo'ladi.   Yopiq  a'zolarga   esa   faqat   shu   sinfning  usullari   orqaligina   murojaat   qilish
mumkin.  Obyektning  ochiq  a'zolariga  esa   dasturdagi  barcha  funksiyalar  murojaat
qilishi   mumkin.   Lekin   sinf   a'zolariga   murojaat   qilish   ancha   mushkul   ish
hisoblanadi. Agar to'g'ridan to'g'ri: non patir;
patir. baho = 1200;
patir.og'irlik - 500; deb yozsak xato bo'ladi.
A'zolarga murojaat qilishdan oldin uni ochiq deb e'lon qilish
kerak:
#include < lostream.h >
class non
(public :
int baho;
int ogirlik;
void yasash ( ); };
int main ()theme
non patir;
patir. baho = 1200; patir.ogirlik = 500;
12 cout   <<"men   olgan   patir"<<patir.baho   <<"so'm"<<endl;   cout   <<"uning
og'irligi ="<<patir.og'irlik <<endl ;
Obyektlar trassirovkasi
Foydalanuvchi   ma'lumotlarni   kiritmaguncha   menyu   kutib   turadi.   Agarda
foydalanuvchi   to'g'ri   qiymatni   kiritmasa,   menyu   yangilanadi,   foydalanuvchi
ma'lumotlarni boshqatdan kiritishi mumkin.
1 Qadam. O'z obyektlaringizning majburiyatini belgilovchi ro'yxat tuzing.
Faqat   sizning   topshirig'ingizni   yechish   uchun   zarur   bo'lgan   funksiyalani
amalga   oshiring.   Real   narsalar,   masalan   kassa   aparati   yoki   bank   hisob-raqami
funksiyasini amalga oshirish uchun o'n ikkilik funksiyasidan foydalaniladi. Biroq,
sizning   vazifaningiz   real   dunyoning   modelini   yaratishdan   iborat   emas.   Sizning
topshirig'ingizni yechish uchun zarur bo'ladigan vazifalarni aniqlashtinb olishingiz
lozim.
Display the menu.(Menyu kiritish) Get user input. (Foydalanuvchidan kirish
ma'lumotlarini olish)
Tavsif   muammosi   qismiga   kimaydigan   yashirin   majburiyatlarga   qarang,
Obyekt   qanday   yaratiladi?   Qanday   oddiy   faoliyatlar   ro'y   berishi   kerak,   har   bir
savdoni   boshlanishida   kassa   aparatini   tozalashga   o'xshash?   Menyuni   tuzishni
menyu yaratish misolida ko'rib chiqing. Programmist  menyuming bo'sh  obyektini
yaratadi   va   undan   so'ng   "Yangi   akkaunt   ochish".   "Yordam"   opsiyasini   qo''shadi.
Bu yerda yashirin majburiyat bor:
Menu main_menu;
main_menu.add_eption("Open mew account"): Add more options
int  input  = main_menu.get_input();  Endi  biz o'ziga xos  metodlar  ro'yxatiga
egamiz - void add_option(string option) int get input() const;
Menyu chiqarish masalasichi? Menyuni foydalamuvehidan ma'lumot kirtishni
so'ramasdan ko'rsatishning ma'nosi yo'q. Agar foydalanuvchi xato ma'lumot kiritsa
get_inpur   menyuni   bir   martadan   ortiq   kiritadi.   Shunday   qilib   display   xususiy
metod   uchun   yaxshi   kandidatdir.   Ijtimoiy   interfeysni   yakunlash   uchun   siz
konstruktorlarni   aniqlashingiz   kerak.   Ozingizdan   so'rang   obyekt   yaratish   uchun
sizga   nima   kerak.   Bazan   siz   2   ta   konstruktorga   extiyoj   sezasiz:   biri   hamma
elementlar   uchun   default   ikkinchisi   esa   foydalanuvchi   tomonidan   kiritilgan
qiymatlarni   o'matadi.   Menyu   misolida   biz   bo'sh   menyu   yaratuvchi   yagonu
konstruktor bilan kifoyalanamiz.
Nusxalash konstruktori
13 Vektorlar obyektida paralel vektorlarni yaranting. Ba'zida, bir xil uzunlikdagi
vektorlarni
ishlatyotganingizni   anglaysiz,   har   bir   saqlaydigan   qismi   obyekt   hisoblanadi.
Bu   vaziyatda,   dasturingizni   qayta   yaratish   va   elementlari   obyekt   sanaladigan
yagona vektordan foydalanish yaxshi fikrdir.
Masalan,  faraz qilaylik hisob raqami bir  qator  tavsif  va narxlardan iboratdir.
Yagona yechim ikkita vektomni saqlab turishdir:
vecter<string> descriptions:
vector<double> prices;
Vektorlarning   har   biri   bir   xil   uzunlik   va   bo'lakka   ega   bo'lib,   consisting
ofdescrip-tionsfi)   tavsifi   va   and   fif   narxlaridan   iborat,   birga   ishlanadigan
ma'lumotlar ham kiradi. Bu vektorlar paralel vektrlar deb aytiladi.
Parallel   vektorlar   katta   dasturlarda   muummoni   keltirib   chiqaradi.   Dasturchi
ishonch bosil  qilishi  kerak, vektorlar  doim o'sha uzunlikka ega, qaysiki  bir-biriga
tegishli   kesimlar   qiymatlar   bilan   to'ldirilgan   bo'ladi.   dBundants   tashqari   kesimda
ishlaydigan   ixtiyoriy   funksiya   barcha   vektorlarni   argument   sifatida   qabul   qilishi
kerak,   ya'ni   dastur   uchun   zerikarli   bo'lganlarini.   Buning   yo'li   oson.   Kesimga
qarang   va   vakil   bo'layotgan   tushunchani   toping,   so'ng   bu   tushunchani   class   ni
ichiga kiriting. Bu kesimda har bir sinfning tavsifi va marx bandidan iborat; buni
sinfga kiriting.
class Item public:
private:
string deseription:
double price;
Fayldagi manba"
• •
14 Komponentlik funksiyalari tavsifi
Komponentsiz funksiyalar tavsifi.
CashRegister   sinfi   uchun,   siz   bir   jut   faylni   yaratasiz:   cashregister.h   va
cashregister.cpp
unda interfeys va qo'llanilish mavjud.
15 II BOB. OBYEKTGA YO’NALTIRILGAN DASTURLASH
TARIXI
2.1. OYD rivojlanish tarixi.
Rivojlanish   tarixi.   Obyektga   yo’naltirilgan   dasturlash   (OYD)
protsedurali   dasturlash   g’oyasining   rivojlanishi   natijasida   paydo   bo’ldi.
Obyektga   yo’naltirilgan   dasturlashni   yanada   rivojlantirish   uchun
ko’pincha   voqea   (hodisaga   yo’naltirilgan   dasturlash,   HYD)   va
komponent (komponentga yo’naltirilgan dasturlash, KYD) tushunchalari
katta ahamiyatga ega. 
Dastlabki   tushunchalari   taklif   qilingan,   keyinchalik   paradigmaga
aylangan birinchi OYD tili Simula edi, lekin "obyekt yo’nalishi" atamasi
bu   tilni   qo’llanilish   kontekstida   ishlatilmadi.   Bu   til   1967-yilda   paydo
bo’lganida,   unda   inqilobiy   g’oyalar   taklif   qilingan:   obyektlar,   sinflar,
virtual metodlar va boshqalar, lekin bularning hammasini o’sha vaqtdagi
dasturchilar   muhim   tushunchalar   deb   bilishmagan.   Ayrim   fikrlarga
ko’ra,   bu   til   o’z   vaqtidan   ancha   oldinda   edi   va   1960-   yillarning
dasturchilari til qadriyatlarini qabul qilishga tayyor emas edilar. Shuning
uchun u boshqa dasturlash tillari bilan raqobatlasha olmadi. Simuladagi
sinf 
tushunchasini Algol konstruksiyalari yordamida to’liq aniqlash mumkin
bo’lgan(ya'ni   Simuladagi   sinf   -   bu   primitivlar   yordamida   tasvirlangan
murakkab tushuncha). 
Alan   Kaye   va   Den   Ingalls   Smalltalk   orqali   dasturlashga   yangi
nuqtai   nazarni   kiritdilar.   Bu   yerda   sinf   konsepsiyasi   tilning   boshqa
barcha   konstruksiyalari   uchun   asosiy   g’oyaga   aylandi   (ya'ni
Smalltalkdagi   sinf   -   bu   primitiv,   u   orqali   murakkab   tuzilmalar
16 tasvirlangan). Aynan u birinchi bo’lib obyektga yo’naltirilgan dasturlash
tiliga aylandi. 
Hozirgi   vaqtda   obyektga   yo’naltirilgan   paradigmani   amalga
oshiradigan   amaliy   dasturlash   tillari   soni   (tillar   ro’yxati)   boshqa
paradigmalarga   nisbatan   eng   ko’p   hisoblanadi.   Sanoatdagi   eng   keng
tarqalgan   tillar   (C++,   Delphi,   C#,   Java   va   boshqalar)   Simula   obyekt
modelini o’zida mujassam etgan. Smalltalk modeliga asoslangan tillarga
misol sifatida Objective-C, Python, Ruby kabilarni keltirish mumkin. 
Obyektga   mo’ljallangan   yondashuv.   Obyektga   mo’ljallangan
yondashuv   (OMY)   dasturiy   ta’minotning   tabiiy   rivojidagi   navbatdagi
pog’onadir.   Vaqt   o’tishi   bilan   qaysi   uslublar   ishlash   uchun   qulay-u,
qaysinisi   noqulay   ekanini   aniqlash   oson   bo’lib   bordi.   OMY   eng
muvaffaqiyatli, vaqt sinovidan o’tgan uslublarni o’zida 
samarali mujassam etadi. 
Dastlab dasturlar kommutatsiya bloki orqali kompyuterning asosiy
xotirasiga   to’g’ridan   to’g’ri   kiritilar   edi.   Dasturlar   mashina   tillarida
ikkilik   sanoq   sistemasida   yozilar   edi.   Dasturlarni   mashina   tilida
yozishda   tez-tez   xatolarga   yo’l   qo’yilar   edi,   buning   ustiga   ularni
tizimalashtirishning imkoni bo’lmagani tufayli kodni kuzatib 
borish   amalda   deyarli   mumkin   bo’lmagan   hol   edi.   Bundan   tashqari,
mashina kodlaridagi dasturni tushunish g’oyat murakkab edi. 
Protseduraviy   yondoshuv.   Shu   vaqtgacha   dasturlar   berilgan
ma'lumotlar   ustida   biror-bir   amal   bajaruvchi   protseduralar   ketma-
ketligidan   iborat   edi.   Protsedura   yoki   funksiya   ham   o’zida   aniqlangan
ketma-ket   bajariluvchi   buyruqlar   to’plamidan   iborat.   Bunda   berilgan
ma’lumotlarga murojaatlar protseduralarga 
17 ajratilgan holda amalga oshiriladi. 
Protsedura   tillari   dasturchiga   axborotga   ishlov   berish   dasturini
pastroq   darajadagi   bir   nechta   protseduraga   bo’lib   tashlash   imkonini
beradi.   Pastroq   darajadagi   bunday   protseduralar   dasturning   umumiy
tuzilmasini   belgilab   beradi.   Ushbu   protseduralarga   izchil   murojaatlar
protseduralardan 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   protseduralar   qo’shilgan   edi.   Kichik
funksiyalarni nafaqat tushunish, balki sozlash 
ham osonroq kechadi. 
Strukturaviy   dasturlashning   asosiy   g’oyasi   «bo’lakla   va
hukmronlik   qil»   prinsipiga   butunlay   mos   keladi.   Kompyuter   dasturini
masalalar   to’plamidan   iborat   deb   qaraymiz.   Oddiy   tavsiflash   uchun
murakkab bo’lgan ixtiyoriy masalani bir 
nechta,   nisbatan   kichikroq   bo’lgan,   tarkibiy   masalalarga   ajratamiz   va
bo’linishni 
toki   masalalar   tushunishi   uchun   yetarli   darajada   oddiy   bo’lguncha
davom ettiramiz. 
Misol   sifatida   kompaniya   xizmatchilarining   o’rtacha   ish   haqini
hisoblashni olamiz. Bu masala sodda emas. Uni qator qism masalalarga
bo’lishimiz mumkin: 
1. Har bir xizmatchining oylik maoshi qanchaligini aniqlaymiz. 
2. Kompaniya xodimlari sonini aniqlaymiz. 
3. Barcha ish haqlarini yig’amiz. 
4. Hosil bo’lgan yig’indini kompaniya xodimlari soniga bo’lamiz. 
18 Xodimlarning   oylik   maoshlari   yig’indisini   hisoblash   jarayonini
ham bir necha bosqichlarga ajratish mumkin. 
1. Har bir xodim haqidagi yozuvni o’qiymiz. 
2. Ish haqi to’g’risidagi ma’lumotni olamiz. 
3. Ish haqi qiymatini yig’indiga qo’shamiz. 
4. Keyingi xodim haqidagi yozuvni o’qiymiz. 
O’z   navbatida,   har   bir   xodim   haqidagi   yozuvni   o’qish   jarayonini
ham nisbatan kichikroq qism operatsiyalarga ajratish mumkin: 
1. Xizmatchi faylini ochamiz. 
2. Kerakli yozuvga o’tamiz. 
3. Ma'lumotlarni diskdan o’qiymiz.
Strukturaviy dasturlash murakkab masalalarni yechishda yetarlicha
muvafaqqiyatli   uslub   bo’lib   qoldi.   Lekin   1980-yillar   oxirlarida
strukturaviy dasturlashning ham ayrim kamchiliklari ko’zga tashlandi. 
Birinchidan,   berilgan   ma'lumotlar   (masalan,   xodimlar   haqidagi
yozuv)   va   ular   ustidagi   amallar   (izlash,   tahrirlash)   bajarilishining   bir
butun   tarzda   tashkil   etilishidek   tabiiy   jarayon   realizatsiya   qilinmagan
edi. Aksincha, protseduraviy dasturlash 
berilganlar   strukturasini   bu   ma’lumotlar   ustida   amallar   bajaradigan
funksiyalarga ajratgan edi. 
Ikkinchidan, dasturchilar doimiy tarzda eski muammolarning yangi
yechimlarini   ixtiro   qilar   edilar.   Bu   vaziyat   go’yoki   velosipedni   qayta
ixtiro   qilishga   o’xshab   ketar   edi.   Ko’plab   dasturlarda   takrorlanuvchi
bloklarni  ko’p martalab  qo’llash imkoniyatiga  bo’lgan xohish tabiiydir.
Buni radio ishlab chiqaruvchi 
19 tomonidan   priyomnikni   yig’ishga   o’xshatish   mumkin.   Konstruktor   har
safar   diod   va   tranzistorni   ixtiro   qilmaydi.   U   oddiygina   –   oldin
tayyorlangan   radio   detallaridan   foydalanadi   xolos.   Dasturiy   ta’minotni
ishlab chiquvchilar  uchun esa bunday imkoniyat  ko’p yillar  mobaynida
yo’q edi. 
Boshqa   tomondan,   protsedurali   dasturlash   koddan   takroran
foydalanish   imkonini   cheklab   qo’yadi.   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
inkapsulyatsiyalanmagan. Bu nimaga olib keladi? Shunga olib keladiki,
har bir protsedura ma’lumotlarni nima qilish kerakligini va ular qayerda
joylashganini   bilmog’i   lozim   bo’ladi.   Agar   protsedura   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   taqdimotning   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’zgarishlarni sodir bo’lishiga olib kelar edi. 
Modulli   dasturlashda,   masalan,   Modula2   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   jarayonlarni   bo’lib   tashlasa,
modulli   dasturlash,   undan   farqli   o’laroq,   ularni   birlashtiradi.   Modul
ma’lumotlarning   o’zidan   hamda   ma’lumotlarga   ishlov   beradigan
20 protseduralardan   iborat.   Dasturning   boshqa   qismlariga   moduldan
foydalanish   kerak   bo’lib   qolsa,   ular   modul   interfeysiga   murojaat   etadi.
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   qadam-baqadam
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 prosedurali dasturlash tillarida turni kengaytirish usuli,
agar   «agregatlash»   deb   ataluvchi   usul   yordamida   boshqa   turlarni
yaratishni   hisobga   olmaganda,   mavjud   emas   edi.   Xullas,   modulli
dasturlash   – bu yana protseduraga mo’ljallangan 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) bu talablarga to’la javob
beradi.   Bunda   dasturiy   komponentlarni   ko’p   martalab   qo’llash   va
berilganlarni   manipulatsiya   qiluvchi   usullar   bilan   birlashtirish
imkoniyati mavjud. 
OYDning   asosiy   maqsadi   berilganlar   va   ular   ustida   amal
bajaruvchi protseduralarni yagona obyekt deb qarashdan iboratdir. 
Obyektga   mo’ljallangan   yondashuvning   afzalliklari   va
maqsadlari.   OMY   dasturiy   ta’minotni   ishlab   chiqishda   oltita   asosiy
21 maqsadni   ko’zlaydi.   OMY   paradigmasiga   muvofiq   ishlab   chiqilgan
dasturiy ta’minot quyidagi xususiyatlarga ega bo’lmog’i lozim: 
1)tabiiylik; 
2) ishonchlilik; 
3) qayta qo’llanish imkoniyati; 
4) kuzatib borishning qulayligi: 
5) takomillashishga qodirlik; 
6) yangi versiyalarni davriy chiqarishning qulayligi. 
Tabiiylik.   OMY   yordamida   tabiiy   dasturiy   ta'minot   yaratiladi.
Tabiiy   dasturlar   tushunarliroq   bo’ladi.   Dasturlashda   «massiv»   yoki
«xotira   sohasi»   kabi   atamalardan   foydalanish   o’rniga,   yechilayotgan
masala   mansub   bo’lgan   soha   atamalaridan   foydalanish   mumkin.   Ishlab
chiqilayotgan dasturni kompyuler tiliga moslash o’rniga, OMY aniq bir
sohaning atamalaridan foydalanish imkonini beradi. 
Ishonchlilik.   Yaxshi   dasturiy   ta'minot   boshqa   har   qanday
mahsulotlar,   masalan,   muzlatgich   yoki   televizorlar   kabi   ishonchli
bo’lmog’i lozim. 
Puxta   ishlab   chiqilgan   va   tartib   bilan   yozilgan   obyektga
mo’ljallangan   dastur   ishonchli   bo’ladi.   Obyektlarning   modulli   tabiati
dastur   qismlaridan   birida,   uning   boshqa   qismlariga   tegmagan   holda,
o’zgartirishlarni   amalga   oshirish   imkonini   beradi.   Obyekt   tushunchasi
tufayli,   axborotga   ushbu   axborot   kerak   bo’lgan   shaxslar   egalik   qiladi,
ma’suliyat   esa   berilgan   funksiyalarni   bajaruvchilar   zimmasiga
yuklatiladi. 
Qayta   qo’llanish   imkoniyati.   Quruvchi   uy   qurishga   kirishar   ekan,
har gal g’ishtlarning  yangi turini  ixtiro  qilmaydi.  Radiomuhandis  yangi
22 sxemani yaratishda, har gal rezistorlarning yangi turini o’ylab topmaydi.
Unda nima uchun dasturchi “g’ildirak ixtiro qilaverishi kerak?” Masala
o’z   yechimini   topgan   ekan,   bu   yechimdan   ko’p   martalab   foydalanish
lozim. 
Malakali ishlab chiqilgan obyektga mo’ljallangan sinflarni bemalol
takroran   ishlatish   mumkin.   Xuddi   modullar   kabi   obyektlarni   ham   turli
dasturlarda   takroran   qo’llash   mumkin.   Modulli   dasturlashdan   farqli
o’laroq,   OMY   mavjud   obyektlarni   kengaytirish   uchun   vorislikdan,
sozlanayotgan   kodni   yozish   uchun   esa   polimorfizmdan   foydalanish
imkonini beradi. 
Kuzatib borishda qulaylik. Dasturiy mahsulotning ish berish davri
uning   ishlab   chiqilishi   bilan   tugamaydi.   Dasturni   ishlatish   jarayonida
kuzatib borish deb nomlanuvchi jarayon muhimdir. Dasturga sarflangan
60 foizdan 80 foizgacha vaqt kuzatib borishga ketadi. Ishlab chiqish esa
ish berish siklining 20 foizinigina tashkil etadi. 
Puxta   ishlangan   obyektga   mo’ljallangan   dastur   ishlatishda   qulay
bo’ladi. Xatoni bartaraf etish uchun faqat bitta o’ringa to’g’rilash kiritish
kifoya qiladi. Chunki ishlatishdagi o’zgarishlar, boshqa barcha obyektlar
takomillashtirish afzalliklaridan avtomatik ravishda foydalana boshlaydi.
O’zining tabliyligi tufayli dastur matni boshqa ishlab chiquvchilar uchun
tushunarli bo’lmog’i lozim. 
Kengayishga   qodirlik.   Foydalanuvchilar   dasturni   kuzatib   borish
paytida   tez   tez   tizimga   yangi   funksiyalarni   qo’shishni   iltimos   qiladilar.
Obyektlar   kutubxonasini   tuzishning   o’zida   ham   ushbu   obyektlarning
funksiyalarini kengaytirishga to’g’ri keladi. 
23 Dasturiy   ta'minot   statik   (qotib   qolgan)   emas.   Dasturiy   ta’minot
foydali bo’lib qolishi uchun, uning imkoniyatlarini  muttasil kengaytirib
borish   lozim.   OMY   da   dasturni   kengaytirish   usullari   ko’p.   Vorislik,
polimorfizm,   qayta   aniqlash,   vakillik   hamda   ishlab   chiqish   jarayonida
foydalanish mumkin bo’lgan ko’plab boshqa 
shablonlar shular jumlasidandir. 
2.2. Yangi versiyalarning davriy chiqarilishi. 
Zamonaviy   dasturiy   mahsulotning   ish   berish   davri   ko’p   hollarda
haftalar bilan o’lchanadi. OMY tufayli dasturlarni ishlab chiqish davrini
qisqartirishga   erishildi,   chunki   dasturlar   ancha   ishonchli   bo’lib
bormoqda, kengayishi osonroq hamda takroran qo’llanishi mumkin. 
Dasturiy   ta’minotning   tabiiyligi   murakkab   tizimlarning   ishlab
chiqilishini   osonlashtiradi.   Har   qanday   ishlanma   hafsala   bilan
yondashuvni talab qiladi, shuning uchun tabiiylik dasturiy ta’minotning
ishlab chiqish davrlarini qisqartirish imkonini 
beradi,   chunki   butun   diqqat-e’tiborni   yechilayotgan   masalaga   jalb
qildiradi. 
Dastur qator obyektlarga bo’lingach, har bir alohida dastur qismini
boshqalari   bilan   parallel   ravishda   ishlab   chiqish   mumkin   bo’ladi.   Bir
nechta ishlab  chiquvchi  sinflarni  bir-birlaridan  mustaqil  ravishda ishlab
chiqishi   mumkin   bo’ladi.   Ishlab   chiqishdagi   bunday   parallellik   ishlab
chiqish vaqtini qisqartiradi.
24 XULOSA
Kompyuterning   elektron   qurilmalari   ishlashning   fizik   tamoyillari   shundan
iboratki,   kompyuter   faqat   bir   va   noldan   iborat   buyruqlarni   —   kuchlanishning
pasayishi   ketma-ketligini,   ya ni   mashina   kodini   idrok   eta   oladi.   Kompyuterlarʼ
rivojlanishining dastlabki bosqichida odam kompyuterga tushunarli tilda, mashina
kodlarida dasturlar tuzishi kerak edi. Har bir ko rsatma birliklar va nollarning turli	
ʻ
kombinatsiyasi   sifatida   ifodalangan   opkod   hamda   operand   manzillaridan   iborat
edi.   Shunday   qilib,   protsessor   uchun   har   qanday   dastur   o sha   paytda   birlar   va	
ʻ
nollar ketma-ketligi sifatida qaragan.
Keyinchalik   kompyuter   bilan   muloqot   qilish   amaliyoti   shuni   ko rsatdiki,	
ʻ
bunday tilni o zlashtirish qiyin va noqulaydir. Uni ishlatganda 1 yoki 0 ni noto g ri	
ʻ ʻ ʻ
ketma-ketlikda   yozib   ko plab   xatolarga   yo l   qo yish   ehtimoli   juda   yuqori   edi.	
ʻ ʻ ʻ
Dasturni   boshqarish   juda   qiyin   bo lgan.   Bundan   tashqari,   mashina   kodlarida	
ʻ
dasturlashda   kompyuterning   ichki   tuzilishini,   har   bir   blokning   ishlash   prinsipini
yaxshi   bilish   kerak   edi   va   bunday   tildagi   eng   yomon   narsa   shundaki,   bu   tildagi
dasturlar   — birlar va nollarning juda uzun ketma-ketligi mashinaga bog liq, ya ni	
ʻ ʼ
har   bir   kompyuter   uchun   o z   dasturini   tuzish   kerak   edi   va   mashina   kodlarida	
ʻ
dasturlash   juda   ko p   narsa:   vaqt,   ish   va   dasturchining   e tiborini   oshirishni   talab	
ʻ ʼ
etardi.
Tez orada mashina kodini yaratish jarayonini avtomatlashtirish mumkinligi
ma lum   bo ldi.   1950-yildan   boshlab   dasturlarni   yozish   uchun	
ʼ ʻ   mnemonik
til   —   Assembler   tili dan   foydalanila   boshlandi.   Assembler   tili   mashina   kodini
inson uchun qulayroq shaklda ko rsatishga imkon berdi: buyruqlar va bu buyruqlar	
ʻ
bajariladigan   obyektlarni   belgilash   uchun   buyruqning   mohiyatini   aks   ettiruvchi
ikkilik   kodlar   o rniga   harflar   yoki   qisqartirilgan   maxsus   so zlar   qo llanilgan.	
ʻ ʻ ʻ
Masalan,   assembler   tilida   ikkita   raqamni   qo shish   bo yicha   ko rsatma	
ʻ ʻ ʻ   add   so zi	ʻ
bilan ifodalanadi, uning mashina kodi   000010   tarzida bo ladi.	
ʻ
Assembler quyi darajadagi dasturlash tilidir. Quyi darajadagi dasturlash tili,
bu   muayyan   turdagi   protsessorga   yo naltirilgan   va   uning   xususiyatlarini   hisobga	
ʻ
25 oladigan   dasturlash   tili   demakdir.   Bunday   holda,   „quyi“   „yomon“   degani   emas,
balki   bu   shuni   anglatadiki,   til   operatorlari   mashina   kodiga   yaqin   va   maxsus
protsessor   ko rsatmalariga   qaratilgan   bo ladi.   Assemblar   tilining   paydo   bo lishiʻ ʻ ʻ
dasturchilarning   hayotini   sezilarli   darajada   osonlashtirdi,   chunki   endi   ular   ko zda	
ʻ
miltillovchi nollar va birlar o rniga oddiy tilga yaqin belgilardan iborat buyruqlar	
ʻ
bilan   dastur   yozishlari   mumkin   edi.   O sha   vaqt   uchun   bu   til   innovatsiya   edi   va	
ʻ
mashhur edi, chunki u kichik dasturlarni yozishga imkon berardi, bu esa o sha davr	
ʻ
mashinalari uchun muhim mezon sanalgan 1
.
Ammo   u   orqali   yirik   dasturiy   ta minotlar   ishlab   chiqish   murakkabligi	
ʼ
bo lganligi   bois   uchinchi   avlod   tillari   hisoblanmish   yuqori   darajadagi   tillarning	
ʻ
paydo bo lishiga olib keldi. Ammo assemblerdan foydalanish shu bilan tugamadi,	
ʻ
u   bugungi   kungacha   tor   doiralarda   mashhur   bo lib   kelmoqda.   Hozirgi   vaqtda   u	
ʻ
dasturlarning   alohida   qismlarini   yozishda   yoki   ba zan   dasturlarning   o zini	
ʼ ʻ
yozishda qo llaniladi. Misol  tariqasida, drayverlar, o yinlar  va operatsion tizimlar	
ʻ ʻ
yuklagichi ( bootloader )ni yozishda assemblerga murojaat etiladi. Shuni unutmaslik
kerakki,   bu   til   hakerlar   orasida   ham   mashhurdir,   chunki   bu   tilda   yozilgan
dasturning   tezligi   yuqori   darajadagi   dasturlash   tilida   yozilgan   dastur   tezligidan
ancha   yuqori   bo lishidadir.   Buning   sababi   shundaki,   assemblerda   yozilgan   dastur	
ʻ
hajmi   juda   kichik   bo ladi.   Antivirus   ishlab   chiquvchilari   o z   dasturlarining   ba zi	
ʻ ʻ ʼ
modullarida assemblerdan ham foydalanadilar.
1
 К. Грегори. Использование Visual C++6. М. Вильяме. 1999. 20.Крейг Арнуш. Borland C++: освой 
самостоятельно. М. Бином. 1997.
26 FOYDALNILGAN ADABIYOTLAR RO’YXATI
1.  Гради   Буч .  Объектно-ориентированный анализ и проектирование с 
примерами приложений на С++. Невский диалект. 2001.
2. И. Грехем. Объектно-ориентированные методы. Принципы и практика. 
Вильямс. 2004.
3. Г.С.Иванова. Объектно-ориентированное программирование. Учебник. 
МГТУ им. Баумана. 2003.
4. М.Фаулер, K.Скотт. (OYD) в кратком изложении. Применение 
стандартного языка объектного моделирования. М. Мир. 1999.
5. Г.Буч, Д. Рамбо, А. Джекобсон. Язык (OYD): руководство пользователя. 
М. ДМК. 2000.
6. Пол Айра. Объектно-ориентированное программирование на С++, Второе 
издание, М. Бином, 1999.
7. В.В.Подбельский. Язык С++. М. Финансы и статистика. 1996.
8. Б. Страуструп. Язык программирования С++. Третье издание. М. Бином. 
1999.
9. Д. Либерти. Освой самостоятельно С++: 10 минут на урок. Пер с англ. 
Вильямс. 2004.
10. Я.К.Шмидский. Программирование на языке С++. Са- моучитель. 
Учебное пособие. Диалектика. 2004.
11. А. Б. Крупник. Изучаем С++. Питер. 2003.
12. С. Мейерс. Наиболее эффективное использование С++. 35 новых 
рекомендаций. ДМК-Пресс. 2000.
13. Т. Фейсон. Объектно-ориентированное программирование на С++ 4.5. 
Киев. Диалектика, 1996.
14. Г. Шилдт. Самоучитель С++. Второе издание. СПб. BHV. 1998.
27 15. Г. Шилдт. Теория и практика С++. СПб. BHV. 1996.
16. Дж. Элджер. С++: библиотека программиста. СПб. Питер. 1999.
17. Д.В. Николаенко. Самоучитель по Visual C++.СПб. 2001.
18. П. Киммел. Borland C++5. СПб. BHV. 1997.
19. К. Грегори. Использование Visual C++6. М. Вильяме. 1999. 20.Крейг 
Арнуш. Borland C++: освой самостоятельно. М. Бином. 1997.
21. Р. Лейнекер. Энциклопедия Visual C++6. СПб. Питер. 1999.
22. Н.Ю.Секунов. Самоучитель Visual C++6. СПб. BHV. 1999.
23. К. Паппас., У. Мюррей. Visual C++6: Руководство разработчика. Киев. 
BHV, 2000.
28

MAVZU: OBYEKTGA YO NALTIRILGAN DASTURLASH ʻ TARIXI VA QO LLANISH SOHASI ʻ MUNDARIJA: KIRISH I BOB. OBYEKTGA YO’NALTIRILGAN DASTURLASH 1.1. Oyd asosiy tushunchasi 1. 2. Oyd qo’llash sohalari II. OYD TARIXI VA RIVOJLANISHI 2.1. 2.1. OYD rivojlanish tarixi. 2.2. Yangi versiyalarning davriy chiqarilishi. XULOSA FOYDALANILGAN ADABIYOTLAR RO’YXATI 1

KIRISH Obyekt nima? Obyekt Obyektga yo'naltirilgan dasturlash(OYD) texnologiyasining eng asosiy kalit tushunchasidir. Atrofga qarang, haqiqiy hayotdagi bir necha obyektlarni ko'rishingiz mumkin: stol, uy, it, mushuk, televizor va h.k. Ularning barchasining albatta hususiyatlari va bajaradigan vazifalari (funktsiyalari) bor. Masalan, Mushuk hususiyatlari: rangi, qorni to'qligi, yoshi, jinsi; funktsiyalari: ovqat yeyishi, myovlashi, yurishi, sichqon tutishi. Mashina, hususiyatlari: tezligi, rangi, nomi, narxi; funktsiyalari: yurishi, to'xtashi, oyna artgichlarining ishlashi, eshiklarning ochilib yopilishi v.h.k. Bu kabi hayotiy misollarning hususiyatlari va funktsiyalarini aniqlash OYD nuqtai nazaridan fikrlashning eng zo'r ko'rinishidir. Bir daqiqaga to'xtang va hozirda atrofingizdagi biror narsalarni analiz qiling. Har bir obyekt uchun o'zingizdan so'rang: "Bu obyektning qanday hususiyatlari bor?" , "Qanday vazifalarni bajaradi?" kabi. Va kuzatish natijalaringizni yozib oling, sezgan bo'lsangiz tuziladigan ro'yxat obyektning murakkabligiga qarab ko'payib boradi. Kompyuter indikatorining 2 ta hususiyati bor o'chiq va yoniq; funktsiyalari   esa yonish va o'chish. Bu barcha kuzatishlar OYD dunyosiga o'tkazish mumkin. 2

Dasturlashdagi obyekt. Dasturlashdagi obyekt(bundan keyin oddiygina obyekt deb ketiladi) ham haqiqiy hayotdagi obyektlarga o'xshash: Ular ham qandaydir hususiyatlar va bajaradigan funktsiyalardan iborat bo'ladi. Obyektning hususiyatlari har xil dasturiy o'zgaruvchilardan iborat bo'ladi va ularning o'zgartirish uchun qandaydir funktsiyalar bajariladi. Bunday funktsiyalar bilan o'zgaruvchilarning holatini berkitish mumkin ya'ni aynan o'sha o'zgaruvchini tashqaridan o'zgartirish uchun albatta maxsus funktsiyadan foydalanish kerak bo'ladi. Bu jarayon " Enkapsulatsiya " deb atalib, OYDning eng muxim tushunchalaradian biridir. Hech e'tibor berganmisiz dorilarda ham shu termin ishalitladi ya'ni kapsula(ustidan maxsus modda bilan o'ralgan dorilar), buni misolni Enkapsulatsiya jarayoni esda yaxshi qolishi va tushunarli bo'lishi uchun keltirdim. Mashinani tasavvur qiling, Uni dasturlash obyekit sifatida modellashtiramiz: Uning o'zgaruvchilari( hozirgi tezligi, qolgan benzini, va h.k) va uning funktsiyalari(to'xtatish, tezlikni oshirish, rulni burish, va h.k.). Bu yerda uning bakidagi benzini yurishi tufayli kamayib boradi demak uning qiymatining o'zgarishi 0dan bakning sig'imigacha bo'ladi, yoki uning tezligi ham shu kabi aynan qaysidir funktsiyalarning amalga oshirilishi orqali u ham 0 dan maksimal tezligigacha o'zgarishi mumkin. Bulardan tashqari mashinaning ba'zi hususiyatlari borki ular o'zgarmasligi mumkin, masalan, rangi. Demak, ko'rinib turiptiki mashina ham o'z navbatida bir necha mayda obyeklardan iborat bo'ladi. Va albatta ularni kodda yozganda ham alohida obyekt sifatida ifodalash kerak bu orqali nimalarga erishish mumkin: 1. Qismlilik: Har bir obyektga tegishli bo'lgan kodlar alohida-alohida, boshqa obyeklarga bog'liq bo'lmagan holda boshqarish imkoniyatiga ega bo'lamiz. Bu hammasi emas, tasavvur qiling mashina obyektini ifodalovchi kodni bo'lmasdan 3

faqat bitta faylda ifodaladik; bu esa murakkabligiga qarab yuzlab hatto minglab qatorli kod bo'lishi mumkin. Undan biror narsani topib-o'zgartrish ancha mashaqqat bo'ladi. 2. Qayta foydalanish: Yana boshqa plyus tarafi biz bo'laklagan mashinaning detallarini boshqa obyektlarda ham ishlatishimiz mumkin. Masalan, 2 xil mashina ularning shunday qismlari borki aynan bir xil, ana o'shalar uchun ikki marta alohida kod yozmasdan, bitta yozganimizni qayta ishlatishimiz mumkin. 3. Uzib-ulanuvchanligi: buni tushunish uchun yuqoridagi misoldan foydlanamiz, aytaylik, mashinaning biror qismi ishlamayapti, xo'sh nima qilinadi? yoki ishlab turgan boshqasiga almashtiramiz, yoki tuzatamiz. Mashinaning biror bolti buzilsa uni boshqa ishlab turgani bilan almashtirasiz yoki tuzatamiz lekin mashinani almashtirmaymiz. 4

I BOB. OBYEKTGA YO’NALTIRILGAN DASTURLASH 1.1. Oyd asosiy tushunchasi Obyektga yo’naltirilgan dasturlash – bu funksiyalar yoki mantiq emas, balki obyektlar va ma’lumotlar o’rtasida o’zaro aloqa qiluvchi patternlar to’plamidir. Boshqacha qilib aytganda, ma’lumotlar hamda mantiq obyektlarga kiritilgan va obyektga yo’naltirilgan dasturlash katta dasturlarni kichikroq, shuningdek, qayta foydalanish mumkin bo’lgan qismlarga ajratishga yordam beradi. Obyektga yo’naltirilgan dasturlash tillariga C#, Java, Python, C++, Visual Basic.Net va JavaScript kiradi. Apple asoschisi Stiv obyektga yo’naltirilgan dasturlash haqida quyidagicha tushuntiradi. Nima Uchun Bizga Obyektga Yo’naltirilgan Dasturlash Kerak? Obyektga yo’naltirilgan dasturlash fikrlash jarayoniga va ularni manipulyatsiya qilish uchun zarur bo’lgan mantiqqa emas, balki ishlab chiaruvchining manipulyatsiya qilmoqchi bo’lgan narsani amalga oshirishiga qaratilgan bo’ladi. Obyektga Yo’naltirilgan Dasturlashning Afzalliklari  Masshtabli va yangilanishi mumkin – barcha ma’lumotlarni bir joyda saqlash mumkin.  Xavfsizlik – inkapsulyatsiya va abstraktsiya yordamida murakkab kod yashiringan bo’ladi, texnik xizmat ko’rsatish osonroq va protokollar himoyalangan.  Samaradorlik — kodni saqlash va qayta foydalanishni osonlashtiradi.  Modullilik – inkapsulyatsiya obyektlarni avtomatik ravishda saqlashga imkon beradi hamda hamkorlik va muammolarni bartaraf etish uchun aniq modulli tuzilmani ta’minlaydi.  Qayta foydalanish imkoniyati – komponentlar qayta ishlatilishi mumkin, bir xil kod bir necha marta moslashtirilishi va o’zgartirilishi mumkin. 5