Kommunikatsiyalarini rivojlantirish vazirligi muso al-xorazmiy nomidagi toshkent axborot texnologiyalari


Download 248.92 Kb.
Pdf ko'rish
bet2/2
Sana28.12.2022
Hajmi248.92 Kb.
#1012729
1   2
Bog'liq
Dasturlash 13-mavzu LEO 10

Sinfning sohalari va usullari. 
Sinf ba'zi ma'lumotlarni saqlashi mumkin. Maydonlar sinfdagi ma'lumotlarni saqlash uchun 
ishlatiladi. Aslini olganda, sinf maydonlari sinf darajasida aniqlangan o'zgaruvchilardir. 
Bundan tashqari, sinf ba'zi xatti-harakatlar yoki bajarilishi kerak bo'lgan harakatlarni belgilashi 
mumkin. Usullar sinfdagi xatti-harakatlarni aniqlash uchun ishlatiladi. 
Shunday qilib, Person sinfiga maydonlar va usullarni qo'shamiz: 
Bunday holda, Person sinfida ismni saqlaydigan nom maydoni va shaxsning yoshini saqlaydigan 
yosh maydoni mavjud. Usullarda aniqlangan o'zgaruvchilardan farqli o'laroq, sinf maydonlarida 
maydondan oldin ko'rsatilgan modifikatorlar bo'lishi mumkin. Shunday qilib, bu holda, barcha 
maydonlar Person sinfidan tashqarida mavjud bo'lishi uchun maydonlar umumiy o'zgartirgich bilan 
aniqlanadi.


Maydonlarni belgilashda, biz yuqoridagi misoldagi o'zgaruvchining nomi misolida bo'lgani 
kabi, ularga ba'zi qiymatlarni belgilashimiz mumkin. Agar sinf maydonlari ishga tushirilmagan 
bo'lsa, ular standart qiymatlarni oladi. O'zgaruvchan raqamli turlari uchun bu 0 raqami. 
Person klassi Print() usulini ham belgilaydi. Sinf usullari uning maydonlariga kirish huquqiga 
ega va bu holda biz konsolda ularning qiymatlarini chop etish uchun nom va yosh sinfi 
maydonlariga kiramiz. Va bu usul sinfdan tashqarida ko'rinadigan bo'lishi uchun u ham 
ommaviy modifikator bilan aniqlanadi. 
C++ tilida sinflar va obyektlar bilan ishlash. 
 
C++ tilida sinflar va obyektlar bilan ishlash Har qanday dasturning strukturasi tarmoqlanish va 
sikllar to’plamining kombinasiyasidan iborat bo’ladi. Obektga mo’ljallangan yondoshuv bir kunda 
o’ylab topilgan yemas. Uning paydo bo’lishi dasturiy ta’minotning tabiiy rivojidagi navbatdagi 
pog’ona xolos. Vaqt o’tishi bilan qaysi uslublar ishlash uchun qulay-u, kaysinisi noqulay yekanini 
aniqlash oson bo’lib bordi. Obektga mo’ljallangan yondoshuv yeng muvaffaqiyatli, vaqt sinovidan 
o’tgan uslublarni o’zida samarali mujassam yetadi. Dastlab dasturlash anchayin boshqotirma ixtiro 
bo’lib, u dasturchilarga dasturlarni kommutasiya bloki orqali kompyuterning asosiy xotirasiga 
to’g’ridan-to’g’ri kiritish imkonii berdi. Dasturlar mashina tillarida ikkilik tasavvurda yozilar yedi. 
Dasturlarni mashina tilida yozishda tez-tez xatolarga yo’l qo’yilar yedi, yeng ustiga ularni 
tuzilmalashtirish imkoni bo’lmagani tufayli, kodni kuzatib borish amalda deyarli mumkin 
bo’lmagan hol yedi. Bundan tashqari, mashina kodlaridagi dastur tushunish uchun g’oyat murakkab 
yedi. Vaqt o’tishi bilan kompyuterlar tobora kengroq qo’llana boshladi hamda yuqoriroq darajadagi 
prosedura tillari paydo bo’ldi. Bularning dastlabkisi FORTRAN tili yedi. Biroq obektga 
mo’ljallangan yondoshuv rivojiga asosiy ta’sirni keyinroq paydo bo’lgan, masalan, ALGOL kabi 
prosedura tillari ko’rsatdi. Prosedura tillari dasturchiga axborotga ishlov berish dasturini pastroq 
darajadagi bir nechta proseduraga bo’lib tashlash imkonini beradi. Pastroq darajadagi bunday 
proseduralar dasturning umumiy tuzilmasini belgilab beradi. Ushbu proseduralarga izchil 
murojaatlar proseduralardan tashkil topgan dasturlarning bajarilishini boshqaradi. Dasturlashning 
bu yangi paradigmasi mashina tilida dasturlash paradigmasiga nisbatan ancha ilg’or bo’lib, unga 
tuzilmalashtirishning asosiy vositasi bo’lgan proseduralar qo’shilgan yedi, Maydaroq funksiyalarni 
nafaqat tushunish, balki sozlash ham osonroq kechadi. Biroq, boshqa tomondan, prosedurali 
dasturlash koddan takroran foydalanish imkonini cheklab qo’yyadi. Buning ustiga dasturchilar tez-
tez «makaron» dasturlar ham yozib turishganki, bu dasturlarni bajarish likopdagi spagetti uyumini 
ajratishga o’xshab ketar yedi. Va, nihoyat, shu narsa aniq bo’ldiki, prosedurali dasturlash usullari 
bilan dasturlarni ishlab chiqishda diqqatni ma’lumotlarga qaratishning o’zi muammolarni keltirib 
chiqarar yekan. Chunki ma’lumotlar va prosedura ajralgan, ma’lumotlar inkapsullanmagan. Bu 
nimaga olib keladi? Shunga olib keladiki, har bir prosedura ma’lumotlarni nima qilish kerakligini 
va ular qayerda joylashganini bilmog’i lozim bo’ladi. Agar prosedura o’zini yomon tusa-yu, 
ma’lumotlar ustidan noto’g’ri amallarni bajarsa, u ma’lumotlarni buzib qo’yishi mumkin. Har bir 
prosedura ma’lumotlarga kirish usullarini dasturlashi lozim bo’lganligi tufayli, ma’lumotlar 
taqdimotining o’zgarishi dasturning ushbu kirish amalga oshirilayotgan barcha o’rinlarining 
o’zgarishiga olib kelar yedi. Shunday qilib, xatto yeng kichik to’g’rilash ham butun dasturda qator 
o’zgarishlar sodir bo’lishiga olib kelar yedi. Modulli dasturlashda, masalan, Modula2 kabi tilda 
prosedurali dasturlashda topilgan ayrim kamchiliklarni bartaraf yetishga urinib ko’rildi. Modulli 
dasturlash dasturni bir necha tarkibiy bo’laklarga, yoki, boshqacha qilib aytganda, modullarga 
bo’lib tashdlaydi. Agar prosedurali dasturlash ma’lumotlar va prosedsralarni bo’lib tashlasa, 
modulli dasturlash, undan farqli o’laroq, ularni birlashtiradi.


Modul ma’lumotlarning o’zidan hamda ma’lumotlarga ishlov beradigan proseduralardan iborat. 
Dasturning boshqa qismlariga moduldan foydalanish kerak bo’lib qolsa, ular modul interfeysiga 
murojaat etib qo’yaqoladi. Modullar barcha ichki axborotni dasturning boshqa qismlarida yashiradi. 
Biroq modulli dasturlash ham kamchiliklardan holi yemas. Modullar kengaymas bo’ladi, bu degani 
kodga bevosita kirishsiz hamda uni to’g’ridan-to’g’ri o’zgartirmay turib modulni qadamma-qadam 
uzgartirish mumkin yemas. Bundan tashqari, bitta modulni ishlab chiqishda, uning funksiyalarini 
boshqasiga o’tkazmay (delegat qilmay) turib boshqasidan foydalanib bo’lmaydi. Yana garchi 
modulda turni belgilab bo’lsa-da, bir modul boshqasida belgilangan turdan foydalana olmaydi. 
Modulli va prosedurali dasturlash tillarida tuzilmalashtirilgan va tuzilmalashtirilmagan ma’lumotlar 
o’z «tur»iga yega. Biroq turni kengaytirish usuli, agar «agregatlash» deb ataluvchi usul yordamida 
boshqa turlarni yaratishni hisobga olmaganda, mavjud yemas. Va, nihoyat, modulli dasturlash - bu 
yana proseduraga mo’ljallangan gibridli sxema bo’lib, unga amal qilishda dastur bir necha 
proseduralarga bo’linadi. Biroq yendilikda proseduralar ishlov berilmagan ma’lumotlar ustida 
amallarni bajarmaydi, balki modullarni boshqaradi. Obektga mo’ljallangan dasturlash modulli 
dasturlashdan keyingi mantiqiy pog’onani yegallaydi, u modulga nasldan-naslga o’tishni va 
polimorfizmni qo’shadi. Obektga mo’ljallangan dasturlash dan foydalanr yekan, dasturchi dasturni 
bir qator oliy darajali obektlarga bo’lish yo’li bilan tizimlashtiradi. Har bir obekt hal qilinayotgan 
muammoning ma’lum bir tomonini modellashtiradi. Obektga mo’ljallangan dasturlash yendilikda 
dasturni bajarish jarayonini boshqarish uchun dasturchi diqqatini proseduralarni ketma-ketlikda 
chaqirib olish ro’yxatini tuzib o’tirishga qaratmaydi. Buning o’rniga obektlar o’zaro aloqada 
bo’ladi. Obektga mo’ljallangan dasturlash yordamida ishlab chiqilgan dastur hal qilinayotgan 
muammoning amaldagi modeli bo’lib xizmat qiladi. Dasturga obektlar atamalari bilan ta’rif berish 
dasturiy ta’minotni ishlab chiqishning yeng tushunarli usulidir. Obektlar hamma narsani obekt nima 
qilayotgani nuqtai nazaridan idrok yetishga, ya’ni uning hatti-xarakatlarini hayolan 
modellashtirishga majbur qiladi. Shu tufayli obektga yondoshishda u dasturning bajarilishi 
jarayonida qanday ishlatiladi degan nuqtai nazardan biroz ye’tiborni chalg’itish mumkin. Shunday 
qilib, dasturni yozish jarayonida haqiqiy dunyoning tabiiy atamalaridan foydalanish mumkin. 
Dasturni alohida proseduralar va ma’lumotlar shaklida (kompyuter dunyosi atamalarida) qurish 
o’rniga, obektlardan iborat dastur qurish mumkin. Obektlar otlar, fe’llar va sifatlar yorlamida 
haqiqiy dunyoni dasturda modellashtirishga imkon beradi. Joriy qilish (realizasiya) hatti-xarakatlar 
qanday bajarilayotganini belgilaydi. Dasturlash atamalarida joriy qilish - bu dasturiy kod. 
Yechilayotgan masala atamalari bilan fikrlab, joriy qilishning mayda-chuyda detallarida o’ralashib 
qolish havfidan qochish mumkin. Albatta, ayrim oliy darajadagi obektlar kompyuter bilan aloqa 
qilishda past darajadagi, mashinaga mo’ljallangan usullardan foydalanishi lozim. Biroq obekt bu 
aloqani tizimning boshqa qismlaridan izolyasiya qiladi. Obekt dastur konsturksiyasi bo’lib, unda 
holat va hatti-xarakat inkapsulalangan bo’ladi. Obekt holati bu ichki obekt o’zgaruvchanlari 
qiymatlarining yig’indisidir. Ichki o’zgaruvchan deb obekt ichida saqlanadigan qiymatga aytiladi. 
Mohiyat ye’tibori bilan, obekt bu sinfning yekzemplyari (nushalaridan biri)dir. Obektga 
mo’ljallangan dasturlash, haqiqiy dunyo kabi, obektlardan tashkil topadi. Obektga mo’ljallangan sof 
dasturlash tilida, yeng dastlabki, bazaviy, butun, mantiqiy turlardan tortib, to sinflarning 
murakkabroq nushalarigacha, barchasi obekt hisoblanadi. Biroq obektga mo’ljallangan tillarning 
hammasi ham bu darajada chuqurlashib ketmagan. Ayrim tillarda (masalan, Java kabi) int va float 
ga o’xshash oddiy primitivlar obekt sifatida olib qaralmaydi. Obektga mo’ljallangan dasturlash 
obektlari, haqiqiy olam obektlari kabi, o’z xususiyatlari va xatti-harakatlari bo’yicha tasniflanadi. 
Biologiyada itlar, mushuklar, fillar va odamlar sut yemizuvchilarga kiradi. Bu turli xildagi 
jonivorlarni umumiy xususiyatlar birlashtirib turadi. Xuddi shunday, dasturiy ta’minot olamida ham 
obektlar bitta yoki bir nechta sinflarga mansub bo’ladi. Bitta sinfga mansub obektlarga umumiy 
xususiyatlar xos bo’ladi.


Boshqacha qilib aytganda, sinf obektni tavsiflaydigan xususiyatlar va xulq-atvorlarni, shuningdek, 
va bu yeng muhimidir, obekt javob beradigan xabarlarni belgilab beradi. Biron bir obekt boshqa 
obektning xulq-atvoriga ta’sir ko’rsatgan vaqtda, u bu ta’sirni bevosita ko’rsatmaydi, balki undan 
qandaydir bir qo’shimcha axborotdan foydalangan holda o’zini-o’zi o’zgartirishni iltimos qiladi. 
Odatda bu «xabarni jo’natish» deb ataladi. Sinf umumiy xususiyatlar va xulq-atvorga yega bo’lgan 
obektlarni birlashtiradi. Bitta sinfga mansub obektlar bir xil xususiyatlarga yega bo’lib, bir xil xatti-
harakat namoyon yetadi. Sinflar shablon (qolip)ga o’xshaydi: ular obektlarning yekzemplyarlari 
(nushalari)ni tayyorlash uchun qo’llanadi. Belgilar - sinfning tashqaridan ko’rinib turgan 
xususiyatlari. Obekt ichki o’zgaruvchiga bevosita kirishni taqdim yetganda yoki usul yordamida 
qiymatni qaytargandagina, o’z belgilarini namoyon qilishi mumkin. Xulq-atvor - xabarga yoki 
holatning o’zgarishiga javoban obekt tomnidan bajariladigan xatti-harakatlar. U obekt nima 
qilayotganini bildiradi. Bir obekt ikkinchi obekt ustida xatti-harakatlar bajarib, uning xulq-atvoriga 
ta’sir ko’rsatishi mumkin. «Xatti-harakat» atamasi o’rniga «usulni chaqiirish», «funksiyani 
chaqirish» yoki «xabarni uzatish» atamalari qo’llanadi. Muhimi bu atamalarning qaysi biri 
qo’llanayotganida yemas, albatta, muhimi bu xatti-harakatlar obekt xulq-atvorini namoyon qilishga 
da’vat yetishidadir. Obektlar o’rtasida aloqa obektga mo’ljallangan dasturlashning muhim tarkibiy 
qismidir. Obektlar o’zaro aloqasining ikkita asosiy usuli mavjuddir. Birinchi usul: obektlar biri 
ikkinchisidan mustaqil ravishda mavjud bo’ladi. Agar alohida obektlarga o’zaro aloqa kerak bo’lib 
qolsa, ular bir-birlariga xabar jo’natadi. Obektlar bir-birlari bilan xabarlar yordamida aloqa qiladi. 
Xabar olgan obekt ma’lum xatti-harakatlarni bajaradi. Xabar uzatish bu obekt holatini o’zgartirish 
maqsadida uslubni chaqirib olish yoki xulq-atvor modellaridan birini qo’llashning o’zginasidir. 
Ikkinchi usul: obekt tarkibida boshqa obektlar bo’lishi mumkin. Xuddi Obektga mo’ljallangan 
dasturlash da bo’lganidek, dastur obektlardan tashkil topganidek, obektlar ham, o’z navbatida, 
agregasiya yordamida boshqa obektlardan jamlanishi mumkin. Ushbu obektlarning har bittasida 
uslub va belgilarga yega bo’lgan interfeys mavjud bo’ladi. Xabar - obektga mo’ljallangan 
yondoshuvning muhim tushinchasi. Xabarlar mexanizmi tufayli obektlar o’z mustaqilligini saqlab 
qolishi mumkin. Boshqa biron obektga xabar jo’natayotgan obekt uchun xabar olgan obekt 
talabdagi xatti-harakatni qanday bajarishi unchalik muhim yemas. Unga xatti-harakat 
bajarilganligining o’zi muhimdir. Ob’yekt - mavhum (abstrakt) mohiyat bo‘lib, u bizni o‘rab turgan 
haqiqiy olamning tavsiflariga ega. Ob’yektlarni yaratish va ular ustida manipulyatsiyalar olib borish 
- C++tilining qandaydir alohida imtiyozi emas, balki ob’yektlarning tavsifi va ular ustida 
o‘tkaziladigan opyeratsiyalarni kodli konstruktsiyalarda o‘zida mujassamlantiradigan dasturlash 
myetodologiyasi (uslubiyoti) ning natijasidir. Dasturning har bir ob’yekti, har qanday haqiqiy 
ob’yekt kabi, o‘z atributlari va o‘ziga xos xulq-atvori bilan ajralib turadi. Ob’yektlarni turli 
katyegoriyalarga ko‘ra tasniflash mumkin: masalan, myening «Cassio» raqamli qo‘l soatim soatlar 
sinfiga mansub. Soatlarning dasturiy ryealizatsiyasi (ishlatilishi), standart holat sifatida, sizning 
kompyutyeringizning opyeratsiya tizimi tarkibiga kiradi. Har bir sinf sinflar tabaqalanishida 
(iyerarxiyasida) ma’lum o‘rinni egallaydi. Masalan, barcha soatlar vaqtni o‘lchash asboblari sinfiga 
(tabaqalanishda ancha yuqori turgan) mansub, soatlar sinfining o‘zi esa xuddi shu mavzudagi 
ko‘plab hosila variatsiyalarni o‘z ichiga oladi. SHunday qilib, har qanday sinf ob’yektlarning biron-
bir katyegoriyasini aniqlaydi, har qanday ob’yekt esa biron-bir sinf ekzyemplyari (nushasi)dir. 
Ob’yektga mo‘ljallangan dasturlash (OMD) - bu dasturchining asosiy diqqatini ob’yektlarni 
ishlatish tafsilotlariga emas, balki ob’yektlar o‘rtasidagi aloqalarga qaratadigan myetodika. Bu 
bobda OMD ning asosiy tamoyillari (inkapsulyalash, vorislik, polimorfizm, sinflar va 
ob’yektlarning yaratilishi) C++Builder tilining vizual ishlov byerish intyegratsiyalangan muhitida 
qabul qilingan yangi tushuncha va atamalar bilan izohlanadi va to‘ldiriladi.


SHuningdyek, yangi imkoniyatlar (komponyentlar, xususiyatlar, voqea-hodisaning qayta ishlagichi) 
evaziga tilni kyengaytirish tavsiflari hamda ANCI C++ standartining oxirgi ko‘shimchalari 
(shablonlar, nomlar fazosi, to‘g‘ridan-to‘g‘ri va noaniq e’lonlar, dasturni bajarishda turlar 
idyentiftikatsiyasi, istisnolar) ning tavsiflari kyeltiriladi. Bob umumiy xaraktyerga ega bo‘lib, OMD 
ning o‘quvchi kyeyinchalik duch kyelishi mumkin bo‘lgan maxsus atamalari bilan tanishtirish 
maqsadini ko‘zlaydi. Buning zazurligi shundaki, C++Builder tili OMD ning tipik (namunaviy) 
tizimi hisoblanadi hamda OMD ning rivojida yetakchi o‘rin egallashga da’vogarlik qiladi. 
Inkapsulyalash Inkapsulyalash - ma’lumotlarning va shu ma’lumotlar ustida ish olib boradigan 
kodlarning bitta ob’yektda birlashtirilishi. OMD atamachiligida ma’lumotlar ob’yekt ma’lumotlari 
a’zolari (data members) dyeb, kodlar ob’yektli myetodlar yoki funktsiya-a’zolar (methods, member 
functions) dyeb ataladi. Inkapsulyalash ob’yektni tashqi muhitdan maksimal darajada ajratish 
(izolyatsiya qilish) imkonini byeradi. Bu ishlab chiqilayotgan dasturlarning ishonchliligini syezilarli 
darajada oshiradi, chunki ob’yektda mujassamlangan (lokallashtirilgan) funktsiyalar dastur bilan 
nisbatan kam xajmdagi ma’lumotlarni almashinadi, buning ustiga ushbu ma’lumotlarning miqdori 
va turi odatda sinchkovlik bilan nazorat qilinadi. Natijada ob’yektda inkapsulalangan funktsiyalar 
va ma’lumotlarning almashtirib qo‘yilishi yoki o‘zgartirilishi (moditsikatsiya qilinishi) umuman 
olganda dastur uchun yaxshi kuzatib bo‘lmaydigan oqibatlarni olib kyelmaydi (dasturlarning 
himoyalanganligini oshirish maqsadida OMD larda global o‘zgaruvchilar dyeyarli qo‘llanmaydi). 
Inkapsulyalashning yana bir muhim natijalaridan biri shundaki, bunda ob’yektlar almashinuvi, 
ularning bir dasturdan ikkinchisiga o‘tkazilishi osonlashadi. OMD da inkapsulyalash tamoyilining 
soddaligi va qulayligi dasturchilarni C++Builder tarkibiga kiruvchi Vizual Komponyentlar 
Kutubxonasini kyengaytirishga rag‘batlantiradi. Sinflar, komponyentlar va ob’yektlar Sinf jismoniy 
mohiyatga ega emas, tuzilmaning e’lon qilinishi uning eng yaqin analogiyasidir. Sinf ob’yektni 
yaratish uchun qo‘llangandagina, xotira ajralib chiqadi. Bu jarayon ham sinf nushasi (class instance) 
ni yaratish dyeb ataladi. C++tilining har qanday ob’yekti bir xil atributlarga, shuningdyek ushbu 
sinfning boshqa ob’yektlari bilan funktsionallikka ega. O‘z sinflarini yaratish hamda ushbu sinflar 
ob’yektlarining xulq-atvori uchun to‘liq mas’uliyat dasturchi zimmasiga yuklanadi. Biron-bir 
muhitda ishlar ekan, dasturchi standar sinflarning kattagina kutubxonasi (masalan, C++Builder 
Vizual Komponyentlar Kutubxonasi) ga kirish huquqiga ega bo‘ladi. Odatda, ob’yekt qandaydir 
unikal holatda mavjud bo‘lib, bu holat ob’yekt atributlarining joriy qiymatlari bilan byelgilanadi. 
Ob’yekt sinfining funktsionalligi ushbu sinf ekzyemplyari (nushasi) ustida o‘tkaziladigan 
opyeratsiyalar bilan byelgilanadi. C++tilida sinfni aniqlash uchun, ma’lumotlar a’zolari ustida ish 
olib boradigan hamda ob’yektlarning xulq-atvorini byelgilaydigan ma’lumotlar a’zolari va 
myetodlarini inkapsulyalash talab qilinadi. YUqoridagi misolimizga qaytib, shuni ta’kidlab 
o‘tamizki, «Casio» soatining suyuq kristalli displyeyi ushbu ob’yektning ma’lumotlar a’zosi 
bo‘ladi, boshqarish tugmachaliri esa ob’yektli myetodlar bo‘ladi. Soat tugmachalarini bosib, 
displyeyda vaqtni o‘rnatish ishlarini olib borish mumkin, ya’ni OMD atamalarini qo‘llaydigan 
bo‘lsak, myetodlar, ma’lumotlar a’zolarini o‘zgartirib, ob’yekt holatini modifikatsiya qiladi. 
C++Builder komponyentlar (components) tushunchasini ham kiritadi. Komponyentlar - maxsus 
sinflar bo‘lib, ularning xususiyatlari ob’yektlar atributlarini tashkil qiladi, ularning myetodlari esa 
komponyentli sinflarning tyegishli nushalari ustidagi opyeratsiyalarni amalga oshiradi. Myetod 
tushunchasi odatda komponyentli sinflar tarkibida qo‘llanadi va tashqi tomondan oddiy sinfning 
funktsiya-a’zo atamasidan farq qilmaydi. C++Builder tili komponyentlarning turi va funktsional 
xulq-atvorini nafaqat myetodlar yordamida, balki komponyentlar sinflarigagina xos bo‘lgan 
xususiyatlar vositasida ham manipulyatsiya qilish imkonini byeradi. C++Builder muhitida ishlar 
ekansiz, siz ilovani loyihalash bosqichida ham, uni bajarish bosqichida ham komponyentli ob’yekt 
ustida ishlash (manipulyatsiya qilish) mumkin ekanini tushunib yetishingiz ayon.


Komponentlar xususiyatlari (propertion) bu ma’ulmotlar a’zolarining kyengayishidir. Garchi ular 
ma’lumotlarni o‘z hollaricha saqlamasalar-da, biroq ob’yekt ma’lumotlari a’zolariga kirish huquqini 
ta’minlaydilar. Xususiyatlarni e’lon qilishda C++Builder _property kalit-so‘zdan foydalanadi. 
Voqyealar (events) yordamida komponyenta o‘ziga qandaydir avvaldan byelgilangan ta’sir 
ko‘rsatilganini foydalanuvchiga ma’lum qiladi. C++Builder muhitida ishlab chiqilayotgan 
dasturlardagi myetodlar asosan ma’lum voqyealarning yuzaga kyelishida dastur ryeaktsiyasini 
ularga nisabatan ishga soladigan voqyealarning qayta ishlagichlari (events handlers) da qo‘llanadi. 
Windows opyeratsiya tizimidagi voqyealar va ma’lumotlardagi qandaydir o‘xshashlikni payqab 
olish qiyin emas. Bu yerdagi oddiy tipik voqyealar klaviaturadagi tugmacha yoki klavishalarni 
bosishdan iborat. Komponyentalar o‘z xususiyatlari, myetodlari va voqyealarini inkapsulalaybilar. 
Bir qarashda, komponyentalar C++tilining boshqa ob’yektli sinflaridan, bir qator xususiyatlarni 
hisobga olmaganda, hyech bir farq qilmaydi. Bu xususiyatlar orasida hozircha quyidagilarni 
ko‘rsatib o‘tamiz:  Komponyentalarning ko‘pchiligi intyerfyeysning foydalanuvchi bilan 
boshqarish elyemyenti bo‘lib, ularning ayrimlari g‘oyat murakkab xulq-atvorga ega.  Barcha 
komponyentalar bitta umumiy ajdod-sinf (TComponent) ning byevosita yoki bilvosita 
avlodlaridirlar.  Komponyentalar odatda byevosita qo‘llanadi, ya’ni ularning xususiyatlari ustida 
ish olib boriladi (manipulyatsiyalar o‘tkaziladi); ularning o‘zlari yangi tarmoq sinflar (sinfchalar) 
qurish uchun bazaviy sinflar sifatida xizmat qila olmaydi.  Komponyentalar faqat new opyeratori 
yordamida uyum (heap) ning dinamik xotirasida joylashtiriladi, oddiy sinflar ob’yektlarida 
bo‘lganidyek, styekda emas.  Kopmonyentalar xususiyatlari RTTI - dinamik turlar 
idyentifikatsiyasini o‘z ichiga oladi.  Komponyentalarni Komponyentalar Palitrasiga qo‘shish va 
shundan so‘ng C++Builder vizual ishlanmasining intyegrallashgan muhitiga tyegishli SHakllar 
Muharriri vositasida ular ustida ishlash (manipulyatsiyalar o‘tkazish) mumkin. OMD 
ob’yektlarning o‘zaro aloqasini talablarni biron-bir ob’yektga yoki ob’yektlararo yuborish sifatida 
talqin etadi. Talabni olgan ob’yekt bunga tyegishli usulni chaqirish bilan javob byeradi. OMD ning 
SmallTalk kabi boshqa tillaridan farqli o‘laroq, C++tili «talab» tushunchasidan foydalanishni 
qo‘llab-quvvatlamaydi. Talab - ob’yekt ustida qilinayotgan ish, myetod esa - kyelib tushgan talabga 
ob’yektning javobi. Yaqinroq olib qaralsa, myetod - sinf ta’rifiga kiritilgan oddiy funktsiya-a’zo. 
Myetodni chaqirib olish uchun, ushbu sinf kontyekstida yoki biron-bir voqyeaning qayta 
ishlagichida funktsiya nomini ko‘rsatish kyerak. Aynan myetodning sinf bilan yashirin aloqasi uni 
oddiy funktsiya tushunchasidan ajratib turadi. Myetodni bajarish paytida, u o‘z sinfining barcha 
ma’lumotlariga kirish huquqiga ega bo‘ladi, garchi ushbu sinf nomining ochiq-oydin 
spyetsifikatsiyasini talab qilmasa ham. Bu ish byeistisno har bir myetodga yashirin paramyetrga
ya’ni sinf nushasi (ekzyemplyari) ga o‘zgaruvchan ko‘rsatkich this ni byerish orqali ta’minlanadi. 
Har gal myetod sifn ma’lumotlari a’zolariga murojaat qilganda, kompilyator this ko‘rsatkichidan 
foydalanadigan maxsus kodni gyenyeratsiya qiladi. 3.1. Sinflarni ishlab chiqish Sinflar ma’lum 
maqsadlarga erishish uchun ishlab chiqiladi. Odatda dasturchi mavhum g‘oyadan boshlaydi va u 
asta-syekin, loyihani ishlab chiqish jarayonida turli dyetallar bilan to‘ldirib boriladi. Ba’zida bir-
biriga g‘oyat o‘xshash bo‘lgan bir nyecha sinfni ishlab chiqish bilan ish tugallanadi. Sinflarda 
kodlarni bu kabi takrorlash (dubllashtirish) dan qochish uchun, bu sinflarni ikki qismga bo‘lish 
kyerak, ya’ni umumiy qismni ota sinfida aniqlab, farqlanadiganlarini hosila sinfda qoldirish kyerak. 
Sinfdan foydalanishdan oldin u e’lon qilinishi kerak. Odatda, amaliyotchi dasturchi tayyor bazaviy 
sinflardan foydalanadi, bundan tashqari u barcha spyetsifikatsiyalarni va ichki ishlash yo‘llarini 
bilishi mutlaqo shart emas. Biroq, C++bazaviy sinfidan foydalanishingiz uchun, qanday 
ma’lumotlar a’zolari va myetodlarga kira olishingiz mumkinligini (S++Builder komponyentasi 
qo‘llansa, taqdim etilayotgan xususiyatlar va voqyealarni ham) albatta bilishingiz lozim. Bazaviy 
sinfni e’lon qilish S++Builder sizga o‘z xususiyatlari, ma’lumotlari, myetodlari va voqyealari 
nomlarini inkapsulalaydiganbazaviy sinfni e’lon qilish imkonini beradi.


O‘zlarining byevosita vazifalarini bajarishdan tashqari, ob’yektli myetodlar sinf xususiyatlari va 
ma’lumotlari qiymatlariga qirish uchun ma’lum imtiyozlarga ham ega bo‘ladilar. Sinf ichidagi har 
bir e’lon qilish, sinf nomi qaysi syektsiyada paydo bo‘lishiga qarab, bu nomlarga kirish 
imtiyozlarini aniqlaydi. Har bir syektsiya quyidagi kalit-so‘zlarning biridan boshlanadi: private, 
protected, public. Bazaviy sinfni e’lon qilishning umumlashma sintaksisi quyidagi ko‘rinishga ega: 
slass className private: 
protected: myetodlar> public: konstruktorlar> SHunday qilib, C++da bazaviy 
sinfni e’lon qilish quyidagicha kirish huquqlari va tyegishli ko‘rishlik sohasini taqdim etadi:  
Privat private nomlar faqat ushbu sinf myetodlariga ruxsat etilgan eng chyeklangan qirish huquqiga 
ega. Hosila sinflar uchun bazaviy sinflarning privat myetodlariga kirish taqiqlangan. a 
Himoyalangan protected nomlar ushbu sinf va undan hosil bo‘lgan sinflar myetodlariga ruxsat 
etilgan kirish huquqiga ega.  Ommaviy public nomlar barcha sinflar va ularning ob’yektlari 
metodlariga ruxsat etilgan chyeksiz kirish huquqiga ega.
Quyidagi qoidalar sinf e’lon qilinishining turli syektsiyalarining hosil bo‘lishida qo‘llanadi:
1. Syektsiyalar har qanday tartibda ham paydo bo‘lishi, ularning nomlari esa takroran 
uchrayvyerishi mumkin.
2. Agar syektsiya nomlanmagan bo‘lsa, sinf nomlarining kyeyingi e’lonlarini kompilyator privat 
dyeb hisoblaydi. Bu yerda sinf va tuzilmaning e’lon qilinishida farq yuzaga kyelayapti: tuzilma 
yashirin holda ommaviy dyeb olib qaraladi.
3. Agar siz haqiqatan ham ma’lumotlar a’zolariga har qayerdan kirishni ruxsat etmoqchi 
bo‘lmasangiz, imkon darajasida ularni ommaviy syektsiyaga joylashtirmang. Faqat hosila sinflar 
myetodlariga kirish huquqini byerish uchun, ularni odatda himoyalangan dyeb e’lon qiladilar.
4. Myetodlardan ma’lumotlar xususiyatlari va a’zolarini tanlash, tyekshirish va qiymatlarini 
o‘rnatish uchun foydalaning.
5. Konstruktorlar va dyestruktorlar maxsus funktsiyalar bo‘lib, qiymatni qaytarmaydilar va o‘z 
sinfining nomiga ega bo‘ladilar. Konstruktor byerilgan sinf ob’yektini quradi, dyestruktor esa uni 
olib tashlaydi.
6. C++ning bittadan ortiq yo‘riqnomasiga ega bo‘lgan myetodlarni (konstruktorlar va 
dyestruktorlar kabi) sinfdan tashqarida deb e’lon qilish tavsiya etiladi.


XULOSA 
C++ tilida sinflar va obyeklar bilan ishlashda ko’plab dasturlarning strukturalari qolaversa 
tarmoqlanish va sikllar to’plamining kombinatsiyasidan iborat.SHular jumlasidan struktura va 
sinflar bilan ishlash yilar mobaynida mashina tilidagi malumotlarni inson tiliga tushunishda koplab 
ishlar olib borilib yillar mobaynida sinf va struktura bilan ishlab hozirgi kunga kelib bu amalar 
rivojlanib bir muncha qo’shimcha ammalar kiritildi. 
Sinf e’lon qilishning bir qancha qoidalari yani syektsiyalarini xosil qilishda foydalaniladi. 
Myetodlarning e’lon qilinishi va aniqlanishi turli fayllarda saqlanadi. Misollar shuni ko‘rsatadiki, 
myetodlar sinfdan tashqarida aniqlanganda ularning nomlarini kvalifikatsiya qilish 
(ixtisoslashtirish) kyerak. Myetodning ko‘rimlilik sohasini aniqlaydigan uning bunday 
kvalifikatsiya sintaksisi quyidagi ko‘rinishga ega: 
::
Xulosa qilib shuni aytish mumkinki struktura va sinflar bilan ishlash anchayin qulay . 


FOYDALANILGAN ADABIYOTLAR 
1.SH.A.Nazirov , A.A.Qobulov <
2.Xaldjigitov A.A, Madraximov SH.F, Adambayev U.E, Eshboyev E.A,
Informatika va programmalash .T: O’Zmu, 2005, -148. 
3. Гради Буч. Обьектно- ориентированной анализ и проектирование с 
примерами 
Преложений . на С++. Невский диалект, 560 стр ,2001 г. 

Download 248.92 Kb.

Do'stlaringiz bilan baham:
1   2




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