-
Объектно-ориентированное программирование на примере языка vba
-
Основные понятия объектно-ориентированного программирования
-
В основе объектно-ориентированного программирования (ООП) лежат следующие базовые понятия: объект, свойство объекта, метод обработки, событие, класс объектов.
Определение 1. Объект - совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств), т.е. объект– это нечто целое, объединяющее некоторые данные, чем можно управлять с помощью кода VBA. Например, любое приложение Windows – Word, Excel, Explorer и другие являются объектом языка, который называется Application (Приложение); окно программы – объект Windows; документ HTML – объект Document; диапазон ячеек в Excel – объект Range и т.д.
Объект содержит инструкции (программный код), определяющие действия, которые может выполнять объект, и обрабатываемые данные. Один объект может выступать объединением вложенных в него по иерархии других объектов. В частном случае, в VBA объектом являются элементы пользовательского интерфейса, которые создаются на Форме пользователя (UserForm) или на рабочем листе, а также рабочая книга и её элементы.
Объекты могут объединяться в классы, т.е. объект является экземпляром класса.
Определение 2. Класс - совокупность объектов, характеризующихся общностью применяемых методов обработки или свойств.
Определение 3. Свойство - характеристика объекта, его параметр.
Все объекты наделены определенными свойствами, которые в совокупности выделяют объект из множества других объектов. Свойства объектов различных классов могут "пересекаться", т.е. возможны объекты обладающие одинаковыми свойствами:
Одним из свойств объекта являются метод его обработки.
Определение 4. Метод - программа действий над объектом или его свойствами.
Метод рассматривается как программный код, связанный с определенным объектом; осуществляет преобразование свойств, изменяет поведение объекта. Объект может обладать набором заранее определенных встроенных методов обработки, либо созданных пользователем или заимствованных в стандартных библиотеках, которые выполняются при наступлении заранее определенных событий, например, однократное нажатие левой кнопки мыши, вход в поле ввода, выход из поля ввода, нажатие определенной клавиши и т.п.
Проводя лингвистические аналогии, можно сказать, что объекты – это существительные, свойства – это прилагательные, а методы – глаголы в предложениях языка VBA.
Определение 5. Событие - изменение состояния объекта.
Внешние события генерируются пользователем (например, клавиатурный ввод или нажатие кнопки мыши, выбор пункта меню, запуск макроса); внутренние события генерируются системой.
Существуют различные объектно-ориентированные технологии и методики проектирования программных продуктов, которые должны обеспечить выполнение важнейших принципов объектного подхода:
-
Инкапсуляция (замыкание) свойств данных и программ в объекте. Инкапсуляция – это скрытие информации. При ООП возможен доступ к объекту только через его методы и свойства. Внутренняя структура объекта скрыта от пользователя, т.е. объекты – это самостоятельные сущности, отделенные от внешнего мира. Инкапсуляция позволяет изменять реализацию объектов любого класса без опасений, что это вызовет нежелательные побочные эффекты в программной системе. Это мощное средство обеспечивает многократное использование одного и того же программного кода, позволяя собирать программу из готовых модулей, как здание из отдельных кирпичиков, но различной архитектуры и функционального назначения.
-
Наследование – это возможность выделить свойства, методы и события одного объекта и приписать их другому объекту, иногда с их модификацией. Класс может иметь образованные от него подклассы. При построении подклассов осуществляется наследование данных и методов обработки объектов исходного класса. Механизм наследования позволяет переопределить или добавить новые данные и методы их обработки, создать иерархию классов. С точки зрения программиста, новый класс должен содержать только коды и данные для новых или изменяющихся методов.
-
Полиморфизм – способность объекта реагировать на запрос (вызов метода) сообразно своему типу, при этом одно и то же имя метода может использоваться для различных классов объектов. Например, команда Print, будет по-разному воспринята черно-белым или цветным принтером.