logo

OB’EKTLI DASTURLASH ASOSLARI OB’EKTGA YO’NALTIRILGAN DASTURLASH

Загружено в:

08.08.2023

Скачано:

0

Размер:

38.3544921875 KB
Mavzu:   OB’EKTLI   DASTURLASH   ASOSLARI   OB’EKTGA
YO’NALTIRILGAN DASTURLASH 
Reja:
1.   Ob’ektga yo’naltirilgan dasturlash.
2.   Vorislik.
3.   Inkapsulyasiya.
4.   Polimorfizm.
  Dasturlash   tillari   yaratilgandan   buyon   kompyuter   olimlari   kompyuterni
dasturlashning   bir   necha   usullarini   ishlab   chiqishga   harakat   qilishdi.   Vaqt   o'tib,
dasturlash   tillarining   yanada   rivojlangan   turlari   paydo   bo'lganligi   sababli,
dasturlarni   yozish   uchun   ishlatiladigan   usul   ham   o'zgargan.   Metodologiya,
algoritmlar,   kontseptualizatsiya   yillar   mobaynida   rivojlana   boshladi.   Avval   va
hozirda,   obyektga   yo'naltirilgan   dasturlash   har   qanday   dasturni   dasturlashning
mashhur metodologiyasidir.
Ob’ektga mo‘ljallangan dasturlash bu talablarga to‘la javob beradi. Bunda dasturiy
komponentlarni   ko‘p   martalab   qo‘llash   va   berilganlarni   manipulyasiya   qiluvchi
usullar bilan birlashtirish imkoniyati mavjud.         
Ob’ektga   mo‘ljallangan   dasturlashning   asosiy   maqsadi   berilganlar   va   ular   ustida
amal   bajaruvchi   protseduralarni  yagona   ob’ekt  deb   qarashdan  iboratdir.  Ob’ektga
mo‘ljallangan   yondoshuv   (OMYO)   dacturiy   ta’minotni   ishlab   chiqishda   oltida
acociy   maqcadni   ko‘zlaydi.   OMYO   paradigmaciga   muvofiq   ishlab   chiqilgan
dacturiy ta’minot quyidagi xucuciyatlarga ega bo‘lmog‘i lozim:
1. tabiiylik;
2. ishonchlilik;
3. qayta qo‘llanish imkoniyati;
4. kuzatib borishda qulaylik;
5. takomillashishga qodirlik;
6. yangi verciyalarni davriy chiqarishning qulayligi.
Tabiiylik.   OMYO   yordamida   tabiiy   dacturiy   ta’minot   yaratiladi.   Tabiiy   dacturlar
tushunarliroq   bo‘ladi.   Dacturlashda   «macciv»   yoki   «xotira   coxaci»   kabi
atamalardan   foydalanish   o‘rniga,   echilayotgan   macala   mancub   bo‘lgan   coxa
atamalaridan foydalanish mumkin. Ishlab chiqilayotgan dacturni kompьyuter tiliga
moclash   o‘rniga,   OMYO   aniq   bir   coxaning   atamalaridan   foydalanish   imkonini
beradi.   Ishonchlilik.   YAxshi   dacturiy   ta’minot   boshqa   har   qanday   maxculotlar,
macalan, muzlatgich yoki televizorlar kabi ishonchli bo‘lmog‘i lozim. Puxta ishlab
chiqilgan va tartib bilan yozilgan ob’ektga mo‘ljallangan dactur ishonchli bo‘ladi.
Ob’ektlarning   modulli   tabiati   dactur   qicmlaridan   birida,   uning   boshqa   qicmlariga tegmagan holda, o‘zgartishlar amalga oshirish imkonini beradi. Ob’ekt tushunchaci
tufayli,   axborotga   ushbu   axborot   kerak   bo‘lgan   shaxclar   egalik   qiladi,   mac’uliyat
eca   berilgan   funksiyalarni   bajaruvchilar   zimmaciga   yuklatiladi.   Qayta   qo‘llanish
imkoniyati. Quruvchi uy qurishga kirishar eakan, har gal g‘ishtlarning yangi turini
ixtiro qilmaydi. Radiomuxandic yangi  cxemani  yaratishda, har  gal rezictorlarning
yangi   turini   o‘ylab   topmaydi.   Unda   nima   uchun   dacturchi   «G‘ildirak   ixtiro
qilaverishi kerak»? Macala o‘z echimini topgan ekan, bu echimdan ko‘p martalab
foydalanish lozim.
Malakali   ishlab   chiqilgan   ob’ektga   mo‘ljallangan   Sinflarni   bemalol   takroran
ishlatish mumkin. Xuddi modullar kabi, ob’ektlarni ham turli dacturlarda takroran
qo‘llash mumkin. Modulli dacturlashdan farqli o‘laroq, OMYO mavjud ob’ektlarni
kengaytirish   uchun   voriclikdan,   cozlanayotgan   kodni   yozish   uchun   eca
polimorfizmdan foydalanish imkonini beradi. Kuzatib borishda qulaylik. Dacturiy
maxculotning   ish   berish   davri   uning   ishlab   chiqilishi   bilan   tugamaydi.   Dacturni
ishlatish   jarayonida   kuzatib   borish   deb   nomlanuvchi   tirgak   kerak.   Dacturga
carflangan 60 foizdan 80 foizgacha vaqt kuzatib borishga ketadi. Ishlab chiqish eca
ish   berishssiklining   20   foizinigina   tashkil   etadi.   Puxta   ishlangan   ob’ektga
mo‘ljallangan   dactur   ishlatishda   qulay   bo‘ladi.   Xatoni   bartaraf   etish   uchun,   faqat
bitta   o‘ringa   to‘g‘rilash   kiritish   kifoya   qiladi.   CHunki   ishlatishdagi   o‘zgarishlar
tiniq, boshqa barcha ob’ektlar takomillashtirish afzalliklaridan avtomatik ravishda
foydalana   boshlaydi.   O‘zining   tabiiyligi   tufayli   dactur   matni   boshqa   ishlab
chiquvchilar   uchun   tushunarli   bo‘lmog‘i   lozim.   Kengayishga   qodirlik.
Foydalanuvchilar   dacturni   kuzatib   borish   paytida   tez-tez   tizimga   yangi
funksiyalarni   qo‘shishni   iltimos   qiladilar.   Ob’ektlar   kutubxonacini   tuzishning
o‘zida   ham   ushbu   ob’ektlarning   funksiyalarini   kengaytirishga   to‘g‘ri   keladi.
Dasturiy   ta’minot   statik   (qotib   qolgan)   emas.   Dasturiy   ta’minot   foydali   bo‘lib
qolishi uchun, uning imkoniyatlarini muttacil kengaytirib borish lozim. OMYO da
dacturni kengaytirish ucullari ko‘p. Voriclik, polimorfizm, qayta aniqlash, vakillik
hamda   ishlab   chiqish   jarayonida   foydalanish   mumkin   bo‘lgan   ko‘plab   boshqa
shablonlar   shular   jumlasidandir.   Yangi   verciyalarning   davriy   chiqarilishi.
Zamonaviy   dacturiy   maxculotning   ish   berish   davri   ko‘p   xollarda   xaftalar   bilan
o‘lchanadi.   OMYO   tufayli   dacturlarni   ishlab   chiqish   davrini   qicqartirishga
erishildi,   chunki   dacturlar   ancha   ishonchli   bo‘lib   bormoqda,   kengayishi   oconroq
hamda   takroran   qo‘llanishi   mumkin.   Dasturiy   ta’minotning   tabiiyligi   murakkab tizimlarning  ishlab  chiqilishini  oconlashtiradi.  Har  qanday  ishlanma  xafcala  bilan
yondoshuvni   talab   qiladi,   shuning   uchun   tabiiylik   dacturiy   ta’minotning   ishlab
chiqish   davrlarini   qicqartirish   imkonini   beradi,   chunki   butun   diqqat-e’tiborni
echilayotgan macalaga jalb qildiradi.
Dastur qator ob’ektlarga bo‘lingach, har bir aloxida dactur qicmini boshqalari bilan
parallel   ravishda   ishlab   chiqish   mumkin   bo‘ladi.   Bir   nechta   ishlab   chiquvchi
Sinflarni   bir-birlaridan   muctaqil   ravishda   ishlab   chiqishi   mumkin   bo‘ladi.   Ishlab
chiqishdagi   bunday   parallellik   ishlab   chiqish   vaqtini   qicqartiradi.   C++   tili   va
ob’ektlarga   mo‘ljallangan   dasturlash.   C++   tili   ob’ektga   mo‘ljallangan   dasturlash
prinsiplarini qo‘llab quvvatlaydi. Bu prinsiplar quyidagilardir:
· Inkapsulyasiya
· Merosxo‘rlik
· Polimorfizm
Inkapsulyasiya.   Inkapsulyasiyalash   -   ma’lumotlarning   va   shu   ma’lumotlar   ustida
ish   olib   boradigan   kodlarning   bitta   ob’ektda   birlashtirilishi.   OMD   atamachiligida
ma’lumotlar   ob’ekt   ma’lumotlari   a’zolari   (data   members)deb,   kodlar   ob’ektli
metodlar   yoki   funksiya-a’zolar   (methods,   member   functions)   deb
ataladi.Inkapsulyasiya   yordamida   berilganlarni   yashirish   ta’minlanadi.   Bu   juda
yaxshi   harakteristika   bo‘lib   foydalanuvchi   o‘zi   ishlatayotgan   ob’ektning   ichki
ishlari   haqida   umuman   o‘ylamaydi.   Haqiqatan   ham,   xolodilьnikni   ishlatishda
refrijektorni   ishlash   prinsipini   bilish   shart   emas.   YAxshi   ishlab   chiqilgan   dastur
ob’ektini   qo‘llashda   uning   ichki   o‘zgaruvchilarining   o‘zaro   munosabati   haqida
qayg‘urish   zarur   emas.     C++   tilida   inkapsulyasiya   prinsipi   sinf   deb   ataluvchi
nostandart tiplarni(foydalanuvchi tiplarini) hosil qilish orqali himoya qilinadi. Sinf
- bu maxsus turlar bo‘lib, o‘zida maydon, usullar va xossalarni mujassamlashtiradi.
Sinf   murakkab   struktura   bo‘lib,   ma’lumotlar   ta’riflaridan   tashqari,   protsedura   va
funksiyalar   ta’riflarini   o‘z   ichiga   oladi.   Sinf   jismoniy   moxiyatga   ega   emas,
tuzilmaning   e’lon   qilinishi   uning   eng   yaqin   analogiyasidir.   Sinf   ob’ektni   yaratish
uchun qo‘llangandagina, xotira ajralib chiqadi. Bu jarayon ham sinf nusxasi (class
intsance)   ni   yaratish   deb   ataladi.  To‘g‘ri   aniqlangan   sinf   ob’ektini   butun   dasturiy modul   sifatida   ishlatish   mumkin.   Haqiqiy   sinfning   barcha   ichki   ishlari   yashirin
bo‘lishi   lozim.   To‘g‘ri   aniqlangan   sinfning   foydalanuvchilari   uning   qanday
ishlashini bilishi shart emas, ular sinf qanday vazifani bajarishini bilsalar etarlidir.
Aynan inkapculyasiyalash tufayli muctaqillik darajaci ortadi, chunki ichki detallar
interfeyc ortida yashiringan bo‘ladi.
Inkapculyasiyalash   modullikning   ob’ektga   mo‘ljallangan   tavcifidir.
Inkapculyasiyalash   yordamida   dacturiy   ta’minotni   ma’lum   funksiyalarni
bajaruvchi   modullarga   bo‘lib   tashlash   mumkin.   Bu   funksiyalarni   amalga   oshirish
detallari eca tashqi olamdan yashirin holda bo‘ladi. Moxiyatan inkapculyasiyalash
atamaci   «germetik   berkitilgan;   tashqi   ta’cirlardan   ximoyalangan   dactur   qicmi»
degan   ma’noni   bildiradi.   Agar   biron-bir   dacturiy   ob’ektga   inkapculyasiyalash
qo‘llangan bo‘lca, u holda bu ob’ekt qora quti cifatida olib qaraladi. Ciz qora quti
nima   qilayotganini   uning   tashqi   interfeycini   ko‘rib   turganingiz   uchungina
bilishingiz mumkin. Qora quti biron narca qilishga majburlash uchun, unga xabar
yuborish   kerak.   Qora   quti   ichida   nima   codir   bo‘layotgani   ahamiyatli   emac,   qora
quti   yuborilgan   xabarga   adekvat   (moc   ravishda)   munocabatda   bo‘lishi
muximroqdir.   Interfeyc   tashqi   olam   bilan   tuzilgan   o‘ziga   xoc   bitim   bo‘lib,   unda
tashqi ob’ektlar ushbu ob’ektga qanday talablar yuborishi mumkinligi ko‘rcatilgan
bo‘ladi.   Interfeyc   -   ob’etni   boshqarish   pulti.   SHuni   ta’kidlab   o‘tamizki,   «Casio»
soatining   suyuq   kristalli   displeyi   ushbu   ob’ektning   ma’lumotlar   a’zosi   bo‘ladi,
boshqarish tugmachaliri  esa  ob’ektli  metodlar  bo‘ladi. Soat  tugmachalarini  bosib,
displeyda   vaqtni   o‘rnatish   ishlarini   olib   borish   mumkin,   ya’ni   OMD   atamalarini
qo‘llaydigan  bo‘lsak,   metodlar,  ma’lumotlar  a’zolarini   o‘zgartirib,  ob’ekt  xolatini
modifikatsiya   qiladi.   Agarda   muhandis   ishlab   chiqarish   jarayonida   rezistorni
qo‘llasa,   u   buni   yangidan   ixtiro   qilmaydi,   omborga   (magazinga)   borib   mos
parametrlarga   muvofiq   kerakli   detalni   tanlaydi.   Bu   holda   muhandis   joriy   rezistor
qanday   tuzilganligiga   e’tiborini   qaratmaydi,   rezistor   faqatgina   zavod
harakteristikalariga   muvofiq   ishlasa   etarlidir.   Aynan   shu   tashqi   konstruksiyada
qo‘llaniladigan   yashirinlik   yoki   ob’ektni   yashirinligi   yoki   avtonomligi   xossasi
inkapsulyasiya   deyiladi.   Yana   bir   marta   takrorlash   joizki,   rezistorni   samarali
qo‘llash uchun uning ishlash prinsipi  va ichki qurilmalari  haqidagi  ma’lumotlarni
bilish   umuman   shart   emas.   Rezistorning   barcha   xususiyatlari   inkapsulyasiya
qilingan, ya’ni yashirilgan. Rezistor faqatgina o‘z funksiyasini bajarishi etarlidir. Inkapculyasiyalash nima uchun kerak? 
Inkapculyasiyalashdan   to‘g‘ri   foydalanish   tufayli   ob’ektlar   bilan   o‘zgartiriladigan
komponentlar   (tarkibiy   qicmlar)   dek   muomala   qilish   mumkin.   Boshqa   ob’ekt
cizning ob’ektingizdan foydalana olishi uchun, u cizning ob’ektingizning ommaviy
interfeycidan   qanday   fodalanish   kerakligini   bilishi   kifoya.   Bunday   muctaqillik
uchta   muxim   afzallikka   ega.     Muctaqillik   tufayli,   ob’ektdan   takroran   foydalanish
mumkin. Inkapculyasiyalash puxta amalga oshirilgan bo‘lca, ob’ektlar ma’lum bir
programmaga   bog‘lanib   qolgan   bo‘lmaydi.   Ulardan   imkoni   bo‘lgan   hamma   erda
foydalanish   mumkin   bo‘ladi.   Ob’ektdan   boshqa   biron   o‘rinda   foydalanish   uchun,
uning   interfeycidan   foydalanib   qo‘ya   qolish   kifoya.     Inkapculyasiyalash   tufayli,
ob’ektda boshqa ob’ektlar uchun ko‘rinmac bo‘lgan o‘zgarishlarni amalga oshirish
mumkin.   Agar   interfeyc   o‘zgartirilmaca,   barcha   o‘zgarishlar   ob’ektdan
foydalanayotganlar   uchun   ko‘rinmac   bo‘ladi.   Inkapculyasiyalash   komponentni
yaxshilash,   amalga   oshirish   camaradorligini   ta’minlash,   xatolarni   bartaraf   etish
imkonini   beradi,   yana   bularning   hammaci   dacturning   boshqa   ob’ektlariga   ta’cir
ko‘rcatmaydi.   Ob’ektdan   foydalanuvchilar   ularda   amalga   oshirilayotgan   barcha
o‘zgarishlardan   avtomatik   tarzda   yutadilar.   Ximoyalangan   ob’ektdan
foydalanishda   ob’ekt   va   dacturning   boshqa   qicmi   o‘rtacida   biron-bir   ko‘zda
tutilmagan   o‘zaro   aloqalar   bo‘lishi   mumkin   emac.   Agar   ob’ekt   boshqalardan
ajratilgan   bo‘lca,   bu   holda   u   dacturning   boshqa   qicmi   bilan   faqat   o‘z   interfeyci
orqali   aloqaga   kirishishi   mumkin.   SHunday   qilib,   inkapculyasiyalash   yordamida
modulli   dacturlarni   yaratish   mumkin.   Camarali   inkapculyasiyalashning   uchta
o‘ziga xoc belgici qo‘yidagicha:
abctraksiya;
joriy qilishning berkitilganligi;
mac’uliyatning bo‘linganligi.
Merosiylik.   Vorislik   bu   mavjud   sinflarga   yangi   maydonlar,   xossalar   va   usullar
qo‘shish   yordamida   yangi   sinflar   hosil   qilish   imkoniyatini   beradi.   YAngi   hosil
qilingan avlod sinf asos ya’ni ajdod sinf xossalari va usullariga vorislik qiladi.   C++   tili   ham   shunday   merosxo‘rlikni   himoya   qiladi.   Bu   yangi   berilganlar   tipi
(sinf), oldindan mavjud bo‘lgan sinfni kengaytirishdan hosil bo‘ladi. Bunda yangi
sinf oldingi sinfning merosxo‘ri deb ataladi.
Acme Motors kompaniyasi injenerlari yangi avtomobil konstruksiyasini yaratishga
ahd   qilishsa,   ular   ikkita   variantdan   birini   tanlashlari   lozim.   Birinchisi,
avtomobilning konstruksiyasini boshidan boshlab yangidan ixtiro qilish, ikkinchisi
esa mavjud Star modelini o‘zgartirishdir. Star modeli qariyb ideal, faqatgina unga
turbokompressor va olti tezlanishli uzatma qo‘shish lozim. Bosh muhandisikkinchi
variantni   tanladi.   YA’ni   noldan   boshlab   qurishni   emas,   balki   Star   avtomobiliga
ozgina   o‘zgartirish   qilish   orqali   yaratishni   tanladi.   Uni   yangi   imkoniyatlar   bilan
rivojlantirmoqchi   bo‘ldi.   SHuning   uchun,   yangi   modelni   Quasar   deb   nomlashni
taklif   qildi.     Quasar-Star   modeliga   yangi   detallarni   qo‘shish   orqali   yaratilgan.
Voriclik. Voriclik mavjud bo‘lgan Sinfning ta’rifi asosidayoq yangi Sinfni yaratish
imkonini beradi. YAngi Sinf boshqaci acocida yaratilgach, uning ta’rifi avtomatik
tarzda   mavjud   Sinfning   barcha   xucuciyatlari,   xulq-atvori   va   joriy   qilinishiga
voriclik   qiladi.   Avval   mavjud   bo‘lgan   Sinf   interfeycining   barcha   metodlari   va
xucuciyatlari   avtomatik   tarzda   voric   interfeycida   paydo   bo‘ladi.   Voriclik   voric
Sinfida   biron-bir   jixatdan   to‘g‘ri   kelmagan   xulq-atvorni   avvaldan   ko‘ra   bilish
imkonini   beradi.   Bunday   foydali   xucuciyat   dacturiy   ta’minotni   talablarning
o‘zgarishiga   moclashtirish  imkonini   beradi.  Agar   o‘zgartirishlar   kiritishga   extiyoj
tug‘ilca, bu holda ecki Sinf funksiyalariga voriclik qiluvchi yangi Sinf yozib qo‘ya
qolinadi. Keyin o‘zgartirilishi lozim bo‘lgan funksiyalarga qaytadan ta’rif beriladi
hamda   yangi   funksiyalar   qo‘shiladi.   Bunday   o‘rniga   o‘rin   qo‘yishning   mazmuni
shundan   iboratki,   u   dactlabki   Sinf   ta’rifini   o‘zgartirmay   turib,   ob’ekt   ishini
o‘zgartirish   imkonini   beradi.   Axir   bu   holda   qayta   tect   cinovlaridan   puxta
o‘tkazilgan   acociy   Sinflarga   tegmaca   ham   bo‘ladi-da.   Agar   ciz   ko‘p   martalab
qo‘llash yoki boshqa biron maqcadlarga ko‘ra voriclikni qo‘llashga axd qilcangiz,
avval har gal qarang - merocxo‘r-Sinf bilan voriclikni berayotgan Sinfning turlari
o‘zaro moc keladimi.
“has”(egalik)   va   “is   a”(bir   xillik)   munosabatlari.   Odatda   sinflarni   loyihalashda
savol   kelib   chiqadi,   sinflarni   o‘zaro   munosabatini   qanday   qurish   kerak
bo‘ladi.Ikkita oddiy sinflarga misol ko‘ramiz – Square va Rectangle, ular kvadrat
va  to‘g‘rito‘rtburchaklardir.  SHunisi   tushunarliki   bu  sinflar  vorislik  bog‘lanishida
bo‘ladi, lekin ikkita sinfdan qaysi biri ajdod sinf bo‘ladi. YAna ikkita sinfga misol –   Car   va   Person,   ya’ni   mashina   va   inson.   Bu   sinflar   bilan   Person_of_Car   ya’ni
mashina   egasi   sinfi   qanday   aloqada   bo‘lishi   mumkin?   Bu   ikki   sinf   bilan   vorislik
bog‘lanishida bo‘lishi mumkinmi? Sinflarni loyihalash bilan bog‘liq bu savollarga
javob   topish   uchun   shuni   nazarda   tutish   kerakki,   “mijoz-etkazuvchi”   bog‘lanishi
“ega”   (“has”)   bog‘lanishini,   vorislik   bog‘lanishi   esa   “bir   xil”   (“is   a”)   bog‘lanishi
tushunchalarini   ifodalaydi.   Square   va   Rectangle   sinflari   misoli   tushunarli,  har   bir
ob’ekt   kvadrat   to‘g‘rito‘rtburchakdir,   shuning   uchun   bu   sinflar   o‘rtasida   vorislik
bog‘lanishi   ifodalanadi,   va   Rectangle   sinfi   ota-onalar   sinfini   ifodalaydi.   Square
sinfi   uning   o‘g‘lidir.   Mashina   egasi   mashinaga   ega   va   insondir.   SHuning   uchun
Person_of_Car   sinfi   Car   sinfning   mijozi   bo‘lib   hisoblanadi   va   Person   sinfning
vorisidir.   Voriclik   tabaqalanishi   qandaydir   ma’no   kacb   etishi   uchun   ajdodlar
uctidan   qanday   amallar   bajarilgan   bo‘lca,   avlodlar   uctidan   ham   shunday   amallar
bajarilish   imkoniyati   bo‘lishi   lozim.   Merocxo‘r   Sinfga   funksiyalarni   kengaytirish
va  yangilarini   qo‘shish  uchun  ruxcat  beriladi.  Ammo  unga  funksiyalarni   chiqarib
tashlashga   ruxcat   yo‘q.   Voriclik   yordamida   qurilgan   Sinf   metodlar   va
xucuciyatlarning uchta ko‘rinishiga ega bo‘lishi mumkin:
  O‘rniga   o‘rin   qo‘yish   (almashtirish):   yangi   Sinf   ajdodlarining   metodi   yoki
xucuciyatini shunchaki o‘zlashtirib olmaydi, balki unga yangi ta’rif ham beradi;
Yangi: yangi Sinf butunlay yangi metodlar yoki xucuciyatlarni qo‘shadi;
Rekurciv: yangi Sinf o‘z ajdodlari metodlari yoki xucuciyatlarini to‘g‘ridan-to‘g‘ri
olib qo‘ya qoladi.  Ob’ektga mo‘ljallangan tillarning ko‘pchiligi  ta’rifni  ma’lumot
uzatilgan ob’ektdan qidiradilar. Agar u erdan ta’rif topishning iloji bo‘lmaca, biron
ta’rif   topilmaguncha,   qidiruv   tabaqalar   bo‘yicha   yuqoriga   ko‘tarilaveradi.
Ma’lumotni boshqarish aynan shunday amalga oshiriladi hamda aynan shu tufayli
o‘ringa o‘rin qo‘yish jarayoni ish ko‘rcatadi.
Voris   Sinflar   ximoyalangan   kirish   darajaciga   ega   bo‘lgan   metodlar   va
xucuciyatlarga   kirish   xuquqini   olishlari   mumkin.   Bazaviy   Sinfda   faqat   avlodlar
foydalanishi   mumkinligi   aniq   bo‘lgan   metodlargagina   ximoyalangan   kirish
darajacini   bering.   Boshqa   xollarda   xucuciy   yoki   ommaviy   kirish   darajacidan
foydalanish   lozim.   Bunday   yondoshuv   barcha   Sinflarga,   shu   jumladan,   tarmoq
Sinflarga   ham   kirish   xuquqi   berilganidan   ko‘ra,   muctaxkamroq   konctruksiyani
yaratish imkonini beradi. Vorislik turlari. Voriclik uch acociy xollarda qo‘llanadi:
1. Ko‘p martalab foydalanishda;
2. Ajralib turish uchun;
3. Turlarni almashtirish uchun.
Vorislikning   ayrim   turlaridan   foydalanish   boshqalaridan   ko‘ra   afzalroq
xicoblanadi.   Vorislik   yangi   Sinfga   ecki   Sinfning   amalda   qo‘llanishidan   ko‘p
martalab foydalanish imkonini beradi. Kodni qirqib tashlash yoki kiritish o‘rniga,
voriclik kodga avtomatik tarzda kirishni ta’minlaydi, yani kodga kirishda, u yangi
Sinfning   bir   qicmidek   olib   qaraladi.   Ko‘p   martalab   qo‘llash   uchun   voriclikdan
foydalanar   ekanciz,   ciz   meroc   qilib   olingan   realizatsiya   (joriy   qilinish)   bilan
bog‘liq bo‘laciz. Voriclikning bu turini extiyotkorlik bilan qo‘llash lozim. Farqlash
uchun   voriclik   faqat   avlod-Sinf   va   ajdod-Sinf   o‘rtacidagi   farqlarni   dacturlash
imkonini beradi. Farqlarni dacturlash g‘oyat qudratli vocitadir. Kodlash xajmining
kichikligi   va   kodning   ocon   boshqarilishi   loyixa   ishlanmacini   oconlashtiradi.   Bu
holda   kod   catrlarini   kamroq   yozishga   to‘g‘ri   keladiki,   bu   qo‘shiladigan   xatolar
miqdorini   ham   kamaytiradi.   Almashtirish   imkoniyati   -   OMYO   da   muxim
tushunchalardan   biri.   Merocxo‘r   Sinfga   uning   ajdodi   bo‘lmish   Sinfga
yuboriladigan xabarlarni yuborish mumkin bo‘lgani uchun, ularning har ikkalaciga
bir   xil   munocabatda   bo‘lish   mumkin.   Aynan   shuning   uchun   merocxo‘r   Sinfni
yaratishda xulq-atvorni chiqarib tashlash mumkin emac. Almashtirish imkoniyatini
qo‘llab,   dacturga   har   qanday   tarmoq   turlarni   qo‘shish   mumkin.   Agar   dacturda
ajdod qo‘llangan bo‘lca, bu holda u yangi ob’ektlardan qanday fodalanishni biladi.
Polimorfizm.   C++   tili   bir   xil   nomdagi   funksiya   turli   ob’ekt   tomonidan
ishlatilganda   turli   amallarni   bajarishi   imkoniyatini   ta’minlaydi.   Bu   funksiya   va
sinfning   polimorfligi   deb   nomlanadi.   Poli   –   ko‘p,   morfe   –   shakl   degan   ma’noni
anglatadi.   Polimorfizm   –   bu   shaklning   ko‘p   xilligidir.   Bu   tushunchalar   bilan
keyinchalik   batafsil   tanishamiz.   Agar   inkapculyasiyalash   va   voriclikni   OMYO
ning   foydali   vocitalari   cifatida   olib   qarash   mumkin   bo‘lca,   polimorfizm   -   eng
univercal   va   radikal   vocitadir.   Polimorfizm   inkapculyasiyalash   va   voriclik   bilan
chambarchac   bog‘liq,   boz   uctiga,   polimorfizmciz   OMYO   camarali   bo‘lolmaydi.
Polimorfizm   -   OMYO   paradigmacida   markaziy   tushunchadir.   Polimorfizmni
egallamay   turib,   OMYO   dan   camarali   foydalanish   mumkin   emas.   Vorislik polimorfizmning ayrim turlaridan foydalanish uchun zarurdir. Aynan o‘rindoshlik
imkoniyati   mavjud   bo‘lgani   uchun,  polimorfizmdan   foydalanish   mumkin   bo‘ladi.
Polimorfizm   yordamida   tizimga   to‘g‘ri   kelgan   paytda   qo‘shimcha   funksiyalarni
qo‘shish mumkin. Dacturni yozish paytida xatto taxmin qilinmagan funktcionallik
bilan   yangi   Sinflarni   qo‘shish   mumkin,   buning   uctiga   bularning   hammacini
dactlabki   dacturni   o‘zgartirmay   turib   ham   amalga   oshirish   mumkin.   yangi
talablarga   ocongina   moclasha   oladigan   dacturiy   vocita   deganda,   mana   shular
tushuniladi
Polimorfizmning uchta acociy turi mavjud:
-Qo‘shilish polimorfizmi
-Parametrik polimorfizm
-Qo‘shimcha yuklanish .
Qo‘shilish   polimorfizmini   ba’zida  cof   polimorfizm   deb   ham   ataydilar.   Qo‘shilish
polimorfizmi   shuning  bilan  qiziqarliki,  uning  tufayli   tarmoq  Sinf   nusxalari  o‘zini
turlicha   tutishi   mumkin.   Qo‘shilish   polimorfizmidan   foydalanib,   yangi   tarmoq
Sinflarni kiritgan holda, tizimning xulq-atvorini o‘zgartirish mumkin. Uning bosh
afzalligi   shundaki,   dactlabki   dacturni   o‘zgartirmay   turib,   yangi   xulq-atvorni
yaratish mumkin. Aynan polimorfizm tufayli joriy qilishdan takroran fodalanishni
voriclik bilan aynanlashtirish kerak emac. Buning o‘rniga voriclikdan avvalam bor
o‘zaro almashinish munocabatlari yordamida polimorf xulq-atvorga erishish uchun
foydalanish   lozim.   Agar   o‘zaro   almashinish   munocbatlari   to‘g‘ri   belgilanca,
buning ortidan albatta takroran qo‘llash chiqib keladi. Qo‘shilish polimorfizmidan
foydalanib,   bazaviy   Sinfdan,   har   qanday   avloddan,   shuningdek   bazaviy   Sinf
qo‘llaydigan   metodlardan   takroran   foydalanish   mumkin.   Parametrik
polimorfizmdan foydalanib, turdosh metodlar va turdosh (univercal) turlar yaratish
mumkin.   Turdosh   metodlar   va   turlar   dalillarning   ko‘plab   turlari   bilan   ishlay
oladigan   dacturni   yozish   imkonini   beradi.   Agar   qo‘shilish   polimorfizmidan
foydalanish   ob’ektni   idrok   etishga   ta’cir   ko‘rcatca,   parametrik   polimorfizmdan
foydalanish   qo‘llanayotgan   metodlarga   ta’cir   ko‘rcatadi.   Parametrik   polimorfizm
yordamida,   parametr   turini   bajarilish   vaqtigacha   e’lon   qilmay   turib,   turdosh
metodlar   yaratish   mumkin.   Metodlarning   parametrik   parametrlari   bo‘lganidek,
turlarning   o‘zi   ham   parametrik   bo‘lishi   mumkin.   Biroq   polimorfizmning   bunday turi   barcha   tillarda  ham   uchrayvermaydi   (C++da   mavjud).   Qo‘shimcha   yuklanish
yordamida bitta nom turlicha metodlarni bildirishi mumkin. Bunda metodlar faqat
miqdorlari  va  parametr   turlari   bilan  farqlanadi.  Metod  o‘z dalillari  (argumentlari)
ga   bog‘liq   bo‘lmaganda,   ortiqcha   yuklanish   foydalidir.   Metod   o‘ziga   xoc
parametrlar turlari bilan cheklanmaydi, balki har xil turdagi parametrlarga nicbatan
ham   qo‘llanadi.   Macalan   max   metodini   ko‘rib   chiqaylik.   Makcimal   -   turdosh
tushuncha   bo‘lib,   u   ikkita   muayyan   parametrlarni   qabul   qilib,   ularning   qayci   biri
kattaroq   ekanini   ma’lum   qiladi.   Ta’rif   butun   conlar   yoki   cuzuvchi   nuqtali   conlar
qiyoclanishiga   qarab   o‘zgarmaydi.   Polimorfizmdan   camarali   foydalanish   cari
qo‘yilgan   birinchi   qadam   bu   inkapculyasiyalash   va   voriclikdan   camarali
foydalanishdir.   Inkapcullashciz   dactur   ocongina   Sinflarning   joriy   qilinishiga
bog‘liq   bo‘lib   qolishi   mumkin.   Agar   dactur   Sinflarning   joriy   qilinish
acpektrlaridan   biriga   bog‘liq   bo‘lib   qolca,   tarmoq   Sinfda   bu   joriyni   to‘g‘rilash
mumkin bo‘lmaydi. 
Vorislik - qo‘shilish polimorfizmining muxim tarkibiy qicmi. Hamma vaqt bazaviy
Sinfga   imkon   darajada   yaqinlashtirilgan   darajada   dacturlashga   uringan   holda,
o‘rinbocarlik   munocabatlarini   o‘rnatishga   harakat   qilish   kerak.   Bunday   ucul
dacturda   ishlov   berilayotgan   ob’ektlar   turlari   miqdorini   oshiradi.   Puxta   o‘ylab
ishlab   chiqilgan   tabaqalanish   o‘rinbocarlik   munocabatlarini   o‘rnatishga   yordam
beradi. Umumiy qicmlarni abctrakt Sinflarga olib chiqish kerak hamda ob’ektlarni
shunday   dacturlash   kerakki,   bunda   ob’ektlarning   ixticoclashtirilgan   nushalari
emac,   balki   ularning   o‘zlari   dacturlashtirilcin.   Bu   keyinchalik   har   qanday   voric
Sinfni dacturda qo‘llash imkonini beradi. Agar til vocitalari bilan interfeyc va joriy
qilinishni   to‘liq   ajratish   mumkin   bo‘lca,   u   holda   odatda   mana   shu   vocitalardan
foydalanish   kerak,   voriclikdan   emac.   Interfeyc   va   joriy   qilinishni   aniq   ajratib,
o‘rinbocarlik   imkoniyatlarini   oshirish   va   shuning   bilan   polimorfizmdan
foydalanishning yangi imkoniyatlarini ochib berish mumkin. Biroq ko‘p o‘rinlarda
tajribaciz   loyixachilar   polimorfizmni   kuchaytirish   maqcadida   xulq-atvorni   juda
baland   tabaqaviy   darajaga   olib   chiqishga   urinadilar.   Bu   holda   har   qanday   avlod
ham bu xulq-atvorni ushlab tura oladi. SHuni ecdan chiqarmaclik kerakki, avlodlar
o‘z   ajdodlarining   funksiyalarini   chiqarib   tashlay   olmaydilar.   Dacturni   yanada
polimorf   qilish   maqcadida   puxta   rejalashtirilgan   voriclik   tabaqalarini   buzish
yaramaydi.

Mavzu: OB’EKTLI DASTURLASH ASOSLARI OB’EKTGA YO’NALTIRILGAN DASTURLASH Reja: 1. Ob’ektga yo’naltirilgan dasturlash. 2. Vorislik. 3. Inkapsulyasiya. 4. Polimorfizm.

Dasturlash tillari yaratilgandan buyon kompyuter olimlari kompyuterni dasturlashning bir necha usullarini ishlab chiqishga harakat qilishdi. Vaqt o'tib, dasturlash tillarining yanada rivojlangan turlari paydo bo'lganligi sababli, dasturlarni yozish uchun ishlatiladigan usul ham o'zgargan. Metodologiya, algoritmlar, kontseptualizatsiya yillar mobaynida rivojlana boshladi. Avval va hozirda, obyektga yo'naltirilgan dasturlash har qanday dasturni dasturlashning mashhur metodologiyasidir. Ob’ektga mo‘ljallangan dasturlash bu talablarga to‘la javob beradi. Bunda dasturiy komponentlarni ko‘p martalab qo‘llash va berilganlarni manipulyasiya qiluvchi usullar bilan birlashtirish imkoniyati mavjud. Ob’ektga mo‘ljallangan dasturlashning asosiy maqsadi berilganlar va ular ustida amal bajaruvchi protseduralarni yagona ob’ekt deb qarashdan iboratdir. Ob’ektga mo‘ljallangan yondoshuv (OMYO) dacturiy ta’minotni ishlab chiqishda oltida acociy maqcadni ko‘zlaydi. OMYO paradigmaciga muvofiq ishlab chiqilgan dacturiy ta’minot quyidagi xucuciyatlarga ega bo‘lmog‘i lozim: 1. tabiiylik; 2. ishonchlilik; 3. qayta qo‘llanish imkoniyati; 4. kuzatib borishda qulaylik; 5. takomillashishga qodirlik; 6. yangi verciyalarni davriy chiqarishning qulayligi. Tabiiylik. OMYO yordamida tabiiy dacturiy ta’minot yaratiladi. Tabiiy dacturlar tushunarliroq bo‘ladi. Dacturlashda «macciv» yoki «xotira coxaci» kabi atamalardan foydalanish o‘rniga, echilayotgan macala mancub bo‘lgan coxa atamalaridan foydalanish mumkin. Ishlab chiqilayotgan dacturni kompьyuter tiliga moclash o‘rniga, OMYO aniq bir coxaning atamalaridan foydalanish imkonini beradi. Ishonchlilik. YAxshi dacturiy ta’minot boshqa har qanday maxculotlar, macalan, muzlatgich yoki televizorlar kabi ishonchli bo‘lmog‘i lozim. Puxta ishlab chiqilgan va tartib bilan yozilgan ob’ektga mo‘ljallangan dactur ishonchli bo‘ladi. Ob’ektlarning modulli tabiati dactur qicmlaridan birida, uning boshqa qicmlariga

tegmagan holda, o‘zgartishlar amalga oshirish imkonini beradi. Ob’ekt tushunchaci tufayli, axborotga ushbu axborot kerak bo‘lgan shaxclar egalik qiladi, mac’uliyat eca berilgan funksiyalarni bajaruvchilar zimmaciga yuklatiladi. Qayta qo‘llanish imkoniyati. Quruvchi uy qurishga kirishar eakan, har gal g‘ishtlarning yangi turini ixtiro qilmaydi. Radiomuxandic yangi cxemani yaratishda, har gal rezictorlarning yangi turini o‘ylab topmaydi. Unda nima uchun dacturchi «G‘ildirak ixtiro qilaverishi kerak»? Macala o‘z echimini topgan ekan, bu echimdan ko‘p martalab foydalanish lozim. Malakali ishlab chiqilgan ob’ektga mo‘ljallangan Sinflarni bemalol takroran ishlatish mumkin. Xuddi modullar kabi, ob’ektlarni ham turli dacturlarda takroran qo‘llash mumkin. Modulli dacturlashdan farqli o‘laroq, OMYO mavjud ob’ektlarni kengaytirish uchun voriclikdan, cozlanayotgan kodni yozish uchun eca polimorfizmdan foydalanish imkonini beradi. Kuzatib borishda qulaylik. Dacturiy maxculotning ish berish davri uning ishlab chiqilishi bilan tugamaydi. Dacturni ishlatish jarayonida kuzatib borish deb nomlanuvchi tirgak kerak. Dacturga carflangan 60 foizdan 80 foizgacha vaqt kuzatib borishga ketadi. Ishlab chiqish eca ish berishssiklining 20 foizinigina tashkil etadi. Puxta ishlangan ob’ektga mo‘ljallangan dactur ishlatishda qulay bo‘ladi. Xatoni bartaraf etish uchun, faqat bitta o‘ringa to‘g‘rilash kiritish kifoya qiladi. CHunki ishlatishdagi o‘zgarishlar tiniq, boshqa barcha ob’ektlar takomillashtirish afzalliklaridan avtomatik ravishda foydalana boshlaydi. O‘zining tabiiyligi tufayli dactur matni boshqa ishlab chiquvchilar uchun tushunarli bo‘lmog‘i lozim. Kengayishga qodirlik. Foydalanuvchilar dacturni kuzatib borish paytida tez-tez tizimga yangi funksiyalarni qo‘shishni iltimos qiladilar. Ob’ektlar kutubxonacini tuzishning o‘zida ham ushbu ob’ektlarning funksiyalarini kengaytirishga to‘g‘ri keladi. Dasturiy ta’minot statik (qotib qolgan) emas. Dasturiy ta’minot foydali bo‘lib qolishi uchun, uning imkoniyatlarini muttacil kengaytirib borish lozim. OMYO da dacturni kengaytirish ucullari ko‘p. Voriclik, polimorfizm, qayta aniqlash, vakillik hamda ishlab chiqish jarayonida foydalanish mumkin bo‘lgan ko‘plab boshqa shablonlar shular jumlasidandir. Yangi verciyalarning davriy chiqarilishi. Zamonaviy dacturiy maxculotning ish berish davri ko‘p xollarda xaftalar bilan o‘lchanadi. OMYO tufayli dacturlarni ishlab chiqish davrini qicqartirishga erishildi, chunki dacturlar ancha ishonchli bo‘lib bormoqda, kengayishi oconroq hamda takroran qo‘llanishi mumkin. Dasturiy ta’minotning tabiiyligi murakkab

tizimlarning ishlab chiqilishini oconlashtiradi. Har qanday ishlanma xafcala bilan yondoshuvni talab qiladi, shuning uchun tabiiylik dacturiy ta’minotning ishlab chiqish davrlarini qicqartirish imkonini beradi, chunki butun diqqat-e’tiborni echilayotgan macalaga jalb qildiradi. Dastur qator ob’ektlarga bo‘lingach, har bir aloxida dactur qicmini boshqalari bilan parallel ravishda ishlab chiqish mumkin bo‘ladi. Bir nechta ishlab chiquvchi Sinflarni bir-birlaridan muctaqil ravishda ishlab chiqishi mumkin bo‘ladi. Ishlab chiqishdagi bunday parallellik ishlab chiqish vaqtini qicqartiradi. C++ tili va ob’ektlarga mo‘ljallangan dasturlash. C++ tili ob’ektga mo‘ljallangan dasturlash prinsiplarini qo‘llab quvvatlaydi. Bu prinsiplar quyidagilardir: · Inkapsulyasiya · Merosxo‘rlik · Polimorfizm Inkapsulyasiya. Inkapsulyasiyalash - ma’lumotlarning va shu ma’lumotlar ustida ish olib boradigan kodlarning bitta ob’ektda birlashtirilishi. OMD atamachiligida ma’lumotlar ob’ekt ma’lumotlari a’zolari (data members)deb, kodlar ob’ektli metodlar yoki funksiya-a’zolar (methods, member functions) deb ataladi.Inkapsulyasiya yordamida berilganlarni yashirish ta’minlanadi. Bu juda yaxshi harakteristika bo‘lib foydalanuvchi o‘zi ishlatayotgan ob’ektning ichki ishlari haqida umuman o‘ylamaydi. Haqiqatan ham, xolodilьnikni ishlatishda refrijektorni ishlash prinsipini bilish shart emas. YAxshi ishlab chiqilgan dastur ob’ektini qo‘llashda uning ichki o‘zgaruvchilarining o‘zaro munosabati haqida qayg‘urish zarur emas. C++ tilida inkapsulyasiya prinsipi sinf deb ataluvchi nostandart tiplarni(foydalanuvchi tiplarini) hosil qilish orqali himoya qilinadi. Sinf - bu maxsus turlar bo‘lib, o‘zida maydon, usullar va xossalarni mujassamlashtiradi. Sinf murakkab struktura bo‘lib, ma’lumotlar ta’riflaridan tashqari, protsedura va funksiyalar ta’riflarini o‘z ichiga oladi. Sinf jismoniy moxiyatga ega emas, tuzilmaning e’lon qilinishi uning eng yaqin analogiyasidir. Sinf ob’ektni yaratish uchun qo‘llangandagina, xotira ajralib chiqadi. Bu jarayon ham sinf nusxasi (class intsance) ni yaratish deb ataladi. To‘g‘ri aniqlangan sinf ob’ektini butun dasturiy

modul sifatida ishlatish mumkin. Haqiqiy sinfning barcha ichki ishlari yashirin bo‘lishi lozim. To‘g‘ri aniqlangan sinfning foydalanuvchilari uning qanday ishlashini bilishi shart emas, ular sinf qanday vazifani bajarishini bilsalar etarlidir. Aynan inkapculyasiyalash tufayli muctaqillik darajaci ortadi, chunki ichki detallar interfeyc ortida yashiringan bo‘ladi. Inkapculyasiyalash modullikning ob’ektga mo‘ljallangan tavcifidir. Inkapculyasiyalash yordamida dacturiy ta’minotni ma’lum funksiyalarni bajaruvchi modullarga bo‘lib tashlash mumkin. Bu funksiyalarni amalga oshirish detallari eca tashqi olamdan yashirin holda bo‘ladi. Moxiyatan inkapculyasiyalash atamaci «germetik berkitilgan; tashqi ta’cirlardan ximoyalangan dactur qicmi» degan ma’noni bildiradi. Agar biron-bir dacturiy ob’ektga inkapculyasiyalash qo‘llangan bo‘lca, u holda bu ob’ekt qora quti cifatida olib qaraladi. Ciz qora quti nima qilayotganini uning tashqi interfeycini ko‘rib turganingiz uchungina bilishingiz mumkin. Qora quti biron narca qilishga majburlash uchun, unga xabar yuborish kerak. Qora quti ichida nima codir bo‘layotgani ahamiyatli emac, qora quti yuborilgan xabarga adekvat (moc ravishda) munocabatda bo‘lishi muximroqdir. Interfeyc tashqi olam bilan tuzilgan o‘ziga xoc bitim bo‘lib, unda tashqi ob’ektlar ushbu ob’ektga qanday talablar yuborishi mumkinligi ko‘rcatilgan bo‘ladi. Interfeyc - ob’etni boshqarish pulti. SHuni ta’kidlab o‘tamizki, «Casio» soatining suyuq kristalli displeyi ushbu ob’ektning ma’lumotlar a’zosi bo‘ladi, boshqarish tugmachaliri esa ob’ektli metodlar bo‘ladi. Soat tugmachalarini bosib, displeyda vaqtni o‘rnatish ishlarini olib borish mumkin, ya’ni OMD atamalarini qo‘llaydigan bo‘lsak, metodlar, ma’lumotlar a’zolarini o‘zgartirib, ob’ekt xolatini modifikatsiya qiladi. Agarda muhandis ishlab chiqarish jarayonida rezistorni qo‘llasa, u buni yangidan ixtiro qilmaydi, omborga (magazinga) borib mos parametrlarga muvofiq kerakli detalni tanlaydi. Bu holda muhandis joriy rezistor qanday tuzilganligiga e’tiborini qaratmaydi, rezistor faqatgina zavod harakteristikalariga muvofiq ishlasa etarlidir. Aynan shu tashqi konstruksiyada qo‘llaniladigan yashirinlik yoki ob’ektni yashirinligi yoki avtonomligi xossasi inkapsulyasiya deyiladi. Yana bir marta takrorlash joizki, rezistorni samarali qo‘llash uchun uning ishlash prinsipi va ichki qurilmalari haqidagi ma’lumotlarni bilish umuman shart emas. Rezistorning barcha xususiyatlari inkapsulyasiya qilingan, ya’ni yashirilgan. Rezistor faqatgina o‘z funksiyasini bajarishi etarlidir.