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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Glovacki (обсуждение | вклад)
Нет описания правки
м ссылка
Строка 1: Строка 1:
{{rq|sources|refless|stub|topic=ИТ}}
{{rq|sources|refless|stub|topic=ИТ}}
'''Абстра́ктный тип да́нных''' '''(АТД)''' — это тип данных, который предоставляет для работы с элементами этого типа определённый набор [[Функция (программирование)|функций]], а также возможность создавать элементы этого типа при помощи специальных функций. Вся внутренняя структура такого типа спрятана от разработчика [[программное обеспечение|программного обеспечения]] — в этом и заключается суть [[абстракция|абстракции]]. Абстрактный тип данных определяет набор функций, независимых от конкретной реализации типа, для оперирования его значениями. Конкретные реализации АТД называются [[Структура данных|структурами данных]].
'''Абстра́ктный тип да́нных''' '''(АТД)''' — это тип данных, который предоставляет для работы с элементами этого типа определённый набор [[Функция (программирование)|функций]], а также возможность создавать элементы этого типа при помощи специальных функций. Вся внутренняя структура такого типа спрятана от разработчика [[программное обеспечение|программного обеспечения]] — в этом и заключается суть [[Абстракция данных|абстракции]]. Абстрактный тип данных определяет набор [[Функция (программирование)|функций]], независимых от конкретной реализации типа, для оперирования его значениями. Конкретные реализации АТД называются [[Структура данных|структурами данных]].


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


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


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

Версия от 13:42, 12 декабря 2015

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

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

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

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

Примеры АТД

См. также

Ссылки