Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA For Excel Часть 02.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.08 Mб
Скачать

Яблоко1.Сплющить

Поспевшее яблоко или груша упадет на землю, событие произойдет одно и тоже, но для различных объектов и для объектов различного класса. Для того, что бы обнаружить событие объекта, в VBA существует специальная событийная процедура, которая выполняется во время соответствующего события. Мы знаем, что яблоки висящие на яблоне падают на то, что находится под ними. Данное действие, природа спрограммировало бы на языке VBA следующим образом:

Private Sub Яблоко1_падение

Упасть на то, что находится под яблоком

End Sub

Первая строчка в данном примере это заголовок событийной процедуры Private Sub это служебные слова, с которых обычно начинается заголовок событийной процедуры в языке VBA. За этими словами записано имя объекта - Яблоко1. За именем объекта, записано имя события - падение. Завершают событийную процедуру в языке VBA служебные слова -End Sub. Между заголовком и концом процедуры пишутся команды, которые необходимо выполнить после того, как указанное событие произойдет. В данном примере это команда: Упасть на то, что находится под яблоком.

Разберем следующие понятия VBA:

Родитель – класс(объект), порождающий другой класс(объект)

Потомок – класс(объект), происходящий от Родителя

С

Потомоки объекта Яблоня1

уществует некий глобальный класс, и единственный, одноименный ему экземпляр - объект-родитель Природа, который порождает объекты - фруктовые деревья. В свою очередь, фруктовое дерево является родителем определенного вида объекта. Грушевое Дерево порождает объект – Грушу, объект ЯблоняЯблоко и т.п. (рис 32).

Потомоки объекта Природа

Объект: Яблоко1

Класса Яблоки

(Потомок объекта Яблоня1)

Объект: Природа

КлассаПрирода

( Родитель всех

объектов )

Объект: Яблоня1

Класса – Яблони

(Яблоня1 - потомок объекта Природа)

Объект: Яблоко2

Класса Яблоки

Объект: ГрушевоеДерево1

Класса – ГрушевыеДеревья

Потомоки объекта ГрушевоеДерево1

Объект: Груша1

Класса Груши

(Потомок объекта ГрушевоеДерево1)

Объект: Груша1

Класса Груши

(Потомок объекта ГрушевоеДерево1)

Рис 32 Родители и потомки

Таким образом, Яблони это класс, который порождает класс Яблоки. А Грушевые Деревья это класс, порождающий класс Груши. По аналогии языка VBA, мы, при обращении к объекту Яблоко, должны указать всех родителей, которые, породили его:

Природа.Яблоня1.Яблоко1.Созреть

Природа.Яблоня2.Яблоко1.Цвет = красное

В данных примерах обращаются к методу Созреть объекта Яблоко1 расположенного на Яблоне1, и к свойству Цвет объекта Яблоко1, расположенного на Яблоне2. Поскольку оба объекта происходят от разных родителей, им можно давать одно и тоже имя, но при этом необходимо указывать имя родителей данных объектов.

Все яблони растут в природе, нет таких яблонь, которые могут существовать вне природы, поэтому имя родителя Природа в указанном выше нами примере можно опустить:

Яблоня1.Яблоко1.Созреть

Яблоня2.Яблоко1.Цвет = красное

А если вы находитесь на самой Яблоне, например на Яблоне1 указанной в нашем примере, то в этом случаи в языке VBA допускается опустить имена всех родителей, для объекта Яблоко:

Яблоко1.Созреть

VBA объект даже может быть потомком того объекта, класс которого, не порождает класс объекта потомка. Продолжая допускать, что фрукты являются объектами VBA, как и деревья, на которых фрукты растут, рассмотрим следующую ситуацию, при которой объект насильственно помещен на своего не настоящего родителя. Это может произойти в том случаи, когда, например, на Яблоню привили ветку ГрушевогоДерева, и тогда может возникнуть следующая ситуация:

Яблоня1.Груша1.Созреть

Не смотря на то, что объект Груша может быть потомком только объекта ГрушевогоДерева, в данной ситуации объект Груша1 является потомком объекта Яблоня1.

Рассмотрим еще ряд понятий языка VBA:

  • Наследственность – происходит тогда, когда класс потомок наследует от класса родителя методы, свойства, события.

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

Разберем понятие наследственность на следующем примере:

Яблоня1.Расти

Яблоня1.Яблоко2.Расти

В данном примере объект Яблоко2 унаследовало метод Расти от класса своего родителя Яблоня1, т.е. метод, позволяющий увеличиваться в размерах.

Теперь рассмотрим понятие полиморфизм:

Яблоня1.Развиться

Яблоня1.Яблоко2.Развиться

Объект Яблоня1 развивается следующим образом: у нее вырастают ветки, на ветках появляются листья, на определенном этапе развития на ветках появляются почки из которых развиваются объекты-потомки - Яблоки.

Объект Яблоко2 развивается не так, как его родитель Яблоня1, из почки появляется цветок, в цветке образуется завязь, которая постепенно превращается в плод, на объекте из класса Яблоки не может вырасти ветка, листок или почка. Таким образом, метод Развиться класса Яблони выполняет другую функцию, отличную от метода Развиться объектов из класса Яблоки.

Оглавление

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