Сайфиев ж. Ф. С++ тилига кириш услубий қўлланма


Синф аъзоларига мурожаат қилиш имкони


Download 3.45 Mb.
bet40/79
Sana18.10.2023
Hajmi3.45 Mb.
#1707139
1   ...   36   37   38   39   40   41   42   43   ...   79
Bog'liq
cpp buxoro

Синф аъзоларига мурожаат қилиш имкони.


Mushuk синфининг реал объектини аниқлаганимиздан сўнг бу объектнинг аъзоларига мурожаат қилиш зарурияти туғилиши мумкин. Бунинг учун бевосита мурожаат (.) оператори қўлланилади. Масалан, Frisky объектининг Weight ўзгарувчи - аъзосига 50 сонини ўзлаштирмоқчи бўлсак қуйидаги жумлани ёзишимиз лозим.
Fresky.Weight=50;
Meow() методини чақириш учун эса
Frisky.Meow();
жумласини ёзиш лозим.


Қиймат синфга эмас объектга ўзлаштирилади


С++ тилида берилганлар типига қиймат ўзлаштирилмайди. Қиймат фақатгина ўзгарувчиларга берилади. Масалан, қуйидаги ёзув нотўғридир:
Int=s // нотугри
Компилятор int типига қиймат ўзлаштирилиши хатолик эканлиги ҳақида хабар беради. Худди шу нуқтаи – назардан қуйидаги ёзув ҳам ноўриндир:
Cat.itsYosh= 5 // нотўгри
Агарда Mushuk объект бўлмасдан синф бўлса, юқоридаги ифодани ҳам компилятор хато деб ҳисоблайди. Ўзлаштириш амалини бажаришда хатоликка йўл қўймаслик учун олдин Mushuk синфига тегишли Frisky объектини ҳосил қилиш ва унинг ItsYosh майдонига 5 қийматини бериш лозим.
Mushuk Frisky;
Frisky.itsYosh=5;


Синф аъзоларига мурожаат қилиш

имконини чегаралаш.


Синфни эълон қилишда бир нечта калит сўзлардан фойдаланилади. Улардан энг муҳимлари publiс (очиқ) ва private (ёпиқ) калит сўзлари бўлиб, улар орқали объектнинг аъзоларига мурожаат қилиш имконияти чегараланади.
Синфнинг барча методлари ва хоссалари бошланғич ҳолда ёпиқ деб эълон қилинади. Ёпиқ аъзоларга фақатгина шу синфнинг методлари орқалигина мурожаат қилиш мумкин. Объектнинг очиқ аъзоларига эса дастурдаги барча функциялар мурожаат қилишлари мумкин. Синф аъзоларига мурожаат қилиш имконини белгилаш жуда муҳим хусусият бўлиб, бу масалани ечишда унча катта тажрибага эга бўлмаган дастурларчилар кўпинча қийинчиликларга дуч келадилар. Бу ҳолатни батафсилроқ тушунтириш учун мавзуни бошида келтирилган масаламизга қайтамиз.
Class Mushuk
{
unsigned int itsYosh;
unsigned int itsOgirlik;
void Miyovlash();
}
Бу тарзда синфни эълон қилишда itsYosh ва itsOgirlik майдонлари ҳам, Miyovlash() методи ҳам ёпиқ аъзо сифатида аниқланади. Дастурда юқоридаги тартибда Mushuk синфи эълон қилинган бўлса ва бу синф экземпляри бўлган объектнинг itsYosh аъзосига main() функцияси танасидан туриб мурожаат қилсак компилятор хатолик рўй берганлиги ҳақида хабар беради.
Mushuk Baroq;
Baroq.itsYosh = 5 // Хатолик!
// Ёпик аъзога мурожаат килиш мумкин эмас.
Mushuk синфи аъзоларига дастурнинг бошқа объектлари томонидан мурожаат қилиш имконини ҳосил қилмоқчи бўлсак, уни public калитли сўзи орқали амалга оширамиз.
Class Mushuk
{
public:
unsigned int itsYosh;
unsigned int itsOgirlik;
void Meow( );
}
Энди public калитли сўзи орқали синфнинг барча аъзолари (itsYosh, itsOgirlik, Miyovlash()) очиқ аъзо бўлди.
6.1 – листингда Mushuk синфи очиқ ўзгарувчи аъзолари билан эълон қилинган.
6.1. – листинг. Оддий синфнинг очиқ аъзосига мурожаат.
# include < iostream.h >;
class Mushuk;
{
public:
int itsYosh;
int itsOgirlik;
}
int GetYosh(); // Inlizchada Get– olmoq
void SetYosh (int Age); //Set – o`zgartirmoq
void Miyovlash();
рrivate:
int itsYosh;

int main()


{
Mushuk Frisky;
Frisky.itsYosh= 5;
// ўзгарувчи – аъзога киймат ўзлаштирилди.
cout << “Frisky ” <cout <<“ yoshdagi mushuk.\n”;
return 0;
}
НАТИЖА:

Download 3.45 Mb.

Do'stlaringiz bilan baham:
1   ...   36   37   38   39   40   41   42   43   ...   79




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