Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ООП.doc
Скачиваний:
23
Добавлен:
08.11.2018
Размер:
1.4 Mб
Скачать

Технологии программирования

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

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

Например, если нам необходимо написать программу поиска телефона в телефонной книге, то вначале мы ее запишем следующим образом:

Прочитать фамилию Сверить фамилию с имеющимися в телефонной книге Если фамилия есть в телефонной книге, напечатать номер телефона В противном случае напечатать «Телефона нет»

Очевидно, что такая запись один к одному отображается в программу на языке высокого уровня, например на Паскале:

Program Phone Var Name: tName; Phone: tPhone; Begin ReadName(Name); if (CheckDatabase(Name, Phone)) then Writeln(Phone) else Writeln('Телефона нет'); End.

Эта программа использует процедуру ReadName для чтения фамилии и процедуру CheckDatabase для поиска номера телефона в базе данных. Теперь мы можем продолжить процесс составления программы для процедур следующего уровня: чтения фамилии и поиска номера телефона. Они в свою очередь также могут включать в себя процедуры следующего уровня вложенности.

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

Программа компонуется с заглушками и может работать. Иными словами, заглушки позволяют проверить логику работы верхнего уровня до реализации следующего уровня. Последовательно применяя метод заглушек, можно на каждом шаге разработки программы иметь работающий скелет, который постепенно обрастает деталями.

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

Но существует альтернативный способ декомпозиции – объектно-ориентированный. При этом в программе выделяются автономно действующие объекты, которые взаимодействуют друг с другом, чтобы обеспечить поведение системы, соответствующее более высокому уровню. Например, программная система, моделирующая производственный участок (рис. 1)

Здесь склад хранит некоторое количество заготовок и может выдавать и принимать их. Станки способны обрабатывать заготовки за конечное время. В процессе обработки часть заготовок превратится в детали, часть будет испорчена и станет браком.

При разработке программы, моделирующей подобный производственный участок, структурный подход применим очень плохо. Необходим другой подход – а именно объектно-ориентированный. В его основе лежит представление о том, что программу необходимо рассматривать как совокупность взаимодействующих друг с другом объектов. В рассматриваемом примере каждому объекту реального мира (склад, станок) будет соответствовать программный объект, и работа программы может быть описана как взаимодействие этих объектов. Этот подход соответствует четвертому поколению языков программирования высокого уровня.

В настоящее время используются оба подхода: и структурный и объектно-ориентированный. Выбор зависит от решаемой задачи. Рассмотрим пример – программа, моделирующая следующую систему: на спутнике установлена камера, она снимает поверхность земли и передает на землю изображение (рис. 2).

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

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