- •Основы офисного программирования и язык vba
- •Офисное программирование
- •Состав Office 2000
- •Инсталляция Office 2000
- •Содержимое диска "Resource Kit"
- •Документ Issues
- •Документ ork9
- •Папка Tools
- •Содержимое диска "Language Pack"
- •Об этой книге и ...
- •Моя благодарность
- •Vba и объекты. Обзор
- •Библиотека объектов Office 2000 - каркас приложений
- •Встраивание вместо наследования
- •Построение каркаса документа
- •Библиотека объектов Office 2000 и Object Browser
- •Объекты Application
- •Свойства-участники
- •Вторая группа терминальных свойств
- •Методы объектов Application
- •События объектов Application
- •Совместная работа приложений. Создание объектов Application. Раннее и позднее связывание
- •Коллекции в Office 2000
- •Коллекции объектов Office 2000
- •Коллекции Excel: Workbooks, Sheets
- •Коллекция Workbooks
- •Коллекция Sheets
- •Коллекции Word: Documents, Paragraphs и другие
- •Коллекция Documents
- •Коллекция Paragraphs
- •Коллекция Sections
- •Коллекции Characters, Words, Sentences
- •Коллекции и конструкция For Each … Next
- •Объекты Range
- •Что определяет объект Range?
- •Метод Range
- •Объекты Selection
- •Метод Select и свойство Selection
- •Активные объекты и метод Activate
- •Проектирование документов
- •Документ и его программный проект
- •Модули - обработчики событий
- •Стандартные модули
- •Модули классов
- •Модуль макросов
- •Структура модуля. Окно проекта и Окно кода
- •Окно проекта
- •Свойства проекта
- •Имя проекта
- •Защита проекта
- •Окно кода
- •Еще раз о "переиспользовании" модулей
- •Проект и область видимости
- •Система документов и ее проект
- •Организация системы документов
- •Как организуются ссылки между проектами
- •Обмен информацией между документами
- •Система документов One - Two - Three
- •Типы данных
- •Простые типы данных.
- •Объявление переменных и констант простых типов
- •Синтаксис объявления простых переменных
- •Объявления по умолчанию
- •Константы
- •Массивы
- •Динамические массивы
- •Записи и тип, определенный программистом
- •Что можно делать с записями?
- •Раздел объявлений
- •Раздел опций
- •Разделы констант, типов и переменных
- •Раздел Declare
- •Правила именования
- •Типы и классы Еще раз о понятии "класс"
- •Что нового в классах "Office 2000"
- •Создание класса "Личность"
- •Объекты и переменные
- •Объекты, класс которых определен пользователем.
- •Объекты "родного" приложения
- •ActiveX-объекты
- •Модуль класса Свойства
- •Сокрытие свойств
- •Конструкторы и деструкторы. Стандартные события
- •Стандартные события Initialize и Terminate
- •Два конструктора класса Rational
- •Процедуры - свойства
- •Как создаются процедуры- свойства
- •Синтаксис Let, Get и Set
- •Классы, как упаковка
- •Семейство классов и процедуры - свойства
- •Friend методы
- •События
- •Классы, объекты With Events и обработчики событий
- •Модуль класса с объектом WithEvents
- •Объект WithEvents
- •События собственных классов
- •Как создать класс с событиями
- •Как зажигаются события
- •Где и как следует создавать обработчики событий для экземпляров класса
- •Связывание объектов
- •Реальные объекты и инициирование событий
- •Семейство классов и реализация интерфейсов
- •Наследование
- •Виртуальные методы и полиморфизм
- •Абстрактные классы
- •Наследование и полиморфизм в Office 2000
- •Наследование интерфейсов
- •Полиморфизм семейства классов
- •Проект "Люди и Машины"
Модуль класса Свойства
Мы начали эту лекцию с примера создания класса "Личность" и привели полное его описание, что позволило целиком охватить всю картину. Теперь разберем детали построения класса. Шаг за шагом построим еще один простой класс Rational, определяющий рациональные числа. Начнем построение класса, как обычно, с комментария, содержательно описывающего назначение класса, его свойства и поведение. Вот комментарий, к нашему классу:
' Класс Rational
'Определяет новый тип данных - рациональные числа и основные
'операции над ними - сложение, вычитание, умножение и деление.
'Рациональное число задается парой целых чисел (m,n) и изображается,
'обычно, в виде дроби m/n. Число m называется числителем, а
'n - знаменателем. Для каждого рационального числа существует
'множество его представлений, например, - 1/2, 2/4, 3/6, 4/8, …
'задают одно и тоже рациональное число. Среди всех представлений
'можно выделить то, в котором числитель и знаменатель несократимы.
'Именно такие представители будут храниться в нашем классе.
'Операции над рациональными числами определяются естественным
'образом. Лучшим их описанием будут соответствующие им методы.
После комментария следует описание переменных, задающих свойства класса. Это могут быть терминальные свойства, заданные обычными переменными VBA, как, например, Имя, Фамилия в классе "Личность", так и свойства - участники. Напомним, что свойства - участники это объекты других классов. Без них не обойтись, если мы строим семейство классов. Помните, что в Office 2000 нет наследования классов в классическом понимании, - его заменяет встраивание. Так что при построении семейства классов, приходится иметь дело с "толстыми" объектами, свойства которых являются объектами, имеющими свойства, являющиеся объектами и так далее. Взгляните еще раз на рисунок 1.1 первой лекции и просмотрите ее раздел "встраивание против наследования", имеющиеся там примеры поясняют ситуацию.
В разбираемом нами случае речь не идет о семействе классов, поэтому класс Rational имеет только терминальные свойства. Пояснять, что это за свойства нет необходимости. Вот их определение:
'Свойства класса Rational
Private m As Integer 'числитель
Private n As Integer 'знаменатель
Сокрытие свойств
Возникает вопрос, почему свойства объявлены с описателем Private, а не Public Заметьте, таким же образом мы описывали свойства и в классе "Личность". Такова общепринятая практика объектно-ориентированного программирования. Если бы свойства имели атрибут Public, - были бы открытыми, тогда при работе с объектом, можно было бы иметь к ним прямой доступ, как при чтении, так и записи. Но такая свобода, как правило, недопустима. Вот возможные стратегии при работе со свойствами:
-
Чтение, запись (Read - Write).
-
Чтение, запись при первом обращении (Read, Write-once).
-
Только чтение (Read-only).
-
Только запись (Write-only).
-
Ни чтение, ни запись (Not Read -Not Write), - свойство закрыто.
Открытость свойств не позволяет реализовать только первую из стратегий. В нашем примере с классом Rational открытость свойств недопустима, поскольку числитель и знаменатель преобразуются скрытым от внешнего пользователя способом, позволяющим всегда задавать единственного представителя рационального числа.
При задании свойств делайте их закрытыми.
Для доступа к закрытым свойствам и реализации перечисленных выше стратегий работы с ними предложены специальные методы - свойства Property Let, Set и Get, примеры их мы видели в классе "Личность", а подробный разговор еще предстоит.