Абстрактный тип данных: различия между версиями
Patarakin (обсуждение | вклад) м 1 версия импортирована |
Patarakin (обсуждение | вклад) Нет описания правки |
||
| (не показаны 2 промежуточные версии этого же участника) | |||
| Строка 1: | Строка 1: | ||
{{Понятие | |||
|Description=Абстра́ктный тип да́нных (АТД) — это математическая модель для типов данных, где тип данных определяется поведением (семантикой) с точки зрения пользователя данных, а именно в терминах возможных значений, возможных операций над данными этого типа и поведения этих операций. | |||
|Field_of_knowledge=Информатика | |||
|similar_concepts=Структура данных | |||
}} | |||
'''Абстра́ктный тип да́нных''' '''(АТД)''' — это [[математическая модель]] для [[Тип данных|типов данных]], где тип данных определяется поведением ([[Семантика (программирование)|семантикой]]) с точки зрения ''пользователя'' данных, а именно в терминах возможных значений, возможных операций над данными этого типа и поведения этих операций. | '''Абстра́ктный тип да́нных''' '''(АТД)''' — это [[математическая модель]] для [[Тип данных|типов данных]], где тип данных определяется поведением ([[Семантика (программирование)|семантикой]]) с точки зрения ''пользователя'' данных, а именно в терминах возможных значений, возможных операций над данными этого типа и поведения этих операций. | ||
Формально АТД может быть определён как [[множество]] объектов, определяемое списком компонентов (операций, применимых к этим объектам, и их свойств). Вся внутренняя структура такого типа спрятана от разработчика [[программное обеспечение|программного обеспечения]] — в этом и заключается суть [[Абстракция | Формально АТД может быть определён как [[множество]] объектов, определяемое списком компонентов (операций, применимых к этим объектам, и их свойств). Вся внутренняя структура такого типа спрятана от разработчика [[программное обеспечение|программного обеспечения]] — в этом и заключается суть [[Абстракция|абстракции]]. Абстрактный тип данных определяет набор [[Функция (программирование)|функций]], независимых от конкретной реализации типа, для оперирования его значениями. Конкретные реализации АТД называются [[Структура данных|структурами данных]]. | ||
В [[программирование|программировании]] абстрактные типы данных обычно представляются в виде [[Программный интерфейс|интерфейсов]], которые скрывают соответствующие реализации типов. Программисты работают с абстрактными типами данных исключительно через их интерфейсы, поскольку реализация может в будущем измениться. Такой подход соответствует принципу [[Инкапсуляция | В [[программирование|программировании]] абстрактные типы данных обычно представляются в виде [[Программный интерфейс|интерфейсов]], которые скрывают соответствующие реализации типов. Программисты работают с абстрактными типами данных исключительно через их интерфейсы, поскольку реализация может в будущем измениться. Такой подход соответствует принципу [[Инкапсуляция|инкапсуляции]] в [[объектно-ориентированное программирование|объектно-ориентированном программировании]]. Сильной стороной этой методики является именно сокрытие реализации. Раз вовне опубликован только интерфейс, то пока структура данных поддерживает этот интерфейс, все программы, работающие с заданной структурой абстрактным типом данных, будут продолжать работать. Разработчики структур данных стараются, не меняя внешнего интерфейса и [[Семантика|семантики]] функций, постепенно дорабатывать реализации, улучшая [[алгоритм]]ы по скорости, надёжности и используемой памяти. | ||
Различие между абстрактными типами данных и [[Структура данных|структурами данных]], которые реализуют абстрактные типы, можно пояснить на следующем примере. Абстрактный тип данных «[[ | Различие между абстрактными типами данных и [[Структура данных|структурами данных]], которые реализуют абстрактные типы, можно пояснить на следующем примере. Абстрактный тип данных «[[список]]» может быть реализован при помощи [[массив]]а или линейного списка с использованием различных методов [[Динамическое распределение памяти|динамического выделения памяти]]. Однако каждая реализация определяет один и тот же набор функций, который должен работать одинаково (по результату, а не по скорости) для всех реализаций. | ||
Абстрактные типы данных позволяют достичь [[Модульность (программирование)|модульности]] программных продуктов и иметь несколько альтернативных взаимозаменяемых реализаций отдельного модуля. | Абстрактные типы данных позволяют достичь [[Модульность (программирование)|модульности]] программных продуктов и иметь несколько альтернативных взаимозаменяемых реализаций отдельного модуля. | ||
[[Категория:Структуры данных]] | [[Категория:Структуры данных]] | ||
[[Категория: | [[Категория:Понятие]] | ||
Текущая версия от 19:03, 9 января 2023
| Описание | Абстра́ктный тип да́нных (АТД) — это математическая модель для типов данных, где тип данных определяется поведением (семантикой) с точки зрения пользователя данных, а именно в терминах возможных значений, возможных операций над данными этого типа и поведения этих операций. |
|---|---|
| Область знаний | Информатика |
| Авторы | |
| Поясняющее видео | |
| Близкие понятия | Структура данных |
| Среды и средства для освоения понятия |
Абстра́ктный тип да́нных (АТД) — это математическая модель для типов данных, где тип данных определяется поведением (семантикой) с точки зрения пользователя данных, а именно в терминах возможных значений, возможных операций над данными этого типа и поведения этих операций.
Формально АТД может быть определён как множество объектов, определяемое списком компонентов (операций, применимых к этим объектам, и их свойств). Вся внутренняя структура такого типа спрятана от разработчика программного обеспечения — в этом и заключается суть абстракции. Абстрактный тип данных определяет набор функций, независимых от конкретной реализации типа, для оперирования его значениями. Конкретные реализации АТД называются структурами данных.
В программировании абстрактные типы данных обычно представляются в виде интерфейсов, которые скрывают соответствующие реализации типов. Программисты работают с абстрактными типами данных исключительно через их интерфейсы, поскольку реализация может в будущем измениться. Такой подход соответствует принципу инкапсуляции в объектно-ориентированном программировании. Сильной стороной этой методики является именно сокрытие реализации. Раз вовне опубликован только интерфейс, то пока структура данных поддерживает этот интерфейс, все программы, работающие с заданной структурой абстрактным типом данных, будут продолжать работать. Разработчики структур данных стараются, не меняя внешнего интерфейса и семантики функций, постепенно дорабатывать реализации, улучшая алгоритмы по скорости, надёжности и используемой памяти.
Различие между абстрактными типами данных и структурами данных, которые реализуют абстрактные типы, можно пояснить на следующем примере. Абстрактный тип данных «список» может быть реализован при помощи массива или линейного списка с использованием различных методов динамического выделения памяти. Однако каждая реализация определяет один и тот же набор функций, который должен работать одинаково (по результату, а не по скорости) для всех реализаций.
Абстрактные типы данных позволяют достичь модульности программных продуктов и иметь несколько альтернативных взаимозаменяемых реализаций отдельного модуля.
