Web

Что такое обобщенные функции на примерах, для чего они нужны

Обобщенные функции бывают в математике и программировании. Мы не будем разбирать, что такое обобщенные функции в математике, но обязательно разберем их определение в программировании.

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

Что такое обобщенные функции?

Обобщенное программирование — это подход в программировании, при котором функции и алгоритмы применяются  к разным типам данных, при этом они никак не видоизменяются. Важным инструментом обобщенного программирования являются обобщенные функции. 

Впервые об обобщенных функциях заговорили еще в 70-х годах прошлого столетия. Тогда их применяли в языке ADA. Чуть позже возможность реализовывать такие функции перекочевала в другие объектно-ориентированные языки, такие как:

  • С++;
  • Python;
  • Java;
  • Паскаль;
  • Eiffel;
  • D;
  • и др.

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

Суть обобщенных функций сводится к тому, что они описывают требования не к каким-то конкретным типам данных, а к абстрактным сущностям. Классическим примером использования обобщенной функции в объектно-ориентированном программировании является рисование объектов. В этом случае реализуется одна концептуальная операция «рисование объекта», которая может рисовать объекты разных форм: 

  • круги,
  • треугольники,
  • квадраты,
  • и др.

То есть не нужно для каждой отдельной фигуры создавать отдельную функцию, так как создается одна функция «рисовать», которая реализуется с разными методами, определяющими форму рисуемого объекта. Таким образом мы получаем, что обобщенные функции определяют абстрактные операции, где известны название и параметры операции, но не известны способы ее реализации.

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

Вернемся к рисованию. Если у нас есть обобщенная функция «рисовать» и мы ее запустим, то ничего не произойдет, так как функция не будет понимать что рисовать. Для этого мы должны создать несколько методов для этой функции, например «треугольник», «квадрат», «круг» и др. и определять их в качестве аргументов обобщенной функции. Таким образом обобщенная функция должна выглядеть так: «рисовать треугольник», «рисовать круг», «рисовать квадрат» и др.

Или другой пример. Допустим в программе нужно что-то постоянно менять местами. Тогда мы создаем обобщенную функцию «менять местами» и несколько методов к ней. Тогда при вызове функции в каком-то конкретном месте, мы указываем в ее аргументах, что конкретно нужно поменять местами. Например:

  • «поменять местами числа»;
  • «поменять местами буквы»;
  • «поменять местами предложения»;
  • «поменять местами строки»;
  • и др.

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

Заключение

Обобщенные функции — основной инструмент обобщенного программирования. Обобщенное программирование несет в себе важную идею — научиться программировать таким образом, чтобы единожды написанный  код можно было использовать многократно и максимально широко.

Схожие статьи

Тестирование и оптимизация скорости работы сайта: необходимые инструменты и применение
Web

Тестирование и оптимизация скорости работы сайта: необходимые инструменты и применение

Pastebin PoE: что это такое и как пользоваться этим приложением
Web

Pastebin PoE: что это такое и как пользоваться этим приложением

Что такое видеохостинги типа Ютуба, как на них можно загружать видео
Web

Что такое видеохостинги типа Ютуба, как на них можно загружать видео

Web

Как извлечь данные из файла csv в PHP

×