Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
1.99 Mб
Скачать

Лабораторная работа №5 Тема: “Шаблонные классы”

Шаблонные классы предоставляют большие возможности, чем шаблонные функ­ции. В таком классе определяются все его данные и функции, а фактические типы об­рабатываемых данных задаются в качестве параметров позже, при создании объек­тов этого класса.

При создании шаблонных классов нужно обратить внимание на следующие возможности:

  • Шаблон типа необходимо задавать также при определении функции после име­­­ни класса, для которого эта функция определяется. Шаблон типа задается в угловых скобках;

  • При определении функции, ему должно в каждом случае предшествовать задание шаблонов типа со служебным словом template;

  • При создании объектов шаблонного класса после имени класса в угловых скобках задается конкретизация типа шаблона, то есть имя встроенного типа или типа пользователя, например:

Array <int> iar, *piar;

Array <double> dar, *pdar;

  • Дружественные функции также можно задавать в шаблонном классе по общим требованиям к дружественным функциям.

  • Для некоторых объектов шаблонный класс может не подойти. В таких случаях следует задавать реализацию различных функций для конкретного типа. Но лучше все-таки создавать шаблонные классы для объектов родственных типов, например, числовых, строковых, очередей, стеков и т. п.

Используя классы, можно определить новые типы данных. Например, в языке С++ отсутствует такой тип, как множество, но его легко реа­лизовать с помощью шаблонно­го класса.

Рассмотрим понятие множество. Множество – это какой-то «черный ящик», в который можно поместить элемент данного множества, проверить его наличие в множестве, исключить какой-либо элемент из множества. Будем считать, что все элементы множества должны быть уникальны (т.е. могут входить во множество только 1 раз). Порядок следования элементов во множестве не имеет значения, однако мы будем создавать множества элементов, упорядоченных по возрастанию.

Множество является подмножеством другого множества, если в этом другом множестве можно найти все элементы, имеющиеся в первом подмножестве. Например, множество {A, B} является подмножеством множества {A, B, C}.

Для множеств определены следующие операции:

  • объединение множеств – это элементы, принадлежащие обоим множествам. Если A = {‘2’, ’4’, ’A’, ’B’, ’F}, а B = {‘1’, ’4’, ’C’, ’B’, ’E’}, то A + B = {‘2’, ’4’, ’A’, ’B’, ’F’, ‘1’, ‘C’, ‘E};

  • пересечение множеств – это те элементы, которые принадлежат одновременно обоим множествам A*B = {’4’, ’B};

  • разность множеств – это исключение из левого множества элементов, которые имеются в правом AB = {‘2’, ’A’, ’F};

  • симметричная разность множеств – это набор элементов, которые входят только в одно из множеств (т.е. это объединение минус пересечение множеств): {‘2’, ’A’, ’F’, ‘1’, ‘C’, ‘E}

  • для множеств могут быть определены операции сравнения ==, !=, >=, <=, а также операция определения принадлежности элемента данному множеству.