💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №1
  • Регрессионное тестирование
  • Тестирование «белым ящиком»
  • Как делать оценку сложности?
  • Алгоритмы и сложность
  • Тестирование "белым ящиком" №2
  • Сложность алгоритмов
  • Тестирование "белым ящиком" №3
  • Тестирование "Чёрным ящиком»" №1
  • Тестирование "Черным ящиком" №2
  • Оценка сложности эвристических алгоритмов
  • Принципы ООП
  • Тестирование "Черным ящиком" №3
  • КТ - В3
  • Модульное тестирование
    • С кодами
  • Модульное тестирование
  • Абстрактные классы и интерфейсы в Python
  • Структуры в Python по аналогии с C++
    • Диалоги гениев
  • Делегаты в Python
    • Ещё более не смешные диалоги
  • Регулярные выражения в Python от простого к сложному
  • Python: Коллекции
  • Параметризованные классы (шаблоны)
  • Указатели и операции со списками в Python
  • Интеграционное тестирование
  • Работа с классами. Перегрузка методов
  • Определение операций в классе.
  • Создание наследованных классов
  • Интеграционное тестирование
  • Работа с объектами через интерфейсы
  • Использование стандартных интерфейсов
  • Работа с типом данных "Структура"
  • Коллекции. Параметризованные классы
  • Использование регулярных выражений
  • Операции со списками
  • Что такое паттерны проектирования?
  • Шпаргалка по шаблонам проектирования
    • [Habr] Шпаргалка
  • UML-диаграммы проектирования
  • Использование основных шаблонов.
  • Использование каких то там шаблонов
  • 15-я Практическая
  • 16-я Практическая
  • Graphviz Online
  • 17-я Практическая
  • Введение в теорию программирования: Объектно-ориентированный подход
  • Документирование софта и стандарты
  • C# Ввод и вывод
  • Оптимизация кода: просто о главном
  • Автоматизация разработки технической документации
  • Автоматизированное документирование и первичные данные
  • ADO.NET что это?
Powered by GitBook
On this page
  • Что это и зачем нужно?
  • Что такое шаблон?
  • Пример для тупых:
  • Как это выглядит в UML
  • Пример обозначения

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

17.01.2025

Что это и зачем нужно?

Иногда в проекте нужны классы, которые делают одно и то же, но немного отличаются. Например:

  • У тебя есть несколько списков (массивов), в которых хранятся разные типы данных (например, числа, строки или фигуры).

  • Почти все операции с этими списками одинаковые.

Чтобы не писать один и тот же код для каждого типа данных, придумали шаблоны (параметризованные классы).

Что такое шаблон?

Шаблон — это "заготовка" для создания классов.

  • В шаблоне есть параметры, которые ты потом задаешь.

  • Каждый класс, созданный из шаблона, будет отличаться только значениями этих параметров.

Пример для тупых:

Представь, что ты делаешь пиццы. У тебя есть шаблон (рецепт):

  • Основное тесто.

  • Сыр.

  • Топпинг (например, колбаса или грибы).

Шаблон ≠ готовая пицца.

  • Чтобы получить готовую пиццу, тебе нужно выбрать конкретный топпинг.

Как это выглядит в UML

  • Шаблон рисуют на диаграмме с параметрами, которые потом уточняются.

  • Например:

    • Есть шаблон TList, который создает списки из элементов типа C.

    • На основе этого шаблона можно создать список RecordList, если:

      • Параметру C задать значение Record (тип данных).

      • Параметру k задать число 30 (количество элементов в списке).

Пример обозначения

TList<Rectangle, 6>

  • Шаблон TList.

  • Указаны параметры:

    • Rectangle — тип данных.

    • 6 — количество элементов.

  1. Шаблон сам по себе бесполезен.

    • Ты не можешь его использовать, пока не задашь параметры.

  2. У шаблона есть ограничения:

    • Шаблон нельзя связывать с другими классами напрямую (как обычный класс).

    • Но можно:

      • Связывать шаблон с классом, созданным на его основе.

      • Добавлять ассоциации (связи, показывающие направление).

  3. Нельзя добавлять новые свойства или функции в созданный из шаблона класс.

    • Если нужно что-то новое:

      • Создай новый класс.

      • Сделай его наследником класса из шаблона.

      • Добавляй что хочешь.

PreviousPython: КоллекцииNextУказатели и операции со списками в Python

Last updated 4 months ago