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

Множина

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

Деструктор.

Функції:

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

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

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

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


 

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

46075. Дислалия. Классификация нарушений звукопроизношения 25 KB
  К ней относятся дефекты воспроизведения звуков речи фонем при отсутствии органических нарушений в строении артикуляционного аппарата. При функциональной дислалии несформированными оказываются специфические речевые умения произвольно принимать позиции артикуляторных органов необходимые для произношения звуков. Это может быть связано с тем что у ребенка не образовались акустические или артикуляционые образцы отдельных звуков. Фонемы не различаются по своему звучанию что приводит к замене звуков.
46076. Методика логопедического воздействия при функциональной дислалии (В 65) 25 KB
  Основной целью логопедического воздействия при дислалии является формирование умений и навыков правильного воспроизведения звуков речи. Ребенок должен научиться: узнавать звуки речи отличать один от другого по акустическим признакам; отличать нормированное произнесение звука от ненормированного; осуществлять слуховой контроль и оценивать качество произносимого звука; принимать необходимые артикуляционные позиции обеспечивающие нормированный звук; варьировать артикуляционные уклады звуков в зависимости от их сочетаемости с другими в...
46077. Ринолалия. Причины, механизмы, основные формы нарушения 29 KB
  Такое нарушения резонанса происходит в результате неправильного направления голосовой или дыхательной струи вследствие механического дефекта носовой полости носоглотки мягкого и твердого неба или расстройства функции мягкого неба. Назальный носовой оттенок речи связан с наличием широкого сообщения между ротовой и носовой полостью и недостаточным смыканием носоглоточного прохода изза укороченного мягкого неба. Расстройство звукообразования зависит : от нарушения деятельности мышечного аппарата мягкого неба глотки и языка; от...
46078. Система коррекционного воздействия при ринолалии в дооперационный период 29.5 KB
  Коррекция гласных предусматривает продвижение языка к нижним зубам и произнесение их на диафрагмальном выдохе в грудном регистре. Начинают с протяжного произнесения гласных ааа эээ на мягком выдохе в грудном регистре. Постановка гласных начинается с а и э которые к этому времени достаточно отработаны артикуляционными упражнениями. Это обусловлено на изменении силы необходимой для удержания сегментов неба в горизонтальном положении и на возрастании объема глоточной полости при артикуляции гласных из которых у и обладают наиболее...
46079. Система коррекционного воздействия при ринолалии в послеоперационный период 28.5 KB
  Постановка гласных звуков. Занятия снова начинают с проговаривания гласных звуков а и э. Как только небо станет удерживаться в подъеме 1 2 секунды следует приступать к нормализации резонанса гласных звуков. Ребенок упражняется в начале в проговаривании изолированных гласных звуков а затем в сочетаниях по 23 звука.
46080. Характеристика различных аспектов изучения дизартрии 14 KB
  Характеристика различных аспектов изучения дизартрии. Основные проявления дизартрии состоят в расстройстве артикуляции звуков нарушениях голосообразования а также в изменениях темпа речи ритма и интонации. Причинами дизартрии являются органические поражения центральной нервной системы в результате воздействия различных неблагоприятных факторов на развивающийся мозг ребенка во внутриутробном и раннем периодах развития. Клиническая картина дизартрии впервые была описана более ста лет назад у взрослых в рамках псевдобульбарного...
46081. Дизартрия. Этиология, механизмы нарушения, симптоматика 19.5 KB
  Этиология дизартрии определяется органическим поражением центральной и периферической нервной системы под влиянием различных неблагоприятных внешних экзогенных факторов воздействующих во внутриутробном периоде развития в момент родов и после рождения. Основными признаками дизартрии являются дефекты звукопроизношения и голоса сочетающиеся с нарушениями речевой моторики и речевого дыхания. При дизартрии в отличие от дислалии может нарушаться произношение как согласных так и гласных звуков. В зависимости от нарушений все дефекты...
46082. Классификация дизартрии, характеристика основных форм и степеней нарушения 35 KB
  У детей с описываемой формой дизартрии наблюдается атрофия мышц языка и глотки снижается также тонус мышц атония. Иногда при подкорковой дизартрии у детей наблюдается снижение слуха осложняющее речевой дефект. Наблюдается инертность иннервационного импульса. Наблюдается при поражении мозжечка и его связей с другими отделами ЦНС.
46083. Характеристика основных направлений коррекционной работы при различных формах дизартрии 29 KB
  Развитие артикуляционной моторики речевого дыхания постановка и закрепление звуков в речи. Важная задача развитие слухового восприятия и звукового анализа а также восприятия и воспроизведения ритма. Основная цель: развитие речевого общения и звукового анализа. Проводится работа по коррекции артикуляционных нарушений: при спастичности расслабление мышц артикуляционного аппарата выработка контроля над положением рта развитие артикуляционных движений развитие голоса; коррекция речевого дыхания; развитие ощущений артикуляционных движений...