
- •Оглавление
- •Введение
- •1. Рекомендации по изучению теоретического материала
- •1.1. Общие указания
- •1.2. Рекомендации по конкретным разделам курса
- •1.3. Методология обобщенного программирования
- •Почему не интерфейсы?
- •Вызов объекта
- •Реализация компараторов
- •Техника traits
- •2. Рекомендации по подготовке эссе, рефератов и докладов
- •2.1. Эссе: рекомендации по подготовке
- •2.2. Рефераты: рекомендации по подготовке
- •2.3. Доклады: рекомендации по подготовке
- •2.4. Моделирующие программы: рекомендации по разработке
- •3.2. Домашнее задание №2. Использование алгоритмов и контейнеров данных в прикладной задаче. Задачи домашнего задания
- •Задание
- •Требования к отчетности
- •Предлагаемые этапы выполнения задания
- •Теоретический материал, необходимый для выполнения домашнего задания
- •Функциональный и объектно-ориентированный подходы к программированию – краткое описание
- •Основы uml
- •Понятие агрегации в объектно-ориентированном программировании
- •Рекомендованные правила оформления исходных текстов
- •4.1. Правила выбора идентификаторов
- •4.2. Выравнивание исходных текстов Символ табуляции запрещён
- •Выравнивание блоков
- •Пробелы
- •Длинные операторы
- •4.3. Комментарии
- •Заключение
- •Литература
- •Кафедра компьютерной фотоники
Функциональный и объектно-ориентированный подходы к программированию – краткое описание
Основные принципы функционального подхода к программированию следующие:
Мы задаем себе вопрос «Что программа должна сделать» и формулируем ответ на него.
После этого мы разбиваем то, что должна сделать программа, на логические этапы. Каждый логический этап представляется как подпрограмма (функция C++). Далее мы рассматриваем задачу каждой функции и бьем ее на более мелкие части, пока функции не станут элементарными.
Мы стремимся выделять общие функции, которые будут использоваться при реализации нескольких функций более высокого уровня.
Как правило, существующие в программе функции соответствуют глаголам постановки задачи.
Функциональный подход был достаточно органичным для программ научных расчетов и т.д. – программ, которые должны выполнить какую-то операцию и выйти.
Основы объектно-ориентированного проектирования следующие:
Мы задаем себе вопрос «с какими объектами работает наша программа?» Какие объекты реального мира она моделирует? Какими свойствами обладают эти объекты и какие операции могут с ними выполняться?
После этого мы создаем классы (возможные типы объектов), методы и члены данных.
Если реализация какого-то метода нетривиальна – обычно это говорит о необходимости промоделировать (более точно, чем раньше) тот или иной объект.
Как правило, существующие в программе классы соответствуют существительным постановки задачи.
Сама работа программы представляет собой реагирование объектов на сообщения, которые может посылать пользователь через пользовательский интерфейс программы, различные внешние устройства и сами объекты друг другу. В качестве посылки сообщения может рассматриваться вызов метода объекта.
В объектно-ориентрованной программе широко используются три принципа:
Инкапсуляция – объединение данных и методов в рамках класса и скрытие данных от пользователя (как правило, пользователь может вызвать лишь методы класса).
Наследование – возможность создать класс-потомок, содержащий функциональность класса предка + дополнительную функциональность. Актуально для случая, когда один класс более конкретен, чем другой. Например, «самолет» имеет все свойства и операции класса «транспортное средство» + дополнительные операции (потому что самолет – транспортное средство).
Полиморфизм. Позволяет наследнику определить реализацию метода, отличную от существующей в предке. При этом, если пользовательский код, работая с объектом класса-потомка, не знает конкретного типа объекта (думает, что это объект класса-предка), вызван все равно будет метод потомка. Например, если существуют классы геометрических фигур, унаследованные от класса Shape, и каждый из них имеет свою реализацию сдвига и поворота, то массив фигур может поворачиваться единообразно без знания реализации каждой фигуры.
Объектно-ориентированный подход актуален для программ моделирования реального мира (состоящих из объектов) и программ, которые постоянно интерактивно взаимодействуют с пользователем (т.к. подход, основанный на сообщениях, посылаемых объектам, более органичен для таких программ).