Абстрактный тип данных: различия между версиями

Материал из Поле цифровой дидактики
м 1 версия импортирована
Нет описания правки
Строка 9: Строка 9:
Абстрактные типы данных позволяют достичь [[Модульность (программирование)|модульности]] программных продуктов и иметь несколько альтернативных взаимозаменяемых реализаций отдельного модуля.
Абстрактные типы данных позволяют достичь [[Модульность (программирование)|модульности]] программных продуктов и иметь несколько альтернативных взаимозаменяемых реализаций отдельного модуля.


== Примеры АТД ==
* [[Список (информатика)|Список]]
* [[Стек]]
* [[Очередь (программирование)|Очередь]]
* [[Ассоциативный массив]]
* [[Очередь с приоритетом (программирование)|Очередь с приоритетом]]
== См. также ==
* [[Интерфейс программирования приложений]]
* [[Объектно-ориентированное программирование]]
== Ссылки ==
* [http://www.rsdn.ru/article/alg/adt/adt.xml Лапшин В. А. Абстрактные типы данных в программировании]
{{Типы данных}}
{{rq|sources|refless|stub|topic=ИТ}}
[[Категория:Типы данных]]
[[Категория:Структуры данных]]
[[Категория:Структуры данных]]
[[Категория:Теория типов]]

Версия от 10:34, 19 октября 2022

Абстра́ктный тип да́нных (АТД) — это математическая модель для типов данных, где тип данных определяется поведением (семантикой) с точки зрения пользователя данных, а именно в терминах возможных значений, возможных операций над данными этого типа и поведения этих операций.

Формально АТД может быть определён как множество объектов, определяемое списком компонентов (операций, применимых к этим объектам, и их свойств). Вся внутренняя структура такого типа спрятана от разработчика программного обеспечения — в этом и заключается суть абстракции. Абстрактный тип данных определяет набор функций, независимых от конкретной реализации типа, для оперирования его значениями. Конкретные реализации АТД называются структурами данных.

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

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

Абстрактные типы данных позволяют достичь модульности программных продуктов и иметь несколько альтернативных взаимозаменяемых реализаций отдельного модуля.