Понятие абстрактных типов данных является ключевым в программировании. Абстракция подразумевает разделение и независимое рассмотрение интерфейса и реализации.
Рассмотрим пример. Все мы смотрим телевизионные программы. Назовем телевизор модулем или объектом. Этот объект имеет интерфейс с пользователем, т. е. средства управления (совокупность кнопок), воспроизведения изображения и звука. Чем совершеннее интерфейс, тем удобнее телевизор в использовании. Мы переключаем программы, нажимая определенные кнопки, и при этом не задумываемся о физических процессах, происходящих в телевизоре. Об этом знают специалисты. Когда мы выбираем телевизор, нас интересуют его цена и эксплуатационные параметры, т. е. качество изображения, звука и т. п. Однако нас не интересует то, что находится внутри. Другими словами, мы возвращаемся к свойствам объекта (модуля), какими являются интерфейс и реализация. Основная цель абстракции в программировании как раз и заключается в отделении интерфейса от реализации.
|
|
Вернемся к нашему примеру. Предположим, некоторый субъект уверен, что хорошо знает устройство телевизора. Он снимает крышку и начинает «усовершенствовать» его. Хотя иногда это и приводит к определенным промежуточным (локальным) успехам, окончательный результат почти всегда отрицательный. Поэтому подобные действия надо запрещать. В программировании это поддерживается механизмами запрета доступа или скрытия внутренних компонентов. Каждому объекту (модулю) предоставлено право самому распоряжаться «своим имуществом», т. е. данными функциями и операциями. Игнорирование этого принципа нарушает стабильность системы и часто приводит к ее полному разрушению. Принцип абстракции обязывает использовать механизмы скрытия, которые предотвращают умышленное или случайное изменение внутренних компонентов.
Абстракция данных предполагает определение и рассмотрение абстрактных типов данных (АТД) или, что то же самое, новых типов данных, введенных пользователем.
Абстрактный тип данных — это совокупность данных вместе с множеством операций, которые можно выполнять над этими данными.