Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

AlgStr / Библиотека / ЛЕКЦИИ / PZ01 / Декомпозиция и абстракция

.doc
Скачиваний:
45
Добавлен:
23.03.2015
Размер:
23.55 Кб
Скачать

Блинов В. В. ПЗ-03-2

Декомпозиция и абстракция, их применение в программировании.

Базовым и основополагающим подходом к решению любой большой задачи является следование принципу «разделяй и властвуй». Поэтому рассмотрим два основных метода, позволяющих добиться выполнения этого принципа – методы абстракции и декомпозиции.

Декомпозицией называется процесс разбиения программы на части. Легко понять, для чего необходимо проводить корректную декомпозицию: ведь к решению объемной и сложной задачи, привлекается большое количество людей, причем это количество возрастает пропорционально сложности решаемой задачи. Вполне может случиться, что регулярные контакты между этими людьми будут затруднены. Следовательно, основную задачу необходимо разбить на части, которые могут быть разработаны по отдельности, и которые впоследствии можно было бы легко объединить в одну систему.

Таким образом, при декомпозиции задачи мы разбиваем ее на ряд подзадач так, что 1)каждая подзадача имеет один и тот же уровень рас­смотрения; 2)каждая задача может быть решена независимо и 3)полученные решения могут быть объединены вместе, позволяя решить исходную проблему.

Декомпозиция является весьма полезным и экономящим время способом решения задач в самых различных областях. При этом очень важно соблюдать корректность декомпозиции. К числу наиболее распространенных проблем относится ситуация, при которой создание отдельных компонент, способных решить соответствующие подзадачи, не приводит к тому, что объединение этих компонент позволяет решить исходную задачу. Эта проблема является одной из причин, по которой интеграция системы часто оказы­вается затруднительной.

Далее подробнее рассмотрим абстракцию. Абстракция представляет собой эффективный способ декомпозиции, осуществляемый посредством изменения списка детализации. Можно дать абстракции такое определение: абстракция есть отвлечение от несущественных подробностей с целью лучшего понимания стороны изучаемого явления и путь к созданию абстрактных понятий. Декомпозиция наиболее эффективна тогда, когда осуществляется на базе абстракции. Декомпозиция используется для разбиения программы на компоненты, которые могут быть объединены, позволив решить основную задачу; абстрагирование же предполагает продуманный выбор этих компонент.

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