Лекция 18. Интерфейсы и типы данных (часть 1)

Одно из базовых средств при определении интерфейсов в программировании — типы данных. Тип позволяет понять, каким образом следует интерпретировать данные в памяти компьютера и какие операции к этим данным применимы. Роль типов в определении интерфейсов различается в зависимости от выбранной парадигмы программирования:

  • В функциональных языках программирования типы определяют допустимые аргументы функций и возвращаемые функциями результаты.
  • В процедурных ЯП типы используются не только для спецификации функций, но и для задания глобального состояния программы.
  • В объектно-ориентированном программировании типы (классы) задают методы для работы с данными, которые, как правило, скрыты от пользователя. В зависимости от модели данных языка программирования, обычные методы могут дополняться свойствами, событиями, операторами и так далее.

Презентация: Лекция 18.


В процессе развития программной инженерии стала важна возможность описания типов данных, независимых от языка программирования. В частности, такое описание необходимо для решения проблемы взаимодействия компонентов, реализованных в разных средах. Международными организациями ISO и IEC был разработан соответствующий стандарт 11404 «Типы данных общего назначения». В нем содержатся:

  • общие характеристики типов данных (примитивные / генерируемые, атомарные / сложные, точные / приблизительные, …);
  • описание базовых типов (целые числа, числа с плавающей запятой, символы, …) и коллекций (массивы, последовательности, множества, …);
  • интуитивно понятный синтаксис для определения новых типов.

Различные языки программирования по-разному реализуют систему типов, описанную в ISO 11404. В процедурных языках (например, C) система типов «плоская» — взаимоотношения между типами не определены. В объектно-ориентированных ЯП типы данных формируют иерархию — все типы или, по крайней мере, большинство, являются потомками базового типа (java.lang.Object в Java, object в Python).

Различается в языках программирования и объем реализованных типов из стандарта 11404. В этом смысле самым характерным является процедурный тип данных, описывающий функции. Первоначально появившись в функциональных ЯП, процедурный тип затем распространился на другие категории языков. Полноценная поддержка функций как типа данных присутствует, например, в объектно-ориентированных Python и JavaScript; в некоторой степени процедурный тип поддерживается в C# (делегаты) и Java 8 (функциональные интерфейсы).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *