Листинг 4.1 class TPoint { private:
int x, y; public:
void movePoint ( int newx, int newy);// жаңанүктегежылжыту void relmove ( int dx, int dy );// dx,dy жылжуы
int getx ( void ) ( return x; } ; int gety ( void ) { return у; };
};
Компонент-функциялардың денесін жазу кластың жазуының ішіне кіреді, бұл getx және gety функциялар үшін мысалдағы сияқты жасалынады, немесе класс жазуынан тыс орналасады. Компонент-функциялар оларды шақырғанда қосымша аргументті объектілі типтің айнымалысына функция шақырғыш нұсқауышты айқын емес түрде алады және функция денесінде кластың барлық компоненттеріне қарауға болады. Осыған байланысты кластың жазуынан тыс компонент-функциялардың денесін жазуда, кластың функцияға жататыны туралы компиляторға ақпарат жасау үшін, контексті шешу операциясын пайдалану керек. TPoint класының әдістерін былай жазуға болады:
void TPoint : : movePoint (int newx, int newy )
{ x = newx; у = newy ; }
void TPoint : : relmove ( int dx, int dy )
{ x += dx; у += dy ; }
Типтің жазуында объектілі типтің айнымалыларын құру кезінде компонент-деректерді бастапқы инициализация жасау үшін арнайы әдіс-конструкторлар кіргізіледі. Конструктордың аты типтің атымен бірдей болады, конструктор ешқандай шаманы қайтармайды және ол үшін кайтарылған шаманың типтері көрсетілмейді. Жоғарыдағы
29
қаралған TPoint класы үшін конструкторсыз келістіруге болады және инициализация жасау үшін movePoint әдісін қолданады. Мысал ретінде координаталар осьтеріне параллель тік бұрыштың қабырғаларын сипаттайтын TRect класын қарайық.
Объектілі типтің конструкторлары толықтырған ақпарат келесі тарауда қарастырылады.
Объектілі типтің айнымалысын жариялау жалпы ережелер бойынша құралады, бірақ айнымалының идентификатордан кейін кластың белгілі конструктордың аргументтерді жақшалармен көрсетіледі, мысалы:
TRectrl(2, 4, 20,50);/* бір конструкторды қолдануды инициализация жасау * /
TRect *pr = &rl; // Trect-ке нұсқауыш
TRectr2, *ptr; /* r2 үшін параметрсіз конструкторколданылады */
new операциясында динамикалық жадыға обьектілі айнымалыны орналастыру үшін сондай-ақ типтің атынан кейін осы типтің конструкторының аргументтері көрсетеді.
ptr = new TRect( 7 , 3 , 1 8 , 4 0 ) ;
Обьектілі типтің компоненттеріне қарау үшін компоненттердің аты обьектілі айнымалының атымен немесе соған бағытталған нұсқауышпен анықталады.
rl.grow( 2, -3); pr->move( 1, 1);
Boolean bb= rl.isEmpty( );
Card класын құру мысалына қарап, функция card(suit,int) осы класты жазуда конструктор болып табылады. draw және halfdraw әдістері функцияның прототипіндегі жолмен жазылады.
Достарыңызбен бөлісу: |