Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / POSIBNIK / Виды и методы абстракции.DOC
Скачиваний:
48
Добавлен:
23.03.2015
Размер:
90.62 Кб
Скачать

Абстракция.Виды и методы абстракции в программировании. Понятие про абстрактные типы данных (а.Т.Д.).Процедурная абстракция и абстракция данных.

Абстракция– это отвлечение от несущественных сторон изучаемого явления с целью

1)лучше понять какую-то одну сторону изучаемого явления, 2)это инструмент познавательной деятельности, приводящий к абстрактным понятиям. Задача абстрагирования и последующей декомпозиции типична для процесса создания программы: - декомпозиция используется для разбиения программы на компоненты, кот-е могут быть затем объеденены, позволив решить основную задачу, абстрагирование же предполагает продуманный выбор компонент.

Мы последовательно выполняем то один, то другой из этих процессов до тех пор, пока не сведём исходную задачу к набору подзадач, решение которого известно. ЯП должен содержать средства для создания своих собственных абстракций. Наиболее распространённым механизмом такого рода явл. понятие процедур. Разделяя в прогр. тело процедуры и обращения к ней ЯВУ(языки высш. уровня) реализуют тем самым два важных метода абстракции: 1)абстракция через параметризацию, 2)абстр. через спецификацию. Абстр. через параметризацию позволяет нам, используя параметры, представить неограниченный набор различных вычислений одной программой, кот-я есть абстракция всех этих методов. Абстр. через П. явл. важным средством повышения универсальности программ.

Абстр. через спецификацию позволяет нам абстрагироваться от процесса вычислений, описанных в теле процедуры до уровня знания лишь того, что данные процедуры должны в итоге реализовать. Это достигается путём задания для каждой процедуры спецификации, описывающей эффект её работы, после чего смысл обращения к данной процедуре становится ясным через анализ этой спецификации, а не самого тела процедуры. Мы пользуемся А. через С. всякий раз, когда связываем с процедурой некий комментарий, достаточно информативный для того, чтобы иметь возможность работать с ней без анализа тела процедуры. Одним из способов написания таких комментариев – это использование пар утверждений: requires(начальные условия),effects(конечные условия). Для уяснения смысла обращения к процедуре придерживаемся двух чётких правил: 1)после выполнения процедуры можно считать, что конечное условие выполнено, 2)можно ограничиться только теми свойствами, которые подразумевают конечные условия.

Виды абстракций: А. через параметризацию и А. через специф. явл. мощными средствами создания программ. Они позволяют определить три различных вида абстракций: 1)процедурная А., 2)А. данных, 3)А. через итерацию. Все они используют оба метода абстракции. Процедурная А. позволяет расширить заданную некоторым языком виртуальную машину новой операцией. А. данных (или тип данных) состоит из набора объектов и набора операций, характеризующих поведение этих объектов. А. через итерацию даёт возможность не рассматривать информацию, не имеющую прямого отношения к управляющему потоку или циклу. АТД является уровнем средств определения типа данных с использованием абстрактных типов. Появился в языках 3-го поколения. Это, по существу, определение некоторого понятия в виде класса (одного или более) объектов с некоторыми свойствами и операциями. АТД часто отождествляется с соотв. мн-вом операций. В определение АТД входят след. 4 части: 1)внешность – имя определяемого типа с указанием типов, их аргументов и значений и т.д., 2)абстрактное описание операций и объектов средствами языка спецификаций, 3)конкретное описание операций и объектов средствами обычного ЯП, уровень кот-го не выше уровня языка второго поколения, 4)описание связи между 2) и 3), объясняющее в каком смысле часть 3) корректно представляет часть 2).

В большинстве ЯП 3-го поколения есть только 1) и 3). Представление должно быть защищено от внешнего воздействия. Классификация типов АТД: 1)тип наз. инкапсулированным, если предусматривается защита, 2)тип наз. абстрактным, если предусм. абстрактное описание, 3)тип наз. пакетированным, если предусмотрено только ср-во объединения объектов и операций в одно целое (модули языка Паскаль). Процедурная А. выполняет преобразование вх. аргументов в вых. с возможной модификацией вх. арг. При создании процедурных А. процедуры необх. минимизировать, т.е. в них должны быть реализованы только необх. действия. 1)св-во минимальности, 2)св-во обобщаемости – достигается использованием параметров вместо переменных, 3)простота – процедура должна обладать хорошо определённым и легко объяснимым назначением, независимым от контекста её использования. Абстракция данных. Процедуры дают нам возможность добавлять в базовый уровень языка новые операции, а А. данных – новые типы. <А. данных>=<объекты, операции>. При этом мы требуем, чтобы пользователь употреблял эти операции непосредственно, не обращаясь к представлению. А. данных позволяет отложить окончательный выбор структур д. до момента, когда эти ст-ры д. станут нам вполне ясны. А. данных полезна при модификации и эксплуатации программ. Реализация А. данных. Каждая реализация имеет два типа – абстрактный тип и тип представл. Полнота. Тип явл. полным, если он обеспечивает достаточно операций для того, чтобы все требующиеся пользователю работы с объектами могли быть проделаны с приемлемой эффективностью.

Соседние файлы в папке POSIBNIK