Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Home-Programming.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
648.7 Кб
Скачать

Функциональный и объектно-ориентированный подходы к программированию – краткое описание

Основные принципы функционального подхода к программированию следующие:

  1. Мы задаем себе вопрос «Что программа должна сделать» и формулируем ответ на него.

  2. После этого мы разбиваем то, что должна сделать программа, на логические этапы. Каждый логический этап представляется как подпрограмма (функция C++). Далее мы рассматриваем задачу каждой функции и бьем ее на более мелкие части, пока функции не станут элементарными.

  3. Мы стремимся выделять общие функции, которые будут использоваться при реализации нескольких функций более высокого уровня.

  4. Как правило, существующие в программе функции соответствуют глаголам постановки задачи.

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

Основы объектно-ориентированного проектирования следующие:

  1. Мы задаем себе вопрос «с какими объектами работает наша программа?» Какие объекты реального мира она моделирует? Какими свойствами обладают эти объекты и какие операции могут с ними выполняться?

  2. После этого мы создаем классы (возможные типы объектов), методы и члены данных.

  3. Если реализация какого-то метода нетривиальна – обычно это говорит о необходимости промоделировать (более точно, чем раньше) тот или иной объект.

  4. Как правило, существующие в программе классы соответствуют существительным постановки задачи.

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

В объектно-ориентрованной программе широко используются три принципа:

    1. Инкапсуляция – объединение данных и методов в рамках класса и скрытие данных от пользователя (как правило, пользователь может вызвать лишь методы класса).

    2. Наследование – возможность создать класс-потомок, содержащий функциональность класса предка + дополнительную функциональность. Актуально для случая, когда один класс более конкретен, чем другой. Например, «самолет» имеет все свойства и операции класса «транспортное средство» + дополнительные операции (потому что самолет – транспортное средство).

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

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

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