Тұқымдық кластар
Тұқымдық функцияларын толықтыру мақсатында тұқымдық кластарды да анықтауға болады. Бұл кезде барлық қажет алгоритмдер анықталған кластар құрылады, ал өңделетін берілгендердің фактілі типтері параметрлері ретінде бұл класс обьектілерін құрылғанда беріледі.
Тұқымдық кластар класс құрамына жұмыстың жалпы логикасы енгенде пайдалы. Мысалы, бүтіндер кезегін жүзеге асыратын алгоритм символдар кезегімен де жұмыс істейді. Сонымен почталық адрестердің байланысқан тізімін жүзеге асыратын механизм автомобильдерге арналған қосалқы бөлшектердің байланысқан тізімін де қолдайтын болады. Тұқымдық класс арқылы түрлі берілгендер типтеріне арналған байланысқан тізімдер кезегін жүзеге асыратын класты құруға мүмкіндік береді. Компилятор обьект құрғанда берілген тип негізінде обьекттің дұрыс типін автоматты түрде генерирлейтін болады.
Класс үлгісінің сипатталу синтаксисі келесі трде болады:
template < үлгі_параметрлерін_сипаттау > класс_анықтамасы
Параметрлер ретінде стандарттыға ұқсас қолданушымен анықталатын типтер үлгілер мен типтелген конструктор қолданылады.
Бірбайланысты тізімді жүзеге асыратын жай тұқымдық класты құрайық:
#include< iostream.h >
template< class T > class List
{ T data;
List*next;
Public:
List(T d); // класс конструкторы
Void add(List*node)
{ node next=this; next=0;}
List*getnext() {return next;}
T getdata(){return data;}
}
template< classT >List::List(Td)
{data=d; next=0;}
int main(void)
{List< char > start(‘a’); //start-обьект
List< char >*p,*last;
//тізімді құру
last=&start;
for(int i=1;i<26;i++)
{p=newList (‘a’+i);
p---add(last);last=p;
}
//тізімді шығару
p=&start;
while(p)
{cout<
p=p---getnext();
}return 0;
Көрініп тұрғандай, тұқымдық класты жариялау тұқымдық функция жариялануына ұқсас. Тізімде сақталынатын берілгендер типі класты жариялағанда тұқымдыққа айналады, бірақ ол берілгендердің шын типін беретін обьект жарияланбай көрінбейді. Обьектті құрғанда көрсетілген мәліметтер типін өзгерту жолымен тізімде сақталған мәліметтер ттипін өзгертуге болады.
Кейбір қорытындыларды келтірейік және үлгілерді сипаттаудың негізгі ережелерін атап өтейік:
Класс үлгісінің ішінде тип параметрі тип спецификациясы қолданылатын кез келген жерде қолданылады.
Үлгі параметрінің әрекет ету облысы – үлгі параметрінің сипаттау нүктесінен класс үлгісінің соңына дейін.
Класс үлгісінің әдістері автоматты түрде функция үлгілеріне айналады. Егер әдіс класс үлгісінен тыс сипатталса, онда әдіс тақырыбы келесі құрылымға ие болу керек:template<үлгі_параметрін_сипаттау>
типті_қайтару класс_аты < үлгі_параметрлері>::
Үлгі параметрлерін сипаттау әдіс тақырыбын сандық және позициялық түрінде сақтай отырып, класс үлгісіне сәйкеес келу керек.
4. Локальды кластар үлгілерді өз элементтері ретінде қолдана алмайды.
5.Класс үлгілерінің әдістері виртуальды бола алмайды.
6.Класс үлгілеріне статикалық элементтер, достық функциялар мен кластар ене алады.
7. Класс үлгісінің ішінде достық функциялардың үлгілерін анықтауға болмайды.
8. Класс үлгілері үлгіліктерден және жай кластардан туынды бола алады, сонымен қатар үлгілік және жай кластар үшін базалық болып табыла алады.
Достарыңызбен бөлісу: |