Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие VBA.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
693.25 Кб
Скачать

4.2. Понятие программного объекта

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

Пример. Пусть требуется построить изображение «звездного неба» в двумерной проекции. Задача состоит в размещении и перемещении некоторого количества мерцающих разноцветных точек (обозначающих звезды) и кружков (обозначающих планеты) на плоскости экрана.

Пусть звезда – точка на экране с координатами (Х, У), которая имеет цвет, может быть видимой или невидимой и может перемещаться по «звездному небу». Планета – цветной круг с координатами центра (Х, У), который тоже может быть видимым или невидимым и должен перемещаться.

Все звезды (и планеты) в нашем примере однотипны и могут представляться одинаковыми свойствами и процедурами обработки. Поэтому для решения этой задачи необходимо создать объекты типа «Звезда» и «Планета».

4.3. Наследование, инкапсуляция и полиморфизм

Характерными особенностями, присущими ООП, являются: наследование, инкапсуляция и полиморфизм объектов.

Наследование. В рассмотренном ранее примере о звездном небе, очевидно, что для изображения любого объекта должно определяться его положение на экране (например, координатами Х и У относительно верхнего левого угла экрана). Поэтому можно описать объект «Позиция» с координатами Х и У и методом «Назначить координаты»:

Позиция (Х, У, Назначить ХУ)

В то же время объект «Звезда» может быть описан следующим образом:

Звезда (Х, У, Видимость, Цвет, НазначитьХУ, Назначить цвет, Зажечь, Погасить, Переместить)

Обратим внимание, что возможности объекта Позиция полностью входят в объект Звезда. Такое свойство называется наследованием и позволяет описать объект Звезда через объект Позиция:

Звезда (Позиция, Видимость, Цвет, Назначить цвет, Зажечь, Погасить, Переместить)

Таким образом, наследование позволяет повторно использовать уже созданную часть программного кода, в том числе и в других проектах, тем самым, исключая избыточность программного кода (ненужных повторов). Посредством наследования формируются связи между объектами через понятия «родители» и «потомки». В нашем примере о звездном небе объект Позиция можно считать «родителем» относительно объекта Звезда, а объект Звезда – «потомком» для объекта Позиция.

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

Взаимодействие с объектом происходит через его интерфейс. Обычно интерфейс определяет единственный способ входа в объект и выхода из него; детали реализации остаются инкапсулированными. При создании собственных объектов разработчик должен организовать для них собственные интерфейсы (по тому же принципу). В объектах интерфейсами (средствами доступа к этим объектам) являются их свойства, методы и события. Только они предоставляются каждым объектом в распоряжение других объектов. Благодаря этому предотвращается доступ других объектов к внутренним переменным состояния объекта, которые могут обрабатываться только предусмотренными для этого процедурами. Таким образом, инкапсуляция обеспечивает использование объекта, не зная как, он реализован внутри (его внутренняя реализация как бы скрыта «внутри капсулы).

Полиморфизм. В рассмотренном ранее примере о звездном небе уже были описаны объекты Позиция и Звезда. Если пытаться описать объект Планета, очевидно, что этот объект должен наследовать возможности объекта Звезда, но методы Назначить цвет, Зажечь, Погасить, Переместить, по результату являясь теми самыми, фактически не могут быть реализованы одинаковой последовательностью команд и для Звезды, и для Планеты (вспомним, что Звезда – точка на экране, а Планета – кружок). Эта ситуация разрешается следующим образом: методы объектов имеют одинаковое название (и, соответственно, одинаковый ожидаемый результат), а внутреннее описание методов будет различно для разных объектов. Такое свойство объектов называется полиморфизмом, а объект Планета может иметь следующее описание:

Планета (Звезда, Радиус, Назначить цвет, Зажечь, Погасить, Переместить)

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

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