8435

Параметризовані класи (шаблони)

Лекция

Информатика, кибернетика и программирование

Параметризовані класи (шаблони). Мета работи Ознайомитись з принципами створення шаблонів. Теми для попереднього вивчення Введення у класи Структура класу и функції. Варіанти індивідуальних завдань...

Украинкский

2013-02-11

69.5 KB

5 чел.

Параметризовані класи (шаблони)

1. Мета работи

Ознайомитись з принципами створення шаблонів.

2. Теми для попереднього вивчення

  •  Введення у класи
  •  Структура класу и функції

3. Варіанти індивідуальних завдань

 1      

 2      

 3      

 4      

 5      

 6      

 7      

 8      

 9      

10      

11      

12      

13      

14      

15      

16      

17      

18      

19      

20      

21      

22      

23      

24      

    

4. Завдання до виконання

Згідно з номером варіанта спроектувати шаблон для класу, згідно зі своїм варіантом, та продемонструвати роботу з ними.  

5. Теоретичні відомості

Шаблони. Шаблон (template) — це механізм параметризації визначення класу чи функції довільним типом. Шаблони дозволяють застосовувати простий спосіб введення різного роду загальних концепцій та методів їх спільного використання. Результуючий код за ефективністю не поступається написаному вручну спеціалізованому коду. Клас, що утворюється із шаблону класу у разі конкретного задання значення параметра, є цілком нормальним класом, тому шаблон класу називають генератором типів. Такий процес генерації оголошення класу чи функції за шаблоном та аргументом шаблону називають інстанціюванням. Якщо має місце генерація різних версій шаблону для різних значень параметра, то кожну з цих версій називають спеціалізацією.

Стандартна бібліотека С++ містить класи-контейнери, реалізовані у формі шаблонів. Ось деякі з них:

vector                одновимірний масив елементів

list                     двозв’язний список елементів

deque                  черга елементів з двома кінцями

stack                  стек елементів

map                       асоціативний масив елементів

set                       множина елементів

 

Шаблон може мати кілька параметрів, які можуть бути: класами, стандартними типами, шаблонами; аргумент шаблону може бути константним виразом, адресою об’єкта чи функції; не може бути рядковим літералом. Допускаються значення аргументів шаблонів за замовчуванням, синтаксис та правила використання аналогічні з аргументами функцій за замовчуванням. Одна спеціалізація вважається більш спеціалізованою за іншу, якщо список аргументів першої спеціалізації відповідає другій, а не навпаки. Генеруючи типи, перевагу віддають більш спеціалізованим версіям:

template<class T> class Vector                  // шаблон

{

T* v;

int size;

public:

 Vector();

Vector(int);

//...

};

Наведемо приклад створення об’єкта параметризованого класу:

int main()

{ //...

Vector<int> vi;    //інстанціювання

Vector<char*> vpc;

Vector<double> vd;

//...

}

template<class T T default_value=0> class Vector<T*>

{ /*…*/};

//часткова спеціалізація Vector для значень параметра, поданих у вигляді T*

Vector<int**> vppi; // тут T - int*

template<> class Vector<void*>{/*…*/};

//повна спеціалізація без указання  параметра шаблону

Vector<void*> vpv;

Іноді параметр шаблону функції може бути виведений з типів її аргументів під час виклику, тому його не потрібно вказувати під час інстанціювання:

template<class T> void sort(Vector<T>& v) {/*…*/} //шаблон функції

sort(vi); //vi типу Vector<int>, не потрібно писати sort<int>

Шаблони функцій можна перевантажувати звичайними методами. Розв’язуючи відповідності, перевагу віддають більш спеціалізованим шаблонам:

template<class T> T sqrt(T);

template<class T> complex<T> sqrt(complex<T>);

double sqrt(double);

void f(complex<double> z)

{

 sqrt(2);          //sqrt<int>(int)

 sqrt(2.0);     //sqrt(double)

 sqrt(z);         //sqrt<double>(complex<double>)

}

Шаблони можна ефективно використовувати для успадкування. Методику абстракції за допомогою шаблонів називають параметричним поліморфізмом або поліморфізмом часу компіляції на відміну від поліморфізму часу виконання, що забезпечується віртуальними функціями.

Можна створювати шаблони класів, що походять як від класу, що не є шаблоном, так і від шаблону класу. Класи чи шаблони класів можуть мати члени-шаблони. Члени-шаблони не можуть бути віртуальними.

.

Варіанти індивідуальних завдань

Варіант №1

Динамічний одновимірний масив

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

пошук елемента масиву;

очищення масиву.

Варіант №2

Динамічний одновимірний масив

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

інформація про максимальний та поточний розміри масиву;

пошук максимального та мінімального елемента масиву;

Варіант №3

Динамічний двовимірний масив

Конструктори: за замовчуванням, копіювання, з різною кількістю параметрів.

Деструктор.

Функції (дві-три на вибір):

запис / одержання елемента масиву;

виведення масиву на екран;

пошук елемента масиву;

очищення масиву.

Варіант №4

Динамічний двовимірний масив

Конструктори: за замовчуванням, копіювання, з різною кількістю параметрів.

Деструктор.

Функції (дві-три на вибір):

запис / одержання елемента масиву;

виведення масиву на екран;

інформація про максимальний та поточний розміри масиву;

пошук максимального та мінімального елемента масиву;

Варіант №5

Черга елементів

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

виведення всіх елементів на екран;

інформація про максимальну та поточну кількість елементів.

Варіант №6

Динамічний список

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента;

знищення заданої кількості або всіх елементів.

Варіант №7

Динамічний список

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

вставлення елемента з голови (хвоста) у заданому місці;

виведення списку на екран;

пошук елемента списку;

очищення списку;

Варіант №8

Динамічний список

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

видалення елемента з голови (хвоста) із заданого місця;

інформація про кількість елементів списку;

очищення списку;

одержання наступного (попереднього) елемента.

Варіант №9

Динамічний список

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

вставлення елемента з голови (хвоста) у заданому місці;

виведення списку на екран;

пошук елемента списку;

одержання голови (хвоста) списку;

Варіант №10

Множина

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

додавання елемента до множини;

виведення всіх елементів множини на екран;

перевірка входження елемента до множини;

очищення множини;

Вариант №11

Множина

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

додавання елемента до множини;

видалення елемента із множини;

перевірка входження елемента до множини;

очищення множини;

Вариант №12

Множина

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

видалення елемента із множини;

виведення всіх елементів множини на екран;

очищення множини;

перебирання всіх елементів множини.

Вариант №13

Черга елементів

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

виведення всіх елементів на екран;

запис / одержання елемента;

знищення заданої кількості або всіх елементів.

Вариант №14

Стек елементів

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

виведення всіх елементів на екран;

запис / одержання елемента;

Вариант №15

Стек елементів

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

виведення всіх елементів на екран;

інформація про максимальну та поточну кількість елементів.

Вариант №16

Динамічний одновимірний масив

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

пошук максимального та мінімального елемента масиву;

Вариант №17

Динамічний двовимірний масив

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

пошук максимального та мінімального елемента масиву;

Вариант №18

Динамічний список

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента;

знищення заданої кількості або всіх елементів.

Вариант №19

Динамічний список

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

вставлення елемента з голови (хвоста) у заданому місці;

виведення списку на екран;

пошук елемента списку;

очищення списку;

Вариант №20

Динамічний двовимірний масив

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

запис / одержання елемента масиву;

виведення масиву на екран;

пошук елемента масиву;

очищення масиву.

Вариант №21

Динамічний одновимірний масив

Конструктори: за замовчуванням, копіювання, з різною кількістю параметрів.

Деструктор.

Функції (дві-три на вибір):

запис / одержання елемента масиву;

виведення масиву на екран;

пошук елемента масиву;

очищення масиву.

Вариант №22

Стек елементів

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

виведення всіх елементів на екран;

запис / одержання елемента;

знищення заданої кількості або всіх елементів.

Вариант №23

Множина

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

видалення елемента із множини;

виведення всіх елементів множини на екран;

очищення множини;

перебирання всіх елементів множини

Вариант №24

Множина

Конструктори: за замовчуванням, з параметрами та копіювання.

Деструктор.

Функції:

додавання елемента до множини;

видалення елемента із множини;

перевірка входження елемента до множини;

очищення множини;


 

А также другие работы, которые могут Вас заинтересовать

53679. Конспект урока по физической культуре для 1 класса 70 KB
  Закрепить технику ловли малого мяча. Учить метанию малого мяча в вертикальную цель с места. Инвентарь: Малые мячи. Баскетбольные мячи.
53680. КОНСПЕКТ УРОКА ПО ГАНДБОЛУ 41 KB
  Победитель - команда определяется по наименьше затраченному времени на пятнание игроков и индивидуально выявляет...
53681. Конспект урока по гандболу для 5 класса 47 KB
  Способствовать развитию координации движений точности при выполнении ведения мяча и передачи двумя руками сверху стоя на месте. Упражнения для обучения ведению мяча на месте: ведение мяча на месте правой левой рукой в положении с выставленной ногой; ведение мяча на месте с изменением высоты отскока за счет сгибания и разгибания ног; ведение мяча на месте с переводом перед собой в стойке на параллельных ногах и с выставленной вперед ногой; ведение мяча на месте кисть накладывается на мяч...
53682. Географическое положение, очертания берегов Австралии 60.5 KB
  Задачи: образовательные задачи: Закрепить знания о названии материков их изображениях и соотношениях на географических картах мира через практическую работу по составлению макета карты. Я раздам вам карточки изображающие контуры разных материков а вы определите как называются эти материки. Я порошу вас показать всему классу контур своего материка назвать его и разместить на классной доске при помощи магнита так же как на географической карте мира. А сейчас мелом напишите названия океанов омывающих берега этих материков.
53683. Конспект урока по гимнастике 67.5 KB
  Ходьба: а Руки вверх на носках; б руки на поясе перекатом с пятки на носок. вруки на пояс в полуприседе руки за голову в полном приседе г руки за голову в полном приседе. 2 руки за спину сгибая ноги назад; 3 руки на пояс высоким; 4 бег с крестным левым и правым. Руки в стороны.
53684. Кодирование 84.5 KB
  Что такое графы Как обозначаются графы Что такое круг Что такое точка Что такое стрелочки Дети называют тему. Рассказывают что такое графы. Спрашиваю детей что это такое. А что такое декодирование Декодирование это перевод символов отправителя в мысли получателя.
53685. Линейные алгоритмы 278 KB
  Развивающие: развитие алгоритмического и логического мышления, познавательный интерес обучающихся; развитие творческой активности обучающихся; формирование интереса к изучению предмета;
53686. Технология обработки баз данных. Основные понятия и возможности. Работа с готовой базой данных 75 KB
  Цели: Образовательные: Сформировать представления о назначении и области применения баз данных. Сформировать основные понятия темы База данных Информационная система Система управления базами данных СУБД.
53687. Работа с клавиатурным тренажером 39.5 KB
  Цели: Научить работать с клавиатурным тренажером Потренироваться печатать. Работа по теме урока: Сейчас мы приступим к работе с клавиатурным тренажером. Работа с клавиатурным тренажером. Работа в Блокноте 10 25 4.