double arrow

Основные принципы обобщенного программирования, его достоинства и недостатки

Принцип обобщенного программирования исходит из того, что большинство используемых в программе(-ах) алгоритмов идентичны [1]. Это касается и популярных алгоритмов, таких как быстрая сортировка или двоичный поиск, и обработки данных в таких распространенных структурах данных, как связный список или двоичное дерево. Поэтому понятно желание сформулировать код, реализующий подобную обработку, в наиболее общей формы, без конкретизации типов данных. При если язык является строго типизированным, для такого обобщения придется либо определять несколько реализаций функции (класса) для каждого из используемых в программе типов, либо объявлять параметры нетипизированными, уточняя их при вызове. Однако, эти решения не выглядят эффективными прежде всего по объему идентичного кода, который придется писать в программе.

Обобщённое программирование – это такой подход к разработке программного обеспечения, при котором производится абстрактное описание алгоритма решения задачи вне связи с конкретной природой данных, для которых этот алгоритм будет выполняться. Такая программа может быть написана и отлажена только один раз, и затем использоваться для данных различных типов.

Следует отметить, что, как и любую возможность, обобщённое программирование следует применять только тогда, когда для этого есть реальные условия. В противном случае, если применять средства обобщённого программирования ради самого обобщённого программирования мы получим неэффективную и непонятную программу.

Обобщение функций и методов: синтаксис определения, инстанцирование, особенности использования.

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

Шаблон функции в С++ определяется с использованием ключевого слова template [5]:

template <typename тип_данных> тип_возвр_значения

Имя_функции(список_параметров)

{тело_функции}

или

template <class тип_данных> тип_возвр_значения


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: