Объектно-ориентированное программирование (ООП) — это метод программирования, при использовании которого главными элементами программ являются объекты. В языках программирования понятие объекта реализовано как совокупность свойств (структур данных, характерных для объекта, иногда их называют также полями), методов их обработки (подпрограмм изменения их свойств) и событий, на которые данный объект может реагировать и, которые приводят, как правило, к изменению свойств объекта. Объектно-ориентированное программирование использует в качестве элементов конструкции классы и объекты, а не алгоритмы.
Например, объект "Студент" может иметь свойства "Фамилия", "Номер зачетной книжки", "Номер группы", и т.д., а методами объекта будут подпрограммы обработки его свойств – "перевести на следующий курс", "узнать оценку по указанному предмету" и т.п.
Объединение данных и свойственных им процедур обработки в одном объекте, называется инкапсуляцией и является одним из важнейших принципов ООП.
Согласно принципу инкапсуляции любой класс должен рассматриваться как "черный ящик": пользователь класса должен видеть и использовать только список декларируемых свойств и методов класса и не вникать в его внутреннюю реализацию. Все внутренние детали реализации объекта, не влияющие непосредственно на его поведение, скрыты от пользователя. Поэтому данные принято инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов.
Другим фундаментальным понятием является класс. Идея классов является основой ООП и отражает строение объектов реального мира, поскольку каждый предмет или процесс обладает набором характеристик или отличительных черт, иными словами, свойствами и поведением.
Класс - это шаблон, формальный образец, на основе которого может быть создан конкретный программный объект, он описывает свойства и методы, определяющие поведение объектов этого класса. Можно понимать класс и как описание множества объектов, связанных общностью структуры и поведением. Каждый конкретный объект, имеющий структуру данного класса, называется экземпляром класса. Экземпляры классов взаимодействуют между собой, посылая и получая сообщения. Сообщение – это запрос на выполнение действия, содержащий набор необходимых параметров. Механизм сообщений реализуется с помощью вызова соответствующих функций или методов классов.
Существует явное разделение внешнего и внутреннего описания класса (интерфейса и реализации). Интерфейс отражает внешнее поведение объекта, описывая абстракцию поведения всех объектов данного класса, но скрывает структуру и несущественные детали. Реализация составляет его внутреннее проявление и определяет особенности поведения.
Следующими важнейшими принципами ООП являются наследование и полиморфизм.
Наследование предусматривает создание новых классов на базе существующих и позволяет классу-потомку иметь (наследовать) все или некоторые свойства класса–родителя (своего базового класса).
Полиморфизм означает, что созданные программой объекты обладают информацией о том, какие методы они должны использовать в зависимости от своего места в иерархии объектов. В частности, если один класс объектов представляет собой прямоугольники, а второй – окружности, то рисование объектов этих двух выполняется по-разному, но в обоих случаях оно может быть реализовано специально написанными в каждом классе методами с названием Draw.
Существует также понятие абстрактного класса – это класс, экземпляры которого не создаются. Абстрактный класс не может иметь объектов, так как в нем не определены операции над объектами; объекты должны принадлежать конкретным подклассам абстрактного класса. Абстрактные классы используются для спецификации интерфейсов операций.
К концепциям ООП можно отнести и модульность – она означает, что объекты заключают в себе полное определение своих характеристик, никакие определения методов и свойств объекта не должны располагаться вне его, что делает возможным свободное копирование и внедрение одного объекта в другие.
В ООП программа представляет собой не последовательно исполняемый набор инструкций, а совокупность подпрограмм, реагирующих на внешние события, такие как нажатие клавиши, кнопки мыши и т.д. Таким образом, события – это уведомления, получаемые или передаваемые объектом другим объектам или приложениям.
Все современные языки программирования основаны на концепции ООП, позволяющий значительно увеличить сложность программ и сократить время их разработки за счет более эффективного повторного использования кода.
Наиболее современными и популярными объектно-ориентированными языками программирования являются С++ и Java. С середины 90-х гг. многие объектно–ориентированные языки реализуются как системы визуального проектирования, в которых интерфейсная часть программного продукта создается в диалоговом режиме, практически без написания программных операторов (см. п. 1.5). К объектно–ориентированным системам визуального проектирования относятся Visual Basic, Delphi, C++ Builder, Visual C++.
Язык VBA (Visual Basic for Application) – это объектно-ориентированный язык приложений Microsoft Office, в частности, внедренный в документы Excel, Word, PowerPoint и др. VBA соблюдает основной синтаксис языка и правила программирования языка Basic, позволяет создавать макросы для автоматизации выполнения некоторых операций в офисных программах, программировать графический интерфейс пользователя в документах, осуществлять интеграцию между различными программными продуктами.