- •Вопрос 2) Понятие класса и объекта
- •Вопрос 3) Структура класса и синтаксис декларации класса
- •Вопрос 4) Доступ к членам класса. Закрытые и открытые члены класса.
- •Вопрос 5) Принцип инкапсуляции
- •Вопрос 6) Методы. Способы передачи параметров
- •Вопрос 7) Реализация методов класса. Конструкторы и деструкторы. Методы и их параметры
- •Конструкторы и деструкторы
- •Вопрос 8) Полиформизм, перегрузка методов
- •Виртуальные методы
- •Абстрактные классы
- •Вопрос 10) Интерфейсы c#
- •Вопрос 11) Классы и структуры Класс
- •Вопрос 12) Создание нового экземпляра класса.
- •13. Преобразование методов базового класса. Вызов методов базового класса.
- •Вопрос 14) Свойства и методы в ооп
- •Вопрос 15) События и методы в ооп События
- •Вопрос 16) Индексаторы с#
- •Вопрос 17) Делегаты в классах с#
- •Вопрос 18) Обобщенные классы или шаблоны.
Вопрос 18) Обобщенные классы или шаблоны.
Шаблоны – Это описание функции с аргументом, тип которого подставляется в зависимости от типа переданного в этот шаблон. Использую шаблон компилятор создает функцию именно под тот тип с которым она была вызвана. Также шаблон можно применять и к классам. Это позволяет не перегружать функцию много раз а написать один раз функцию, которая будет работать со всеми стандартными типами данных.
Пример класса стек работающего с разными типами:
#include <iostream.h>
Const int MAX=50;
Template <class T> // объевляем что будет шаблон в котором в тип переменной T будет меняться, что позволит использовать данный класс для разных типов данных.
Class stack
{
Private:
T st[MAX]; // Создастся массив с указанным типом
Int top;
Public:
stack()
{
top = -1;
}
void push(T var) // Указываем что аргумент метода будет типа указанного при создании экземпляра класса
{
st[++top] = var;
}
T pop() // Возвращаемый тип будет типом указанного при создании класса
{
If(top >= -1)
cout<<”Stack is empty”;
Else
return st[top--];
}
}
int main()
{
stack<float> stf; // Создаем экземпляр сласса stack, который будет работать с типом float
stf.push(32,2);
stf.push(0.3);
cout<<stf.pop()<<” ”<<stf.pop();
stack<char> stc; // Создаем экземпляр сласса stack, который будет работать с типом char
stc.push(‘A’);
stc.push(‘B’);
cout<<stc.pop()<<” ”<<stc.pop();
return 0;
}