- •Современные информационные технологии:
- •Содержание
- •1 Историческая справка
- •1.1 Информационные революции
- •1.2 Этапы развития информационных технологий
- •2 Мультимедийные презентации
- •2.1 Общие определения
- •2.2 Рекомендации по составлению презентации
- •2.2.1 Общие рекомендации
- •2.2.2 Фон, шрифт, цвета
- •2.2.3 Таблицы, рисунки, графики и диаграммы
- •2.2.4 Видеоматериалы и анимация
- •2.3 Рекомендации по подготовке доклада
- •2.3.1 Научный доклад
- •2.3.2 Конкурсный доклад
- •3 Поиск информации в сети Интернет
- •3.1 Простой поиск
- •3.2 Расширенный поиск
- •4. Верстка
- •4.1 Основные определения
- •4.2 Разметка и макет страницы
- •4.3 Элементы набора текста
- •5 Жизненный цикл программного обеспечения
- •5.1 Модель кодирования и устранения ошибок
- •5.2 Каскадная модель
- •5.4 Спиральная модель
- •6 Парадигмы программирования
- •6.1 Директивное (структурное) программирование
- •6.2 Объектно-ориентированное программирование
- •6.3 Функциональное и логическое программирование
- •6.4 Выбор парадигмы
- •Литература
6.2 Объектно-ориентированное программирование
В этом подходе особое внимание уделяется данным, которые представляются в программе в виде объектов. Объекты взаимодействуют между собой с помощью механизма передачи сообщений. Задача программиста — реализовать такие объекты, при взаимодействии которых можно будет получать желаемый результат.
ООП призвано решать более сложные и объемные задачи по сравнению с директивным программированием.
В основе ООП лежат следующие понятия:
Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя.
Наследование — это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником или производным классом.
Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Все объекты являются экземплярами классов, которые по отношению друг к другу могут выступать в роли родитель-потомок. Классы-потомки наследуют свойства родительского класса.
Типичные представители объектно-ориентированных языков: С++, Java, Python.
Объектно-ориентированный подход целесообразно применять при решении задач для сложной предметной области, которую легче описать не набором стандартных типов данных, а через ее сущности (которые и будут являться кандидатами для создания классов). При этом происходит некоторый спад производительности программы (не всегда заметный).
6.3 Функциональное и логическое программирование
Декларативная программа заявляет (декларирует), что должно быть достигнуто в качестве цели. Важным является точная формулировка задачи. Программист не задает алгоритм для ее решения.
Функциональное программирование основано на математическом понятии функции, которая не изменяет свое окружение; это отличие функционального программирования от функций в структурных языках. Функциональная программа состоит из совокупности определений функций, которые в свою очередь представляют собой вызовы других функций и предложений, управляющих последовательностью вызовов. Каждая функция возвращает некоторое значение в вызвавшую его функцию, вычисление которой после этого продолжается; этот процесс повторяется до тех пор, пока не будет достигнут результат.
Типичные представители функциональных языков: List, Haskell.
В логическом программировании программы выражены в виде формул математической логики, и решение задачи достигается путем вывода логических следствий из них.
Наиболее известным представителем логических языков является Prolog.
Декларативный подход целесообразно применять в тех случаях, когда непонятно, как именно достичь результата, но точно известно, что нужно получить. Большое распространение эта парадигма получила при решении задач, связанных с искусственным интеллектом: с ее помощью реализованы различные экспертные системы.
6.4 Выбор парадигмы
Универсальной парадигмы программирования не существует, по большому счету, она и не нужна. Выбор же того или иного способа реализации программного обеспечения зависит от совокупности различных факторов:
сложности описания предметной области;
требований к скорости разработки и/или скорости работы программы;
требований переносимости (кроссплатформенности) или же наоборот, оптимизации под единственную платформу;
сложности используемых алгоритмов;
подхода к решению задачи («что сделать» или «как сделать»).
Можно одну и ту же задачу решить с использованием различных парадигм или их комбинации. Выбор, на наш взгляд, должен осуществляться с учетом «естественности» применения того или иного подхода для решения конкретной задачи. Так, например, вряд ли кто-то будет писать программы для численного решения дифференциальных уравнений с использованием декларативных методов или реализовывать интеллектуальную систему на основе структурного подхода.
