1-Дәріс. Объектіге бағытталған бағдарламалаудың технологиясы



бет14/43
Дата07.01.2022
өлшемі357,5 Kb.
#19368
1   ...   10   11   12   13   14   15   16   17   ...   43
Негізгі әдебиет-5[б.9, 315-335], 7[б.1, 22-27, 28-55], 8[б. 5, 6].

Бақылау сұрақтары

  1. C++ тілінің операцияларын қайта жүктеу операциялары қандай?

  2. Көшіріп алу конструкторы қашан шақырылады?

  3. Бірігіп көшу операторларының префиксті және постфиксті қайта жүктеуін қалай айыруға болады?

  4. short int типті операндалар үшін қосынды операциясын қайта жүктеуге бола ма?


5–Дәріс. Үлгілер шаблоны

    • Үлгілер (шаблоны)

    • Тұқымдық кластар

Жоғары деңгейлі С++ тілінің екі келесі негізгі сипаттамасы мыналар болып табылады: үлгілер (templates) (шаблоны) және ерекше жағдайлардың өңделуі (exception handling). Бұл сипаттамалар барлық қазіргі уақыттағы компиляторлардан қолдау табады және бағдарламалауда анағұрлым қызықты екі мақсатқа жетуге мүмкіндік береді: көп қолданылатын және қарсылыққа тұрақты бағдарламаларды құруға.

Үлгілер көмегімен тұқымдық функцияларды (general functions) құруға болады және тұқымдық кластарды құруға болады (general classes). Тұқымдық функцияда немесе класта класс немесе функция жұмыс істейтін мәліметтер типі параметр ретінде беріледі. Бұл бір класты немесе функцияны функция немес кластың жаңа нұсқауының қажетінсіз берілгендердің бірнеше әр түрлі типтерін қолдануға мүмкіндік береді. Сөйтіп, үлгілер көп қолданылатын бағдарламаларды құруға мүмкіндік береді.

Көптеген алгоритмдер деректер типінен тәуелсіз логикалық жағынан бірдей, мысалы, сұрыптау алгоритмдері. Тұқымдық функцияны құрудың арқасында берілгендер типінен тәуелсіз алгоритм негізін анықтауға болады.

Тұқымдық функция template шешуші сөзі арқылы құрылады. Функция-үлгі анықтамасын типтік формасы:

template < class T > мәнді_қайтару

функция_аты (параметрлер_тізімі)

{ функция денесі }

Мұндағы T - берілгендер типінің жалған аты, оны компилятор функцияның нақты нұсқасын құрғанда берілгендердің шын типінің атымен автоматты түрде ауыстырады.

Мағынасы ұқсас функциялар бар болғанда түрлі берілгендер типтері үшін екі шамадан минимумын табу үшін My Min аты бар жалғыз үлгілік функцияны анықтауға болады:

template < class T > T My Min (T x, T y)

{ if (x<=y) return x; else return y;}

Ол потенциалды түрде белгісіз T типімен де жұмыс істей алады.

Функциялар үлгілерінің келесі тақырыптары синтаксистік жағынан дұрыс болып табылады:

template< class T > T Fun1(T x, T y, int z)

template double Fun2 (Tx, Ty)

template W Fun3(Tx,Wy,bool z).

●Үлгінің формальды параметрлерінің анықтауыштары (T,W) ең болмаса формальды параметрлер тізімінде бір рет болса да болу керек.

● Үлгілік функцияның денесі ішінде үлгінің формальды параметрлері локальды айнымалыларды анықтау операторларында, типті беру операторларында және т. б. өзге түрлі шын берілгендер типтерімен бірдей қолданыла алады, яғни мәліметтер типтерінің толық құқылы атаулары сияқты жұмыс істеуге.

● Жай функцияларға сияқты үлгілік функциялар үшін де прототиптерді жазуға болады, сонымен қатар оларға inline, static спецификаторларын да жазуға болады (бұл спецификаторлар үлгінің формальды параметрлер тізімінен кейін және функциямен қайтарылатын мән типіне дейін орналасу керек).

● Функция үлгілерін анықтау мәтіні шақыру орындалатын файлдарда немесе тақырыптық файлдарда (h-файлдарда) орналастырылу керек.

● template шешуші сөзі бар нұсқау үлгілік функцияның анықтамасы алдында орналасу керек.

● функция үлгілерінің механизмін қолданудың ешқандай априорлы қажеті жоқ! Біріншіден, функция үлгілерінің мәліметтердің абстрактті типтерімен байланысының пайдасы бар. Үлгілер механизмі глобальды функциялар үшін емес кластар мен олардың әдістерінің үлгілері үшін ерекше пайдалы!




Достарыңызбен бөлісу:
1   ...   10   11   12   13   14   15   16   17   ...   43




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет