Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sovremennye_informatsionnye_tekhnologii.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
427.52 Кб
Скачать

6.2 Объектно-ориентированное программирование

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

ООП призвано решать более сложные и объемные задачи по сравнению с директивным программированием.

В основе ООП лежат следующие понятия:

  1. Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя.

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

  3. Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Все объекты являются экземплярами классов, которые по отношению друг к другу могут выступать в роли родитель-потомок. Классы-потомки наследуют свойства родительского класса.

Типичные представители объектно-ориентированных языков: С++, Java, Python.

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

6.3 Функциональное и логическое программирование

Декларативная программа заявляет (декларирует), что должно быть достигнуто в качестве цели. Важным является точная формулировка задачи. Программист не задает алгоритм для ее решения.

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

Типичные представители функциональных языков: List, Haskell.

В логическом программировании программы выражены в виде формул математической логики, и решение задачи достигается путем вывода логических следствий из них.

Наиболее известным представителем логических языков является Prolog.

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

6.4 Выбор парадигмы

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

  • сложности описания предметной области;

  • требований к скорости разработки и/или скорости работы программы;

  • требований переносимости (кроссплатформенности) или же наоборот, оптимизации под единственную платформу;

  • сложности используемых алгоритмов;

  • подхода к решению задачи («что сделать» или «как сделать»).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]