Mavzu: obyektga yo'naltirilgan dasturlash tushunchasi reja: Inkapsulyasiya, polimorfizm, vorislik


 Obyektga yo`naltirilgan dasturlash tushunchasi



Download 0,6 Mb.
Pdf ko'rish
bet2/5
Sana14.12.2022
Hajmi0,6 Mb.
#885996
1   2   3   4   5
Bog'liq
UzhuTAd79UDmO1OOSaDt2l0wQyiBwSFyTK7kRVTb

 
2. 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 
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 
funksiya–a’zo orqali amalga oshiriladi.
Sinf ichki 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 ixtiyoriy 
joyidan 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 boshqasining xossalarini 
o’zlashtirishi mumkin bo’ladi. Vorislik orqali mavjud sinflar asosida hosilaviy 
sinflarni 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 sinf
termini sinflar shajarasidagi ona sinf sinonimi sifatida 
ishlatiladi. Agar Obyekt o’z atributlarini (berilganlar-a’zolar va funksiyalar–a’zolar) 
faqat bitta ona sinfdan vorislik bilan olsa, 
yakka (
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’rnida) 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
deyiladi.
Polimorfizmning yana bir ta’rifi quyidagicha: polimorfizm – bu tayanch sinfga 
ko’rsatgichlarning (murojaatlarning), ularni virtual funksiyalarni 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 quyidagilarni 
aniqlaydi: 
1.
Xotiradagi o’lchovini; 
2.
Unda saqlanayotgan ma’lumotlarni; 
3.
Uning yordamida bajarilishi mumkin bulgan amallarni. 
C++ tilida dasturchi o’ziga kerakli ixtiyoriy toifani hosil qilishi mumkin. Bu 
yangi toifa ichki toifalarning xossalari va ularning funksional imkoniyatlarini 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 yoshi, 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’zgaruvchilar – sinf a’zolari yoki sinf xossalari deyiladi.
Sinfdagi funksiyalar odatda o’zgaruvchilar ustida biror bir amal bajaradi. 
Ularni sinf usullari (metodlari) deb ham ataladi. 
Sinfni e’lon qilish uchun class so’zi , { } ichida esa shu sinfning a’zolari va 
usullari 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 amallarni (yasash, yopish, yeyish) 
bajarish mumkinligi haqida xabar beradi. Bu sinf Obyekti hammasi bo’lib 4 bayt joy 
egallaydi (2 ta int). 
Obyekt sinfning biror bir nusxasi hisoblanadi.
C++ tilida toifalarga qiymat o’zlashtirilmaydi, balki o’zgaruvchiga 
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 
uchun oldin non sinfiga tegishli patir Obyektini hosil qilamiz keyin esa unga kerakli 
qiymatlarni 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 va a’zolari boshlang’ich holda 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: 

Download 0,6 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish