Mushukсинфининг реал объектини аниқлаганимиздан сўнг бу объектнинг аъзоларига мурожаат қилиш зарурияти туғилиши мумкин. Бунинг учун бевосита мурожаат (.) оператори қўлланилади. Масалан, Frisky объектининг Weightўзгарувчи - аъзосига 50 сонини ўзлаштирмоқчи бўлсак қуйидаги жумлани ёзишимиз лозим.
Fresky.Weight=50; Meow()методини чақириш учун эса
Frisky.Meow(); жумласини ёзиш лозим.
Қиймат синфга эмас объектга ўзлаштирилади
С++ тилида берилганлар типига қиймат ўзлаштирилмайди. Қиймат фақатгина ўзгарувчиларга берилади. Масалан, қуйидаги ёзув нотўғридир:
Int=s // нотугри Компилятор int типига қиймат ўзлаштирилиши хатолик эканлиги ҳақида хабар беради. Худди шу нуқтаи – назардан қуйидаги ёзув ҳам ноўриндир:
Cat.itsYosh= 5 // нотўгри Агарда Mushukобъект бўлмасдан синф бўлса, юқоридаги ифодани ҳам компилятор хато деб ҳисоблайди. Ўзлаштириш амалини бажаришда хатоликка йўл қўймаслик учун олдин Mushukсинфига тегишли Friskyобъектини ҳосил қилиш ва унинг ItsYoshмайдонига 5қийматини бериш лозим.
MushukFrisky; 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;