Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛекцииЯзыки прогрИб.doc
Скачиваний:
27
Добавлен:
12.11.2019
Размер:
922.11 Кб
Скачать

Тема 14. Введение в технологию объектно-

ориентированного программирования

14.1. Основные понятия объектно-ориентированного

программирования

Основными методами (понятиями) объектно - ориентированного программирования являются средства инкапсуляции, наследования, полиморфизма, изучаемые на базе языка C++. В языке C++ термин «функция» эквивалентен таким терминам других языков программирования, как «подпрограмма», «процедура».

Инкапсуляция (encapsulation) - это объединение данных и функций для работы с этими данными в абстрактные типы данных - классы. Инкапсуляция даёт сокрытие элементов-данных (data members) и элементов-функций (members functions) в классе с управлением доступа к ним. Переменные типа класс называются объектами (object). Состояние объекта определяется элементами-данными соответствующего класса. Поведение объекта определяется элементами- функциями соответствующего класса.

Преимущества инкапсуляции проявляются в следующем:

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

  • Управление доступом к элементам класса. Атрибуты доступа private, protected, public объявляют элементы класса соответственно закрытыми, защищенными и открытыми для доступа.

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

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

Преимущества наследования проявляются в следующем:

  • исключение дублирования элементов-данных и элементов-функций за счет повторного использования элементов класса в производных классах;

  • упрощение программирования, т.к. наследуемые и собственные элементы класса находятся в одной иерархии классов и не разбросаны по всей программе;

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

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

Полиморфизм имеет следующие методы программирования:

  • общий полиморфизм (перегрузка операций, преобразование типов, перегрузка функций);

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

  • параметрический полиморфизм.

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

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

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

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

Преимущества полиморфизма проявляются в следующем:

  • облегчение программирования сложных систем за счет возможности называть похожие (различающиеся только типами своих параметров) действия одним именем;

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

  • механизм виртуальных функций – это возможность написания простых функций общего назначения для иерархии классов;

  • обеспечение компактности программ и расширяемости иерархии классов за счет использования виртуальных функций;

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

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

Объектно - ориентированное программирование особенно эффективно в нереализованных, с точки зрения программирования, прикладных областях, например, в таких, как интерактивная графика.

На основе объектно-ориентированного подхода были созданы среды программирования, например Delphi, C++ Builder, Visual C++ и др., реализующие визуальное программирование.

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