Параметризованные классы (шаблоны)
17.01.2025
Что это и зачем нужно?
Иногда в проекте нужны классы, которые делают одно и то же, но немного отличаются. Например:
У тебя есть несколько списков (массивов), в которых хранятся разные типы данных (например, числа, строки или фигуры).
Почти все операции с этими списками одинаковые.
Чтобы не писать один и тот же код для каждого типа данных, придумали шаблоны (параметризованные классы).
Что такое шаблон?
Шаблон — это "заготовка" для создания классов.
В шаблоне есть параметры, которые ты потом задаешь.
Каждый класс, созданный из шаблона, будет отличаться только значениями этих параметров.
Пример для тупых:
Представь, что ты делаешь пиццы. У тебя есть шаблон (рецепт):
Основное тесто.
Сыр.
Топпинг (например, колбаса или грибы).
Шаблон ≠ готовая пицца.
Чтобы получить готовую пиццу, тебе нужно выбрать конкретный топпинг.
Как это выглядит в UML
Шаблон рисуют на диаграмме с параметрами, которые потом уточняются.
Например:
Есть шаблон
TList
, который создает списки из элементов типаC
.На основе этого шаблона можно создать список
RecordList
, если:Параметру
C
задать значениеRecord
(тип данных).Параметру
k
задать число30
(количество элементов в списке).
Пример обозначения
TList<Rectangle, 6>
Шаблон
TList
.Указаны параметры:
Rectangle
— тип данных.6
— количество элементов.
Шаблон сам по себе бесполезен.
Ты не можешь его использовать, пока не задашь параметры.
У шаблона есть ограничения:
Шаблон нельзя связывать с другими классами напрямую (как обычный класс).
Но можно:
Связывать шаблон с классом, созданным на его основе.
Добавлять ассоциации (связи, показывающие направление).
Нельзя добавлять новые свойства или функции в созданный из шаблона класс.
Если нужно что-то новое:
Создай новый класс.
Сделай его наследником класса из шаблона.
Добавляй что хочешь.
Last updated